|
|
|
// import TopContentComponent from './components/top-content';
|
|
|
|
// import FrameContentComponent from './components/frame-content';
|
|
|
|
import consoleFrameStyle from './site-style';
|
|
|
|
// 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();
|
|
|
|
|
|
|
|
if (window.self === window.top) {
|
|
|
|
// new TopContentComponent(window, store); // eslint-disable-line no-new
|
|
|
|
|
|
|
|
let findController = new FindController();
|
|
|
|
new MessageListener().onWebMessage((message: messages.Message) => {
|
|
|
|
switch (message.type) {
|
|
|
|
case messages.CONSOLE_ENTER_FIND:
|
|
|
|
return findController.start(message);
|
|
|
|
case messages.FIND_NEXT:
|
|
|
|
return findController.next(message);
|
|
|
|
case messages.FIND_PREV:
|
|
|
|
return findController.prev(message);
|
|
|
|
}
|
|
|
|
return undefined;
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
// 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();
|