From 66de4a59d0e3b617b9ba317e77aedb6fb705a1ff Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 17 Sep 2017 21:32:05 +0900 Subject: [PATCH] complete histoly simply --- src/actions/command.js | 23 +++++++++++++++++++++++ src/background/histories.js | 10 ++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/background/histories.js diff --git a/src/actions/command.js b/src/actions/command.js index 3e6eadb..3e879a6 100644 --- a/src/actions/command.js +++ b/src/actions/command.js @@ -1,4 +1,5 @@ import * as tabs from '../background/tabs'; +import * as histories from '../background/histories'; import * as consoleActions from './console'; const normalizeUrl = (string) => { @@ -39,9 +40,11 @@ const bufferCommand = (keywords) => { const doCommand = (name, remaining) => { switch (name) { + case 'o': case 'open': // TODO use search engined and pass keywords to them return openCommand(normalizeUrl(remaining)); + case 't': case 'tabopen': return tabopenCommand(normalizeUrl(remaining)); case 'b': @@ -53,6 +56,26 @@ const doCommand = (name, remaining) => { const getCompletions = (command, keywords) => { switch (command) { + case 'o': + case 'open': + case 't': + case 'tabopen': + return histories.getCompletions(keywords).then((pages) => { + let items = pages.map((page) => { + return { + caption: page.title, + content: page.url, + url: page.url + }; + }); + return [ + { + name: 'History', + items + } + ]; + }); + case 'b': case 'buffer': return tabs.getCompletions(keywords).then((gotTabs) => { let items = gotTabs.map((tab) => { diff --git a/src/background/histories.js b/src/background/histories.js new file mode 100644 index 0000000..b276a2d --- /dev/null +++ b/src/background/histories.js @@ -0,0 +1,10 @@ +const getCompletions = (keyword) => { + return browser.history.search({ + text: keyword, + startTime: '1970-01-01' + }).then((items) => { + return items.sort((x, y) => x.lastVisitTime < y.lastVisitTime).slice(0, 10); + }); +}; + +export { getCompletions };