diff options
Diffstat (limited to 'src/background/presenters')
| -rw-r--r-- | src/background/presenters/bookmark.js | 0 | ||||
| -rw-r--r-- | src/background/presenters/console.js | 16 | ||||
| -rw-r--r-- | src/background/presenters/tab.js | 45 | ||||
| -rw-r--r-- | src/background/presenters/window.js | 5 | 
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 }); +  } +}  | 
