diff options
Diffstat (limited to 'src/content/index.ts')
-rw-r--r-- | src/content/index.ts | 116 |
1 files changed, 5 insertions, 111 deletions
diff --git a/src/content/index.ts b/src/content/index.ts index 06bb34f..660ebf5 100644 --- a/src/content/index.ts +++ b/src/content/index.ts @@ -1,122 +1,16 @@ -import * as consoleFrames from './console-frames'; +import { ConsoleFramePresenterImpl } from './presenters/ConsoleFramePresenter'; import consoleFrameStyle from './site-style'; -import MessageListener from './MessageListener'; -import FindController from './controllers/FindController'; -import MarkController from './controllers/MarkController'; -import FollowMasterController from './controllers/FollowMasterController'; -import FollowSlaveController from './controllers/FollowSlaveController'; -import FollowKeyController from './controllers/FollowKeyController'; -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'; -import MarkKeyController from './controllers/MarkKeyController'; -import AddonEnabledController from './controllers/AddonEnabledController'; +import * as routes from './routes'; -let listener = new MessageListener(); if (window.self === window.top) { - let findController = new FindController(); + routes.routeMasterComponents(); - let followMasterController = new FollowMasterController(); - listener.onWebMessage((message: messages.Message, sender: Window) => { - 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); - case messages.CONSOLE_UNFOCUS: - window.focus(); - consoleFrames.blur(window.document); - break; - case messages.FOLLOW_START: - return followMasterController.followStart(message); - case messages.FOLLOW_RESPONSE_COUNT_TARGETS: - return followMasterController.responseCountTargets(message, sender); - case messages.FOLLOW_KEY_PRESS: - return followMasterController.keyPress(message); - } - return undefined; - }); - - let markController = new MarkController(); - let addonEnabledController = new AddonEnabledController(); - - new MessageListener().onBackgroundMessage((message: messages.Message) => { - switch (message.type) { - case messages.ADDON_ENABLED_QUERY: - return addonEnabledController.getAddonEnabled(message); - case messages.TAB_SCROLL_TO: - return markController.scrollTo(message); - } - return undefined; - }); - - consoleFrames.initialize(window.document); + new ConsoleFramePresenterImpl().initialize(); } -let followSlaveController = new FollowSlaveController(); -listener.onWebMessage((message: messages.Message) => { - switch (message.type) { - case messages.FOLLOW_REQUEST_COUNT_TARGETS: - return followSlaveController.countTargets(message); - case messages.FOLLOW_CREATE_HINTS: - return followSlaveController.createHints(message); - case messages.FOLLOW_SHOW_HINTS: - return followSlaveController.showHints(message); - case messages.FOLLOW_ACTIVATE: - return followSlaveController.activate(message); - case messages.FOLLOW_REMOVE_HINTS: - return followSlaveController.clear(message); - } - return undefined; -}); +routes.routeComponents(); -let keymapController = new KeymapController(); -let markKeyController = new MarkKeyController(); -let followKeyController = new FollowKeyController(); -let inputDriver = new InputDriver(document.body); -inputDriver.onKey(key => followKeyController.press(key)); -inputDriver.onKey(key => markKeyController.press(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(); - -new MessageListener().onBackgroundMessage((message: messages.Message): any => { - let addonEnabledUseCase = new AddonEnabledUseCase(); - - switch (message.type) { - case messages.SETTINGS_CHANGED: - return reloadSettings(); - case messages.ADDON_TOGGLE_ENABLED: - return addonEnabledUseCase.toggle(); - } -}); |