simple buffer command

jh-changes
Shin'ya Ueoka 7 years ago
parent 044f24efb6
commit 1c21e4fa28
  1. 2
      src/background/commands.js
  2. 19
      src/background/index.js
  3. 15
      src/background/tabs.js

@ -1,2 +0,0 @@
export const OPEN = 'open';
export const TABOPEN = 'tabopen';

@ -1,6 +1,5 @@
import * as actions from '../shared/actions'; import * as actions from '../shared/actions';
import * as tabs from './tabs'; import * as tabs from './tabs';
import * as commands from './commands';
import * as zooms from './zooms'; import * as zooms from './zooms';
import KeyQueue from './key-queue'; import KeyQueue from './key-queue';
@ -59,15 +58,29 @@ const normalizeUrl = (string) => {
} }
} }
const cmdBuffer = (arg) => {
if (isNaN(arg)) {
// TODO support buffer identification by non-number value
throw new TypeError(`${arg} is not a number`);
}
let index = parseInt(arg, 10) - 1;
tabs.selectAt(index);
}
const cmdEnterHandle = (request, sender) => { const cmdEnterHandle = (request, sender) => {
let words = request.text.split(' ').filter((s) => s.length > 0); let words = request.text.split(' ').filter((s) => s.length > 0);
switch (words[0]) { switch (words[0]) {
case commands.OPEN: case 'open':
browser.tabs.update(sender.tab.id, { url: normalizeUrl(words[1]) }); browser.tabs.update(sender.tab.id, { url: normalizeUrl(words[1]) });
return; return;
case commands.TABOPEN: case 'tabopen':
browser.tabs.create({ url: normalizeUrl(words[1]) }); browser.tabs.create({ url: normalizeUrl(words[1]) });
return; return;
case 'b':
case 'buffer':
cmdBuffer(words[1]);
return;
} }
}; };

@ -18,6 +18,19 @@ const reopenTab = () => {
}); });
}; };
const selectAt = (index) => {
chrome.tabs.query({ currentWindow: true }, (tabs) => {
if (tabs.length < 2) {
return;
}
if (index < 0 || tabs.length <= index) {
throw new RangeError(`buffer ${index} does not exist`)
}
let id = tabs[index].id;
chrome.tabs.update(id, { active: true })
});
}
const selectPrevTab = (current, count) => { const selectPrevTab = (current, count) => {
chrome.tabs.query({ currentWindow: true }, (tabs) => { chrome.tabs.query({ currentWindow: true }, (tabs) => {
if (tabs.length < 2) { if (tabs.length < 2) {
@ -47,4 +60,4 @@ const reload = (current, cache) => {
); );
}; };
export { closeTab, reopenTab, selectNextTab, selectPrevTab, reload }; export { closeTab, reopenTab, selectAt, selectNextTab, selectPrevTab, reload };