aboutsummaryrefslogtreecommitdiff
path: root/src/content/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/controllers')
-rw-r--r--src/content/controllers/AddonEnabledController.ts19
-rw-r--r--src/content/controllers/KeymapController.ts15
-rw-r--r--src/content/controllers/MarkController.ts16
-rw-r--r--src/content/controllers/MarkKeyController.ts31
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;
+ }
+}