From 12db4943ee54e1b0b48c806cde589254cb6fef51 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sat, 11 Nov 2017 15:53:46 +0900 Subject: show error on find and wrap search --- src/content/components/top-content/find.js | 39 +++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 4 deletions(-) (limited to 'src/content/components/top-content') diff --git a/src/content/components/top-content/find.js b/src/content/components/top-content/find.js index 6696f00..bccf040 100644 --- a/src/content/components/top-content/find.js +++ b/src/content/components/top-content/find.js @@ -1,5 +1,6 @@ import * as findActions from 'content/actions/find'; import messages from 'shared/messages'; +import * as consoleFrames from '../../console-frames'; export default class FindComponent { constructor(win, store) { @@ -10,14 +11,44 @@ export default class FindComponent { } onMessage(message) { - let state = this.store.getState().find; switch (message.type) { case messages.CONSOLE_ENTER_FIND: - return this.store.dispatch(findActions.next(message.text)); + return this.start(message.text); case messages.FIND_NEXT: - return this.store.dispatch(findActions.next(state.keyword)); + return this.next(); case messages.FIND_PREV: - return this.store.dispatch(findActions.prev(state.keyword)); + return this.prev(); + } + } + + start(text) { + let state = this.store.getState().find; + + if (text.length === 0) { + return this.store.dispatch(findActions.next(state.keyword, true)); + } + return this.store.dispatch(findActions.next(text, true)); + } + + next() { + let state = this.store.getState().find; + + if (!state.found) { + return consoleFrames.postError( + window.document, + 'Pattern not found: ' + state.keyword); + } + return this.store.dispatch(findActions.next(state.keyword, false)); + } + + prev() { + let state = this.store.getState().find; + + if (!state.found) { + return consoleFrames.postError( + window.document, + 'Pattern not found: ' + state.keyword); } + return this.store.dispatch(findActions.prev(state.keyword, false)); } } -- cgit v1.2.3