[wip] implement command usecases
This commit is contained in:
parent
0846587baf
commit
c4afd7237b
10 changed files with 291 additions and 49 deletions
0
src/background/presenters/bookmark.js
Normal file
0
src/background/presenters/bookmark.js
Normal file
16
src/background/presenters/console.js
Normal file
16
src/background/presenters/console.js
Normal 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,
|
||||
});
|
||||
}
|
||||
}
|
|
@ -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 }) {
|
||||
|
|
5
src/background/presenters/window.js
Normal file
5
src/background/presenters/window.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
export default class WindowPresenter {
|
||||
create(url) {
|
||||
return browser.windows.create({ url });
|
||||
}
|
||||
}
|
Reference in a new issue