Keymaps as a clean architecture [WIP]
This commit is contained in:
parent
a88324acd9
commit
efc48dc742
15 changed files with 620 additions and 88 deletions
|
@ -1,15 +1,20 @@
|
|||
import TopContentComponent from './components/top-content';
|
||||
import FrameContentComponent from './components/frame-content';
|
||||
// import TopContentComponent from './components/top-content';
|
||||
// import FrameContentComponent from './components/frame-content';
|
||||
import consoleFrameStyle from './site-style';
|
||||
import { newStore } from './store';
|
||||
// import { newStore } from './store';
|
||||
import MessageListener from './MessageListener';
|
||||
import FindController from './controllers/FindController';
|
||||
import * as messages from '../shared/messages';
|
||||
import InputDriver from './InputDriver';
|
||||
import KeymapController from './controllers/KeymapController';
|
||||
import AddonEnabledUseCase from './usecases/AddonEnabledUseCase';
|
||||
import SettingUseCase from './usecases/SettingUseCase';
|
||||
import * as blacklists from '../shared/blacklists';
|
||||
|
||||
const store = newStore();
|
||||
// const store = newStore();
|
||||
|
||||
if (window.self === window.top) {
|
||||
new TopContentComponent(window, store); // eslint-disable-line no-new
|
||||
// new TopContentComponent(window, store); // eslint-disable-line no-new
|
||||
|
||||
let findController = new FindController();
|
||||
new MessageListener().onWebMessage((message: messages.Message) => {
|
||||
|
@ -24,9 +29,38 @@ if (window.self === window.top) {
|
|||
return undefined;
|
||||
});
|
||||
} else {
|
||||
new FrameContentComponent(window, store); // eslint-disable-line no-new
|
||||
// new FrameContentComponent(window, store); // eslint-disable-line no-new
|
||||
}
|
||||
|
||||
let keymapController = new KeymapController();
|
||||
let inputDriver = new InputDriver(document.body);
|
||||
// inputDriver.onKey(key => followSlaveController.pressKey(key));
|
||||
// inputDriver.onKey(key => markController.pressKey(key));
|
||||
inputDriver.onKey(key => keymapController.press(key));
|
||||
|
||||
let style = window.document.createElement('style');
|
||||
style.textContent = consoleFrameStyle;
|
||||
window.document.head.appendChild(style);
|
||||
|
||||
// TODO move the following to a class
|
||||
const reloadSettings = async() => {
|
||||
let addonEnabledUseCase = new AddonEnabledUseCase();
|
||||
let settingUseCase = new SettingUseCase();
|
||||
|
||||
try {
|
||||
let current = await settingUseCase.reload();
|
||||
let disabled = blacklists.includes(
|
||||
current.blacklist, window.location.href,
|
||||
);
|
||||
if (disabled) {
|
||||
addonEnabledUseCase.disable();
|
||||
} else {
|
||||
addonEnabledUseCase.enable();
|
||||
}
|
||||
} catch (e) {
|
||||
// Sometime sendMessage fails when background script is not ready.
|
||||
console.warn(e);
|
||||
setTimeout(() => reloadSettings(), 500);
|
||||
}
|
||||
};
|
||||
reloadSettings();
|
||||
|
|
Reference in a new issue