53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
import * as tabs from '../background/tabs';
|
|
import * as zooms from '../background/zooms';
|
|
import * as consoleActions from '../actions/console';
|
|
import actions from '../actions';
|
|
|
|
const doCompletion = (command, keywords, sender) => {
|
|
if (command === 'buffer') {
|
|
return tabs.getCompletions(keywords).then((tabs) => {
|
|
let items = tabs.map((tab) => {
|
|
return {
|
|
caption: tab.title,
|
|
content: tab.title,
|
|
url: tab.url,
|
|
icon: tab.favIconUrl
|
|
}
|
|
});
|
|
let completions = {
|
|
name: "Buffers",
|
|
items: items
|
|
};
|
|
return browser.tabs.sendMessage(
|
|
sender,
|
|
consoleActions.setCompletions([completions]));
|
|
});
|
|
}
|
|
return Promise.resolve();
|
|
};
|
|
|
|
export default function reducer(state, action = {}, sender) {
|
|
// TODO hide sender object
|
|
switch (action.type) {
|
|
case actions.BACKGROUND_REQUEST_COMPLETIONS:
|
|
return doCompletion(action.command, action.keywords, sender.tab.id);
|
|
case actions.TABS_CLOSE:
|
|
return tabs.closeTab(sender.tab.id);
|
|
case actions.TABS_REOPEN:
|
|
return tabs.reopenTab();
|
|
case actions.TABS_PREV:
|
|
return tabs.selectPrevTab(sender.tab.index, action.count);
|
|
case actions.TABS_NEXT:
|
|
return tabs.selectNextTab(sender.tab.index, action.count);
|
|
case actions.TABS_RELOAD:
|
|
return tabs.reload(sender.tab, action.cache);
|
|
case actions.ZOOM_IN:
|
|
return zooms.zoomIn();
|
|
case actions.ZOOM_OUT:
|
|
return zooms.zoomOut();
|
|
case actions.ZOOM_NEUTRAL:
|
|
return zooms.neutral();
|
|
default:
|
|
return Promise.resolve();
|
|
}
|
|
}
|