Find as a controller
This commit is contained in:
parent
ad1f3c07fb
commit
fcd15f4f09
9 changed files with 78 additions and 75 deletions
|
@ -1,36 +0,0 @@
|
|||
import * as messages from '../../../shared/messages';
|
||||
import MessageListener from '../../MessageListener';
|
||||
|
||||
import FindUseCase from '../../usecases/FindUseCase';
|
||||
|
||||
let findUseCase = new FindUseCase();
|
||||
|
||||
export default class FindComponent {
|
||||
constructor() {
|
||||
new MessageListener().onWebMessage(this.onMessage.bind(this));
|
||||
}
|
||||
|
||||
onMessage(message: messages.Message) {
|
||||
switch (message.type) {
|
||||
case messages.CONSOLE_ENTER_FIND:
|
||||
return this.start(message.text);
|
||||
case messages.FIND_NEXT:
|
||||
return this.next();
|
||||
case messages.FIND_PREV:
|
||||
return this.prev();
|
||||
}
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
start(text: string) {
|
||||
return findUseCase.startFind(text.length === 0 ? null : text);
|
||||
}
|
||||
|
||||
next() {
|
||||
return findUseCase.findNext();
|
||||
}
|
||||
|
||||
prev() {
|
||||
return findUseCase.findPrev();
|
||||
}
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
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';
|
||||
|
@ -18,7 +17,6 @@ export default class TopContent {
|
|||
|
||||
new CommonComponent(win, store); // eslint-disable-line no-new
|
||||
new FollowController(win, store); // eslint-disable-line no-new
|
||||
new FindComponent(); // eslint-disable-line no-new
|
||||
|
||||
// TODO make component
|
||||
consoleFrames.initialize(this.win.document);
|
||||
|
|
24
src/content/controllers/FindController.ts
Normal file
24
src/content/controllers/FindController.ts
Normal file
|
@ -0,0 +1,24 @@
|
|||
import * as messages from '../../shared/messages';
|
||||
import FindUseCase from '../usecases/FindUseCase';
|
||||
|
||||
export default class FindController {
|
||||
private findUseCase: FindUseCase;
|
||||
|
||||
constructor({
|
||||
findUseCase = new FindUseCase(),
|
||||
} = {}) {
|
||||
this.findUseCase = findUseCase;
|
||||
}
|
||||
|
||||
async start(m: messages.ConsoleEnterFindMessage): Promise<void> {
|
||||
await this.findUseCase.startFind(m.text);
|
||||
}
|
||||
|
||||
async next(_: messages.FindNextMessage): Promise<void> {
|
||||
await this.findUseCase.findNext();
|
||||
}
|
||||
|
||||
async prev(_: messages.FindPrevMessage): Promise<void> {
|
||||
await this.findUseCase.findPrev();
|
||||
}
|
||||
}
|
|
@ -2,11 +2,27 @@ import TopContentComponent from './components/top-content';
|
|||
import FrameContentComponent from './components/frame-content';
|
||||
import consoleFrameStyle from './site-style';
|
||||
import { newStore } from './store';
|
||||
import MessageListener from './MessageListener';
|
||||
import FindController from './controllers/FindController';
|
||||
import * as messages from '../shared/messages';
|
||||
|
||||
const store = newStore();
|
||||
|
||||
if (window.self === window.top) {
|
||||
new TopContentComponent(window, store); // eslint-disable-line no-new
|
||||
|
||||
let findController = new FindController();
|
||||
new MessageListener().onWebMessage((message: messages.Message) => {
|
||||
switch (message.type) {
|
||||
case messages.CONSOLE_ENTER_FIND:
|
||||
return findController.start(message);
|
||||
case messages.FIND_NEXT:
|
||||
return findController.next(message);
|
||||
case messages.FIND_PREV:
|
||||
return findController.prev(message);
|
||||
}
|
||||
return undefined;
|
||||
});
|
||||
} else {
|
||||
new FrameContentComponent(window, store); // eslint-disable-line no-new
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ export default class FindUseCase {
|
|||
this.consoleClient = consoleClient;
|
||||
}
|
||||
|
||||
async startFind(keyword: string | null): Promise<void> {
|
||||
async startFind(keyword?: string): Promise<void> {
|
||||
this.presenter.clearSelection();
|
||||
if (keyword) {
|
||||
this.saveKeyword(keyword);
|
||||
|
|
Reference in a new issue