bitwarden-estensione-browser/src/content/shortcuts.ts

50 lines
1.5 KiB
TypeScript
Raw Normal View History

2018-05-09 20:13:20 +02:00
import * as Mousetrap from 'mousetrap';
document.addEventListener('DOMContentLoaded', (event) => {
const isSafari = (typeof safari !== 'undefined') && navigator.userAgent.indexOf(' Safari/') !== -1 &&
navigator.userAgent.indexOf('Chrome') === -1;
const isEdge = !isSafari && navigator.userAgent.indexOf(' Edge/') !== -1;
const isVivaldi = !isSafari && navigator.userAgent.indexOf(' Vivaldi/') !== -1;
if (!isSafari && !isEdge && !isVivaldi) {
return;
}
if (isSafari && (window as any).__bitwardenFrameId == null) {
(window as any).__bitwardenFrameId = Math.floor(Math.random() * Math.floor(99999999));
}
2018-05-09 20:13:20 +02:00
Mousetrap.prototype.stopCallback = () => {
return false;
};
2019-11-22 14:08:56 +01:00
const autofillCommand = isSafari || isEdge ? ['mod+\\', 'mod+9'] : ['mod+shift+l'];
2018-05-09 20:13:20 +02:00
Mousetrap.bind(autofillCommand, () => {
sendMessage('autofill_login');
});
if (isSafari) {
Mousetrap.bind('mod+shift+y', () => {
sendMessage('open_popup');
});
2018-09-27 14:27:33 +02:00
} else if (!isEdge) {
2018-05-09 20:13:20 +02:00
Mousetrap.bind('mod+shift+9', () => {
sendMessage('generate_password');
});
}
function sendMessage(shortcut: string) {
const msg: any = {
2018-05-09 20:13:20 +02:00
command: 'keyboardShortcutTriggered',
shortcut: shortcut,
};
if (isSafari) {
msg.bitwardenFrameId = (window as any).__bitwardenFrameId;
safari.extension.dispatchMessage('bitwarden', msg);
2018-05-09 20:13:20 +02:00
} else {
chrome.runtime.sendMessage(msg);
}
}
});