aboutsummaryrefslogtreecommitdiff
path: root/src/background/presenters
diff options
context:
space:
mode:
Diffstat (limited to 'src/background/presenters')
-rw-r--r--src/background/presenters/bookmark.js0
-rw-r--r--src/background/presenters/console.js16
-rw-r--r--src/background/presenters/tab.js45
-rw-r--r--src/background/presenters/window.js5
4 files changed, 64 insertions, 2 deletions
diff --git a/src/background/presenters/bookmark.js b/src/background/presenters/bookmark.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/background/presenters/bookmark.js
diff --git a/src/background/presenters/console.js b/src/background/presenters/console.js
new file mode 100644
index 0000000..f7d3777
--- /dev/null
+++ b/src/background/presenters/console.js
@@ -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,
+ });
+ }
+}
diff --git a/src/background/presenters/tab.js b/src/background/presenters/tab.js
index 66a207f..be6955a 100644
--- a/src/background/presenters/tab.js
+++ b/src/background/presenters/tab.js
@@ -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 }) {
diff --git a/src/background/presenters/window.js b/src/background/presenters/window.js
new file mode 100644
index 0000000..a82c4a2
--- /dev/null
+++ b/src/background/presenters/window.js
@@ -0,0 +1,5 @@
+export default class WindowPresenter {
+ create(url) {
+ return browser.windows.create({ url });
+ }
+}