set find keyword from background

jh-changes
Shin'ya Ueoka 6 years ago
parent 24e72aa6e0
commit 92f8365be7
  1. 51
      src/content/actions/find.js
  2. 2
      src/content/reducers/find.js
  3. 2
      test/content/reducers/find.test.js

@ -5,6 +5,7 @@
// NOTE: window.find is not standard API // NOTE: window.find is not standard API
// https://developer.mozilla.org/en-US/docs/Web/API/Window/find // https://developer.mozilla.org/en-US/docs/Web/API/Window/find
import messages from 'shared/messages';
import actions from 'content/actions'; import actions from 'content/actions';
import * as consoleFrames from '../console-frames'; import * as consoleFrames from '../console-frames';
@ -31,35 +32,49 @@ const find = (string, backwards) => {
return window.find(string, caseSensitive, backwards, wrapScan); return window.find(string, caseSensitive, backwards, wrapScan);
}; };
const findNext = (keyword, reset, backwards) => { const findNext = (currentKeyword, reset, backwards) => {
if (reset) { if (reset) {
window.getSelection().removeAllRanges(); window.getSelection().removeAllRanges();
} }
let found = find(keyword, backwards); let promise = Promise.resolve(currentKeyword);
if (!found) { if (currentKeyword) {
window.getSelection().removeAllRanges(); browser.runtime.sendMessage({
found = find(keyword, backwards); type: messages.FIND_SET_KEYWORD,
} keyword: currentKeyword,
if (found) { });
postPatternFound(keyword);
} else { } else {
postPatternNotFound(keyword); promise = browser.runtime.sendMessage({
type: messages.FIND_GET_KEYWORD,
});
} }
return { return promise.then((keyword) => {
type: actions.FIND_SET_KEYWORD, let found = find(keyword, backwards);
keyword, if (!found) {
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) => { const next = (currentKeyword, reset) => {
return findNext(keyword, reset, false); return findNext(currentKeyword, reset, false);
}; };
const prev = (keyword, reset) => { const prev = (currentKeyword, reset) => {
return findNext(keyword, reset, true); return findNext(currentKeyword, reset, true);
}; };
export { next, prev }; export { next, prev };

@ -1,7 +1,7 @@
import actions from 'content/actions'; import actions from 'content/actions';
const defaultState = { const defaultState = {
keyword: '', keyword: null,
found: false, found: false,
}; };

@ -5,7 +5,7 @@ import findReducer from 'content/reducers/find';
describe("find reducer", () => { describe("find reducer", () => {
it('return the initial state', () => { it('return the initial state', () => {
let state = findReducer(undefined, {}); let state = findReducer(undefined, {});
expect(state).to.have.property('keyword', ''); expect(state).to.have.property('keyword', null);
expect(state).to.have.property('found', false); expect(state).to.have.property('found', false);
}); });