aboutsummaryrefslogtreecommitdiff
path: root/src/content/controllers/FollowMasterController.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/controllers/FollowMasterController.ts')
-rw-r--r--src/content/controllers/FollowMasterController.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/content/controllers/FollowMasterController.ts b/src/content/controllers/FollowMasterController.ts
new file mode 100644
index 0000000..89294ff
--- /dev/null
+++ b/src/content/controllers/FollowMasterController.ts
@@ -0,0 +1,31 @@
+import FollowMasterUseCase from '../usecases/FollowMasterUseCase';
+import * as messages from '../../shared/messages';
+
+export default class FollowMasterController {
+ private followMasterUseCase: FollowMasterUseCase;
+
+ constructor({
+ followMasterUseCase = new FollowMasterUseCase(),
+ } = {}) {
+ this.followMasterUseCase = followMasterUseCase;
+ }
+
+ followStart(m: messages.FollowStartMessage): void {
+ this.followMasterUseCase.startFollow(m.newTab, m.background);
+ }
+
+ responseCountTargets(
+ m: messages.FollowResponseCountTargetsMessage, sender: Window,
+ ): void {
+ this.followMasterUseCase.createSlaveHints(m.count, sender);
+ }
+
+ keyPress(message: messages.FollowKeyPressMessage): void {
+ if (message.key === '[' && message.ctrlKey) {
+ this.followMasterUseCase.cancelFollow();
+ } else {
+ this.followMasterUseCase.enqueue(message.key);
+ }
+ }
+}
+