diff --git a/js/views/conversation_view.js b/js/views/conversation_view.js index 6a798cf78..2e4d13f5a 100644 --- a/js/views/conversation_view.js +++ b/js/views/conversation_view.js @@ -194,6 +194,9 @@ this.removeLinkPreview(); } }); + Whisper.events.on('mediaPermissionsChanged', () => + this.toggleMicrophone() + ); const getHeaderProps = () => { const expireTimer = this.model.get('expireTimer'); @@ -667,8 +670,10 @@ } }, - toggleMicrophone() { + async toggleMicrophone() { + const allowMicrophone = await window.getMediaPermissions(); if ( + !allowMicrophone || this.$('.send-message').val().length > 0 || this.fileInput.hasFiles() ) { diff --git a/main.js b/main.js index f5e608004..0dd1780c0 100644 --- a/main.js +++ b/main.js @@ -1140,6 +1140,9 @@ ipc.on('set-media-permissions', (event, value) => { installPermissionsHandler({ session, userConfig }); event.sender.send('set-success-media-permissions', null); + if (mainWindow && mainWindow.webContents) { + mainWindow.webContents.send('mediaPermissionsChanged'); + } }); ipc.on('on-unblock-number', (event, number) => { diff --git a/preload.js b/preload.js index 90403b466..16ae02e22 100644 --- a/preload.js +++ b/preload.js @@ -124,6 +124,10 @@ window.restart = () => { // collection on the main window from the settings window. window.onUnblockNumber = number => ipc.send('on-unblock-number', number); +ipc.on('mediaPermissionsChanged', () => { + Whisper.events.trigger('mediaPermissionsChanged'); +}); + ipc.on('on-unblock-number', (event, number) => { // Unblock the number if (window.BlockedNumberController) {