diff options
Diffstat (limited to 'src/content/controllers')
-rw-r--r-- | src/content/controllers/AddonEnabledController.ts | 19 | ||||
-rw-r--r-- | src/content/controllers/KeymapController.ts | 15 | ||||
-rw-r--r-- | src/content/controllers/MarkController.ts | 16 | ||||
-rw-r--r-- | src/content/controllers/MarkKeyController.ts | 31 |
4 files changed, 77 insertions, 4 deletions
diff --git a/src/content/controllers/AddonEnabledController.ts b/src/content/controllers/AddonEnabledController.ts new file mode 100644 index 0000000..4e19b6a --- /dev/null +++ b/src/content/controllers/AddonEnabledController.ts @@ -0,0 +1,19 @@ +import * as messages from '../../shared/messages'; +import AddonEnabledUseCase from '../usecases/AddonEnabledUseCase'; + +export default class AddonEnabledController { + private addonEnabledUseCase: AddonEnabledUseCase; + + constructor({ + addonEnabledUseCase = new AddonEnabledUseCase(), + } = {}) { + this.addonEnabledUseCase = addonEnabledUseCase; + } + + getAddonEnabled( + _message: messages.AddonEnabledQueryMessage, + ): Promise<boolean> { + let enabled = this.addonEnabledUseCase.getEnabled(); + return Promise.resolve(enabled); + } +} diff --git a/src/content/controllers/KeymapController.ts b/src/content/controllers/KeymapController.ts index 09e5b0c..b7a7bc2 100644 --- a/src/content/controllers/KeymapController.ts +++ b/src/content/controllers/KeymapController.ts @@ -7,6 +7,7 @@ import NavigateUseCase from '../usecases/NavigateUseCase'; import FocusUseCase from '../usecases/FocusUseCase'; import ClipboardUseCase from '../usecases/ClipboardUseCase'; import BackgroundClient from '../client/BackgroundClient'; +import MarkKeyyUseCase from '../usecases/MarkKeyUseCase'; import { Key } from '../../shared/utils/keys'; export default class KeymapController { @@ -26,6 +27,8 @@ export default class KeymapController { private backgroundClient: BackgroundClient; + private markKeyUseCase: MarkKeyyUseCase; + constructor({ keymapUseCase = new KeymapUseCase(), addonEnabledUseCase = new AddonEnabledUseCase(), @@ -35,6 +38,7 @@ export default class KeymapController { focusUseCase = new FocusUseCase(), clipbaordUseCase = new ClipboardUseCase(), backgroundClient = new BackgroundClient(), + markKeyUseCase = new MarkKeyyUseCase(), } = {}) { this.keymapUseCase = keymapUseCase; this.addonEnabledUseCase = addonEnabledUseCase; @@ -44,6 +48,7 @@ export default class KeymapController { this.focusUseCase = focusUseCase; this.clipbaordUseCase = clipbaordUseCase; this.backgroundClient = backgroundClient; + this.markKeyUseCase = markKeyUseCase; } // eslint-disable-next-line complexity, max-lines-per-function @@ -98,10 +103,12 @@ export default class KeymapController { // background: operation.background, // }), '*'); // break; - // case operations.MARK_SET_PREFIX: - // return markActions.startSet(); - // case operations.MARK_JUMP_PREFIX: - // return markActions.startJump(); + case operations.MARK_SET_PREFIX: + this.markKeyUseCase.enableSetMode(); + break; + case operations.MARK_JUMP_PREFIX: + this.markKeyUseCase.enableJumpMode(); + break; case operations.NAVIGATE_HISTORY_PREV: this.navigateUseCase.openHistoryPrev(); break; diff --git a/src/content/controllers/MarkController.ts b/src/content/controllers/MarkController.ts new file mode 100644 index 0000000..365794c --- /dev/null +++ b/src/content/controllers/MarkController.ts @@ -0,0 +1,16 @@ +import * as messages from '../../shared/messages'; +import MarkUseCase from '../usecases/MarkUseCase'; + +export default class MarkController { + private markUseCase: MarkUseCase; + + constructor({ + markUseCase = new MarkUseCase(), + } = {}) { + this.markUseCase = markUseCase; + } + + scrollTo(message: messages.TabScrollToMessage) { + this.markUseCase.scroll(message.x, message.y); + } +} diff --git a/src/content/controllers/MarkKeyController.ts b/src/content/controllers/MarkKeyController.ts new file mode 100644 index 0000000..9406fbf --- /dev/null +++ b/src/content/controllers/MarkKeyController.ts @@ -0,0 +1,31 @@ +import MarkUseCase from '../usecases/MarkUseCase'; +import MarkKeyyUseCase from '../usecases/MarkKeyUseCase'; +import * as keys from '../../shared/utils/keys'; + +export default class MarkKeyController { + private markUseCase: MarkUseCase; + + private markKeyUseCase: MarkKeyyUseCase; + + constructor({ + markUseCase = new MarkUseCase(), + markKeyUseCase = new MarkKeyyUseCase(), + } = {}) { + this.markUseCase = markUseCase; + this.markKeyUseCase = markKeyUseCase; + } + + press(key: keys.Key): boolean { + if (this.markKeyUseCase.isSetMode()) { + this.markUseCase.set(key.key); + this.markKeyUseCase.disableSetMode(); + return true; + } + if (this.markKeyUseCase.isJumpMode()) { + this.markUseCase.jump(key.key); + this.markKeyUseCase.disableJumpMode(); + return true; + } + return false; + } +} |