diff options
Diffstat (limited to 'src/content/components/top-content/index.ts')
-rw-r--r-- | src/content/components/top-content/index.ts | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/content/components/top-content/index.ts b/src/content/components/top-content/index.ts new file mode 100644 index 0000000..ac95ea9 --- /dev/null +++ b/src/content/components/top-content/index.ts @@ -0,0 +1,51 @@ +import CommonComponent from '../common'; +import FollowController from './follow-controller'; +import FindComponent from './find'; +import * as consoleFrames from '../../console-frames'; +import * as messages from '../../../shared/messages'; +import MessageListener from '../../MessageListener'; +import * as scrolls from '../../scrolls'; + +export default class TopContent { + private win: Window; + + private store: any; + + constructor(win: Window, store: any) { + this.win = win; + this.store = store; + + new CommonComponent(win, store); // eslint-disable-line no-new + new FollowController(win, store); // eslint-disable-line no-new + new FindComponent(store); // eslint-disable-line no-new + + // TODO make component + consoleFrames.initialize(this.win.document); + + new MessageListener().onWebMessage(this.onWebMessage.bind(this)); + new MessageListener().onBackgroundMessage( + this.onBackgroundMessage.bind(this)); + } + + onWebMessage(message: messages.Message) { + switch (message.type) { + case messages.CONSOLE_UNFOCUS: + this.win.focus(); + consoleFrames.blur(window.document); + } + } + + onBackgroundMessage(message: messages.Message) { + let addonState = this.store.getState().addon; + + switch (message.type) { + case messages.ADDON_ENABLED_QUERY: + return Promise.resolve({ + type: messages.ADDON_ENABLED_RESPONSE, + enabled: addonState.enabled, + }); + case messages.TAB_SCROLL_TO: + return scrolls.scrollTo(message.x, message.y, false); + } + } +} |