diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-03-07 21:05:52 +0900 |
---|---|---|
committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-03-07 21:05:52 +0900 |
commit | 92f8365be7127c3fa0276b1a6e890571f634622e (patch) | |
tree | 0de3603c8cffef056584413ef8a5a0dc051b8d8f /src/content | |
parent | 24e72aa6e079009d4c24c7f6be6bfb82c21e6643 (diff) |
set find keyword from background
Diffstat (limited to 'src/content')
-rw-r--r-- | src/content/actions/find.js | 51 | ||||
-rw-r--r-- | src/content/reducers/find.js | 2 |
2 files changed, 34 insertions, 19 deletions
diff --git a/src/content/actions/find.js b/src/content/actions/find.js index b266216..c7345cc 100644 --- a/src/content/actions/find.js +++ b/src/content/actions/find.js @@ -5,6 +5,7 @@ // NOTE: window.find is not standard API // https://developer.mozilla.org/en-US/docs/Web/API/Window/find +import messages from 'shared/messages'; import actions from 'content/actions'; import * as consoleFrames from '../console-frames'; @@ -31,35 +32,49 @@ const find = (string, backwards) => { return window.find(string, caseSensitive, backwards, wrapScan); }; -const findNext = (keyword, reset, backwards) => { +const findNext = (currentKeyword, reset, backwards) => { if (reset) { window.getSelection().removeAllRanges(); } - let found = find(keyword, backwards); - if (!found) { - window.getSelection().removeAllRanges(); - found = find(keyword, backwards); - } - if (found) { - postPatternFound(keyword); + let promise = Promise.resolve(currentKeyword); + if (currentKeyword) { + browser.runtime.sendMessage({ + type: messages.FIND_SET_KEYWORD, + keyword: currentKeyword, + }); } else { - postPatternNotFound(keyword); + promise = browser.runtime.sendMessage({ + type: messages.FIND_GET_KEYWORD, + }); } - return { - type: actions.FIND_SET_KEYWORD, - keyword, - found, - }; + return promise.then((keyword) => { + let found = find(keyword, backwards); + if (!found) { + window.getSelection().removeAllRanges(); + found = find(keyword, backwards); + } + if (found) { + postPatternFound(keyword); + } else { + postPatternNotFound(keyword); + } + + return { + type: actions.FIND_SET_KEYWORD, + keyword, + found, + }; + }); }; -const next = (keyword, reset) => { - return findNext(keyword, reset, false); +const next = (currentKeyword, reset) => { + return findNext(currentKeyword, reset, false); }; -const prev = (keyword, reset) => { - return findNext(keyword, reset, true); +const prev = (currentKeyword, reset) => { + return findNext(currentKeyword, reset, true); }; export { next, prev }; diff --git a/src/content/reducers/find.js b/src/content/reducers/find.js index eb43c37..8d63ee5 100644 --- a/src/content/reducers/find.js +++ b/src/content/reducers/find.js @@ -1,7 +1,7 @@ import actions from 'content/actions'; const defaultState = { - keyword: '', + keyword: null, found: false, }; |