Select last tab on presenter
This commit is contained in:
parent
09c5247dba
commit
0ca138cba4
2 changed files with 26 additions and 17 deletions
|
@ -1,3 +1,8 @@
|
|||
import MemoryStorage from '../infrastructures/memory-storage';
|
||||
|
||||
const CURRENT_SELECTED_KEY = 'tabs.current.selected';
|
||||
const LAST_SELECTED_KEY = 'tabs.last.selected';
|
||||
|
||||
export default class TabPresenter {
|
||||
open(url, tabId) {
|
||||
return browser.tabs.update(tabId, { url });
|
||||
|
@ -18,6 +23,15 @@ export default class TabPresenter {
|
|||
return browser.tabs.query({ currentWindow: true });
|
||||
}
|
||||
|
||||
async getLastSelectedId() {
|
||||
let cache = new MemoryStorage();
|
||||
let tabId = await cache.get(LAST_SELECTED_KEY);
|
||||
if (tabId === null || typeof tabId === 'undefined') {
|
||||
return;
|
||||
}
|
||||
return tabId;
|
||||
}
|
||||
|
||||
async getByKeyword(keyword, excludePinned = false) {
|
||||
let tabs = await browser.tabs.query({ currentWindow: true });
|
||||
return tabs.filter((t) => {
|
||||
|
@ -99,3 +113,14 @@ export default class TabPresenter {
|
|||
browser.tabs.onActivated.addListener(listener);
|
||||
}
|
||||
}
|
||||
|
||||
let tabPresenter = new TabPresenter();
|
||||
tabPresenter.onSelected((tab) => {
|
||||
let cache = new MemoryStorage();
|
||||
|
||||
let lastId = cache.get(CURRENT_SELECTED_KEY);
|
||||
if (lastId) {
|
||||
cache.set(LAST_SELECTED_KEY, lastId);
|
||||
}
|
||||
cache.set(CURRENT_SELECTED_KEY, tab.tabId);
|
||||
});
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
import MemoryStorage from '../infrastructures/memory-storage';
|
||||
import TabPresenter from '../presenters/tab';
|
||||
import ConsolePresenter from '../presenters/console';
|
||||
|
||||
const CURRENT_SELECTED_KEY = 'tabs.current.selected';
|
||||
const LAST_SELECTED_KEY = 'tabs.last.selected';
|
||||
|
||||
const ZOOM_SETTINGS = [
|
||||
0.33, 0.50, 0.66, 0.75, 0.80, 0.90, 1.00,
|
||||
1.10, 1.25, 1.50, 1.75, 2.00, 2.50, 3.00
|
||||
|
@ -13,11 +9,7 @@ const ZOOM_SETTINGS = [
|
|||
export default class OperationInteractor {
|
||||
constructor() {
|
||||
this.tabPresenter = new TabPresenter();
|
||||
this.tabPresenter.onSelected(info => this.onTabSelected(info.tabId));
|
||||
|
||||
this.consolePresenter = new ConsolePresenter();
|
||||
|
||||
this.cache = new MemoryStorage();
|
||||
}
|
||||
|
||||
async close(force) {
|
||||
|
@ -69,7 +61,7 @@ export default class OperationInteractor {
|
|||
}
|
||||
|
||||
async selectPrevSelected() {
|
||||
let tabId = await this.cache.get(LAST_SELECTED_KEY);
|
||||
let tabId = await this.tabPresenter.getLastSelectedId();
|
||||
if (tabId === null || typeof tabId === 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
@ -180,13 +172,5 @@ export default class OperationInteractor {
|
|||
let tab = await this.tabPresenter.getCurrent();
|
||||
return this.consolePresenter.hide(tab.id);
|
||||
}
|
||||
|
||||
onTabSelected(tabId) {
|
||||
let lastId = this.cache.get(CURRENT_SELECTED_KEY);
|
||||
if (lastId) {
|
||||
this.cache.set(LAST_SELECTED_KEY, lastId);
|
||||
}
|
||||
this.cache.set(CURRENT_SELECTED_KEY, tabId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue