[wip] implement command usecases

This commit is contained in:
Shin'ya Ueoka 2018-07-23 21:26:47 +09:00
parent 0846587baf
commit c4afd7237b
10 changed files with 291 additions and 49 deletions

View file

View file

@ -0,0 +1,16 @@
import messages from '../../shared/messages';
export default class ConsolePresenter {
showInfo(tabId, message) {
return browser.tabs.sendMessage(tabId, {
type: messages.CONSOLE_SHOW_INFO,
text: message,
});
}
showError(tabId, message) {
return browser.tabs.sendMessage(tabId, {
type: messages.CONSOLE_SHOW_ERROR,
text: message,
});
}
}

View file

@ -3,8 +3,49 @@ export default class TabPresenter {
return browser.tabs.update(tabId, { url });
}
create(url, { openerTabId, active }) {
return browser.tabs.create({ url, openerTabId, active });
create(url, opts) {
return browser.tabs.create({ url, ...opts });
}
async getCurrent() {
let tabs = await browser.tabs.query({
active: true, currentWindow: true
});
return tabs[0];
}
getAll() {
return browser.tabs.query({ currentWindow: true });
}
async getByKeyword(keyword, excludePinned = false) {
let tabs = await browser.tabs.query({ currentWindow: true });
return tabs.filter((t) => {
return t.url.toLowerCase().includes(keyword.toLowerCase()) ||
t.title && t.title.toLowerCase().includes(keyword.toLowerCase());
}).filter((t) => {
return !(excludePinned && t.pinned);
});
}
select(tabId) {
return browser.tabs.update(tabId, { active: true });
}
async selectAt(index) {
let tabs = await browser.tabs.query({ currentWindow: true });
if (tabs.length < 2) {
return;
}
if (index < 0 || tabs.length <= index) {
throw new RangeError(`tab ${index + 1} does not exist`);
}
let id = tabs[index].id;
return browser.tabs.update(id, { active: true });
}
remove(ids) {
return browser.tabs.remove(ids);
}
async createAdjacent(url, { openerTabId, active }) {

View file

@ -0,0 +1,5 @@
export default class WindowPresenter {
create(url) {
return browser.windows.create({ url });
}
}