Define client and presenter for follow
This commit is contained in:
parent
17dc2bb5ec
commit
a88324acd9
9 changed files with 358 additions and 179 deletions
76
src/content/client/FollowSlaveClient.ts
Normal file
76
src/content/client/FollowSlaveClient.ts
Normal file
|
@ -0,0 +1,76 @@
|
|||
import * as messages from '../../shared/messages';
|
||||
|
||||
interface Size {
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
|
||||
interface Point {
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
|
||||
export default interface FollowSlaveClient {
|
||||
filterHints(prefix: string): void;
|
||||
|
||||
requestHintCount(viewSize: Size, framePosition: Point): void;
|
||||
|
||||
createHints(viewSize: Size, framePosition: Point, tags: string[]): void;
|
||||
|
||||
clearHints(): void;
|
||||
|
||||
activateIfExists(tag: string, newTab: boolean, background: boolean): void;
|
||||
|
||||
// eslint-disable-next-line semi
|
||||
}
|
||||
|
||||
export class FollowSlaveClientImpl implements FollowSlaveClient {
|
||||
private target: Window;
|
||||
|
||||
constructor(target: Window) {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
filterHints(prefix: string): void {
|
||||
this.postMessage({
|
||||
type: messages.FOLLOW_SHOW_HINTS,
|
||||
prefix,
|
||||
});
|
||||
}
|
||||
|
||||
requestHintCount(viewSize: Size, framePosition: Point): void {
|
||||
this.postMessage({
|
||||
type: messages.FOLLOW_REQUEST_COUNT_TARGETS,
|
||||
viewSize,
|
||||
framePosition,
|
||||
});
|
||||
}
|
||||
|
||||
createHints(viewSize: Size, framePosition: Point, tags: string[]): void {
|
||||
this.postMessage({
|
||||
type: messages.FOLLOW_CREATE_HINTS,
|
||||
viewSize,
|
||||
framePosition,
|
||||
tags,
|
||||
});
|
||||
}
|
||||
|
||||
clearHints(): void {
|
||||
this.postMessage({
|
||||
type: messages.FOLLOW_REMOVE_HINTS,
|
||||
});
|
||||
}
|
||||
|
||||
activateIfExists(tag: string, newTab: boolean, background: boolean): void {
|
||||
this.postMessage({
|
||||
type: messages.FOLLOW_ACTIVATE,
|
||||
tag,
|
||||
newTab,
|
||||
background,
|
||||
});
|
||||
}
|
||||
|
||||
private postMessage(msg: messages.Message): void {
|
||||
this.target.postMessage(JSON.stringify(msg), '*');
|
||||
}
|
||||
}
|
Reference in a new issue