2021-12-22 15:48:32 +01:00
|
|
|
import { openSearch, toggleRoomSettings } from '../action/navigation';
|
2021-12-11 06:20:34 +01:00
|
|
|
import navigation from '../state/navigation';
|
|
|
|
|
|
|
|
function listenKeyboard(event) {
|
|
|
|
// Ctrl +
|
|
|
|
if (event.ctrlKey) {
|
|
|
|
// k - for search Modal
|
|
|
|
if (event.keyCode === 75) {
|
|
|
|
event.preventDefault();
|
2021-12-13 10:01:43 +01:00
|
|
|
if (navigation.isRawModalVisible) return;
|
2021-12-11 06:20:34 +01:00
|
|
|
openSearch();
|
|
|
|
}
|
|
|
|
}
|
2021-12-22 15:48:32 +01:00
|
|
|
|
2021-12-13 10:01:43 +01:00
|
|
|
if (!event.ctrlKey && !event.altKey) {
|
2021-12-22 15:48:32 +01:00
|
|
|
if (event.keyCode === 38 && navigation.isRoomSettings) {
|
|
|
|
// close room settings
|
|
|
|
toggleRoomSettings();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (event.keyCode === 40 && !navigation.isRoomSettings) {
|
|
|
|
// open room settings
|
|
|
|
toggleRoomSettings();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2021-12-13 10:01:43 +01:00
|
|
|
if (navigation.isRawModalVisible) return;
|
2021-12-13 16:35:37 +01:00
|
|
|
if (['text', 'textarea'].includes(document.activeElement.type)) {
|
2021-12-13 10:01:43 +01:00
|
|
|
return;
|
|
|
|
}
|
2021-12-22 15:48:32 +01:00
|
|
|
if ((event.keyCode !== 8 && event.keyCode < 48)
|
2021-12-13 10:01:43 +01:00
|
|
|
|| (event.keyCode >= 91 && event.keyCode <= 93)
|
|
|
|
|| (event.keyCode >= 112 && event.keyCode <= 183)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
const msgTextarea = document.getElementById('message-textarea');
|
|
|
|
msgTextarea?.focus();
|
|
|
|
}
|
2021-12-11 06:20:34 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function initHotkeys() {
|
|
|
|
document.body.addEventListener('keydown', listenKeyboard);
|
|
|
|
}
|
|
|
|
|
|
|
|
function removeHotkeys() {
|
|
|
|
document.body.removeEventListener('keydown', listenKeyboard);
|
|
|
|
}
|
|
|
|
|
|
|
|
export { initHotkeys, removeHotkeys };
|