Support global marks which select a tab
This commit is contained in:
parent
6e6e306275
commit
003742ec51
11 changed files with 179 additions and 4 deletions
29
src/background/usecases/mark.js
Normal file
29
src/background/usecases/mark.js
Normal file
|
@ -0,0 +1,29 @@
|
|||
import GlobalMark from '../domains/global-mark';
|
||||
import TabPresenter from '../presenters/tab';
|
||||
import MarkRepository from '../repositories/mark';
|
||||
import ConsolePresenter from '../presenters/console';
|
||||
|
||||
export default class MarkInteractor {
|
||||
constructor() {
|
||||
this.tabPresenter = new TabPresenter();
|
||||
this.markRepository = new MarkRepository();
|
||||
this.consolePresenter = new ConsolePresenter();
|
||||
}
|
||||
|
||||
async setGlobal(key, x, y) {
|
||||
let tab = await this.tabPresenter.getCurrent();
|
||||
let mark = new GlobalMark(tab.id, x, y);
|
||||
return this.markRepository.setMark(key, mark);
|
||||
}
|
||||
|
||||
async jumpGlobal(key) {
|
||||
let current = await this.tabPresenter.getCurrent();
|
||||
|
||||
let mark = await this.markRepository.getMark(key);
|
||||
if (!mark) {
|
||||
return this.consolePresenter.showError(current.id, 'Mark is not set');
|
||||
}
|
||||
// TODO scroll pages and handle if tab is gone
|
||||
return this.tabPresenter.select(mark.tabId);
|
||||
}
|
||||
}
|
Reference in a new issue