Adds keyboard shortcuts for calling
This commit is contained in:
parent
1b052ad16b
commit
fa7b7fcd08
6 changed files with 311 additions and 90 deletions
|
@ -15,6 +15,106 @@ function isCmdOrCtrl(ev: KeyboardEvent): boolean {
|
|||
return commandKey || controlKey;
|
||||
}
|
||||
|
||||
function isCtrlOrAlt(ev: KeyboardEvent): boolean {
|
||||
const { altKey, ctrlKey } = ev;
|
||||
const controlKey = get(window, 'platform') === 'darwin' && ctrlKey;
|
||||
const theAltKey = get(window, 'platform') !== 'darwin' && altKey;
|
||||
return controlKey || theAltKey;
|
||||
}
|
||||
|
||||
export function useActiveCallShortcuts(
|
||||
hangUp: () => unknown
|
||||
): KeyboardShortcutHandlerType {
|
||||
return useCallback(
|
||||
ev => {
|
||||
const { shiftKey } = ev;
|
||||
const key = KeyboardLayout.lookup(ev);
|
||||
|
||||
if (isCtrlOrAlt(ev) && shiftKey && (key === 'e' || key === 'E')) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
|
||||
hangUp();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
[hangUp]
|
||||
);
|
||||
}
|
||||
|
||||
export function useIncomingCallShortcuts(
|
||||
acceptAudioCall: () => unknown,
|
||||
acceptVideoCall: () => unknown,
|
||||
declineCall: () => unknown
|
||||
): KeyboardShortcutHandlerType {
|
||||
return useCallback(
|
||||
ev => {
|
||||
const { shiftKey } = ev;
|
||||
const key = KeyboardLayout.lookup(ev);
|
||||
|
||||
if (isCtrlOrAlt(ev) && shiftKey && (key === 'v' || key === 'V')) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
|
||||
acceptVideoCall();
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isCtrlOrAlt(ev) && shiftKey && (key === 'a' || key === 'A')) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
|
||||
acceptAudioCall();
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isCtrlOrAlt(ev) && shiftKey && (key === 'd' || key === 'D')) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
|
||||
declineCall();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
[acceptAudioCall, acceptVideoCall, declineCall]
|
||||
);
|
||||
}
|
||||
|
||||
export function useStartCallShortcuts(
|
||||
startAudioCall: () => unknown,
|
||||
startVideoCall: () => unknown
|
||||
): KeyboardShortcutHandlerType {
|
||||
return useCallback(
|
||||
ev => {
|
||||
const { shiftKey } = ev;
|
||||
const key = KeyboardLayout.lookup(ev);
|
||||
|
||||
if (isCtrlOrAlt(ev) && shiftKey && (key === 'c' || key === 'C')) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
|
||||
startAudioCall();
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isCtrlOrAlt(ev) && shiftKey && (key === 'y' || key === 'Y')) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
|
||||
startVideoCall();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
[startAudioCall, startVideoCall]
|
||||
);
|
||||
}
|
||||
|
||||
export function useStartRecordingShortcut(
|
||||
startAudioRecording: () => unknown
|
||||
): KeyboardShortcutHandlerType {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue