diff --git a/app/electron/main.js b/app/electron/main.js index c00c83ac8..5cbec9f24 100644 --- a/app/electron/main.js +++ b/app/electron/main.js @@ -15,7 +15,7 @@ // along with this program. If not, see . const { - net, app, BrowserWindow, shell, Menu, screen, ipcMain, globalShortcut, Tray, dialog + net, app, BrowserWindow, shell, Menu, screen, ipcMain, globalShortcut, Tray, dialog, systemPreferences } = require("electron"); const path = require("path"); const fs = require("fs"); @@ -674,6 +674,12 @@ app.whenReady().then(() => { if (data.cmd === "isFullScreen") { return getWindowByContentId(event.sender.id).isFullScreen(); } + if (data.cmd === "getMicrophone") { + return systemPreferences.getMediaAccessStatus("microphone"); + } + if (data.cmd === "askMicrophone") { + return systemPreferences.askForMediaAccess("microphone"); + } }); ipcMain.on("siyuan-cmd", (event, cmd) => { switch (cmd) { diff --git a/app/src/protyle/breadcrumb/index.ts b/app/src/protyle/breadcrumb/index.ts index 1fd9e91c5..0530a8bce 100644 --- a/app/src/protyle/breadcrumb/index.ts +++ b/app/src/protyle/breadcrumb/index.ts @@ -8,7 +8,7 @@ import {setEditMode} from "../util/setEditMode"; import {RecordMedia} from "../util/RecordMedia"; import {hideMessage, showMessage} from "../../dialog/message"; import {uploadFiles} from "../upload"; -import {hasClosestBlock, hasClosestByAttribute, hasClosestByClassName} from "../util/hasClosest"; +import {hasClosestBlock, hasClosestByAttribute} from "../util/hasClosest"; import {needSubscribe} from "../../util/needSubscribe"; import {isMobile} from "../../util/functions"; import {zoomOut} from "../../menus/protyle"; @@ -18,7 +18,7 @@ import {openFileById} from "../../editor/util"; import {setPanelFocus} from "../../layout/util"; /// #endif /// #if !BROWSER -import {systemPreferences} from "@electron/remote"; +import {ipcRenderer} from "electron"; /// #endif import {onGet} from "../util/onGet"; import {hideElements} from "../ui/hideElements"; @@ -227,7 +227,7 @@ export class Breadcrumb { } } - public showMenu(protyle: IProtyle, position:IPosition) { + public showMenu(protyle: IProtyle, position: IPosition) { if (!window.siyuan.menus.menu.element.classList.contains("fn__none") && window.siyuan.menus.menu.element.getAttribute("data-name") === "breadcrumbMore") { window.siyuan.menus.menu.remove(); @@ -271,12 +271,12 @@ export class Breadcrumb { click: async () => { /// #if !BROWSER if (window.siyuan.config.system.os === "darwin") { - const status = systemPreferences.getMediaAccessStatus("microphone"); + const status = await ipcRenderer.invoke(Constants.SIYUAN_GET, {cmd: "getMicrophone"}) if (["denied", "restricted", "unknown"].includes(status)) { showMessage(window.siyuan.languages.microphoneDenied); return; } else if (status === "not-determined") { - const isAccess = await systemPreferences.askForMediaAccess("microphone"); + const isAccess = await ipcRenderer.invoke(Constants.SIYUAN_GET, {cmd: "askMicrophone"}) if (!isAccess) { showMessage(window.siyuan.languages.microphoneNotAccess); return;