From 44bfb77635df521bd94c8eed0b4308834261826f Mon Sep 17 00:00:00 2001 From: Josh Perez <60019601+josh-signal@users.noreply.github.com> Date: Mon, 24 Jan 2022 15:32:09 -0500 Subject: [PATCH] Hang up call when screen is locked --- preload.js | 4 ++++ ts/background.ts | 4 ++++ ts/main/powerChannel.ts | 3 +++ ts/state/ducks/calling.ts | 26 ++++++++++++++++++++++++++ 4 files changed, 37 insertions(+) diff --git a/preload.js b/preload.js index 69f42db7a..58e2af990 100644 --- a/preload.js +++ b/preload.js @@ -226,6 +226,10 @@ try { Whisper.events.trigger('powerMonitorResume'); }); + ipc.on('power-channel:lock-screen', () => { + Whisper.events.trigger('powerMonitorLockScreen'); + }); + window.sendChallengeRequest = request => ipc.send('challenge:request', request); diff --git a/ts/background.ts b/ts/background.ts index 2d8a31638..c7c48cdff 100644 --- a/ts/background.ts +++ b/ts/background.ts @@ -1579,6 +1579,10 @@ export async function startApp(): Promise { server?.checkSockets(); }); + window.Whisper.events.on('powerMonitorLockScreen', () => { + window.reduxActions.calling.hangUpActiveCall(); + }); + const reconnectToWebSocketQueue = new LatestQueue(); const enqueueReconnectToWebSocket = () => { diff --git a/ts/main/powerChannel.ts b/ts/main/powerChannel.ts index 773190755..646c30edf 100644 --- a/ts/main/powerChannel.ts +++ b/ts/main/powerChannel.ts @@ -22,5 +22,8 @@ export class PowerChannel { powerMonitor.on('resume', () => { send('power-channel:resume'); }); + powerMonitor.on('lock-screen', () => { + send('power-channel:lock-screen'); + }); } } diff --git a/ts/state/ducks/calling.ts b/ts/state/ducks/calling.ts index ce3b64097..5077cdec0 100644 --- a/ts/state/ducks/calling.ts +++ b/ts/state/ducks/calling.ts @@ -751,6 +751,31 @@ function hangUp(payload: HangUpType): HangUpActionType { }; } +function hangUpActiveCall(): ThunkAction< + void, + RootStateType, + unknown, + HangUpActionType +> { + return (dispatch, getState) => { + const state = getState(); + + const activeCall = getActiveCall(state.calling); + if (!activeCall) { + return; + } + + const { conversationId } = activeCall; + + dispatch({ + type: HANG_UP, + payload: { + conversationId, + }, + }); + }; +} + function keyChanged( payload: KeyChangedType ): ThunkAction { @@ -1219,6 +1244,7 @@ export const actions = { getPresentingSources, groupCallStateChange, hangUp, + hangUpActiveCall, keyChangeOk, keyChanged, openSystemPreferencesAction,