From 347038cf82d8ed03abc2b6c800c1267155669ca9 Mon Sep 17 00:00:00 2001 From: Brice-W Date: Fri, 30 Jul 2021 16:31:35 +1000 Subject: [PATCH] added microphone access check --- build/entitlements.mac.plist | 4 ++++ js/background.js | 6 +++++- main.js | 12 ++++++++++++ package.json | 6 +++++- preload.js | 2 ++ ts/components/session/settings/SessionSettings.tsx | 12 +++++++----- 6 files changed, 35 insertions(+), 7 deletions(-) diff --git a/build/entitlements.mac.plist b/build/entitlements.mac.plist index c64d264b2..dba866fb6 100644 --- a/build/entitlements.mac.plist +++ b/build/entitlements.mac.plist @@ -7,5 +7,9 @@ com.apple.security.cs.disable-library-validation + com.apple.security.device.audio-input + + com.apple.security.device.camera + diff --git a/js/background.js b/js/background.js index 33add739a..7590cc360 100644 --- a/js/background.js +++ b/js/background.js @@ -5,6 +5,7 @@ storage, Whisper, BlockedNumberController, + Signal */ // eslint-disable-next-line func-names @@ -336,8 +337,11 @@ window.libsession.Utils.ToastUtils.pushSpellCheckDirty(); }; - window.toggleMediaPermissions = () => { + window.toggleMediaPermissions = async () => { const value = window.getMediaPermissions(); + if (value === false && Signal.OS.isMacOS()) { + await window.askForMicrophoneAccess(); + } window.setMediaPermissions(!value); }; diff --git a/main.js b/main.js index c4b84fd7c..8fc09e8d4 100644 --- a/main.js +++ b/main.js @@ -25,6 +25,7 @@ const { protocol: electronProtocol, session, shell, + systemPreferences, } = electron; // FIXME Hardcoding appId to prevent build failrues on release. @@ -983,3 +984,14 @@ function getThemeFromMainWindow() { mainWindow.webContents.send('get-theme-setting'); }); } + +function askForMicrophoneAccess() { + const status = systemPreferences.getMediaAccessStatus('microphone'); + if (status !== 'granted') { + systemPreferences.askForMediaAccess('microphone'); + } +} + +ipc.on('microphone-access', () => { + askForMicrophoneAccess(); +}); diff --git a/package.json b/package.json index dcb18ec7c..bc4a7b07e 100644 --- a/package.json +++ b/package.json @@ -236,7 +236,11 @@ "hardenedRuntime": true, "gatekeeperAssess": false, "entitlements": "build/entitlements.mac.plist", - "entitlementsInherit": "build/entitlements.mac.plist" + "entitlementsInherit": "build/entitlements.mac.plist", + "extendInfo": { + "NSCameraUsageDescription": "Session requires camera access to record video.", + "NSMicrophoneUsageDescription": "Session requires microphone access to record audio." + } }, "dmg": { "sign": false diff --git a/preload.js b/preload.js index da0a7108d..d185c023d 100644 --- a/preload.js +++ b/preload.js @@ -219,6 +219,8 @@ window.setSettingValue = (settingID, value) => { window.getMediaPermissions = () => ipc.sendSync('get-media-permissions'); window.setMediaPermissions = value => ipc.send('set-media-permissions', !!value); +window.askForMicrophoneAccess = () => ipc.send('microphone-access'); + // Auto update setting window.getAutoUpdateEnabled = () => ipc.sendSync('get-auto-update-setting'); window.setAutoUpdateEnabled = value => ipc.send('set-auto-update-setting', !!value); diff --git a/ts/components/session/settings/SessionSettings.tsx b/ts/components/session/settings/SessionSettings.tsx index 8b5d07e29..029a1d294 100644 --- a/ts/components/session/settings/SessionSettings.tsx +++ b/ts/components/session/settings/SessionSettings.tsx @@ -253,11 +253,13 @@ class SettingsViewInner extends React.Component { return (
v{window.versionInfo.version} - + + + {window.versionInfo.commitHash}
);