Support global marks which select a tab

This commit is contained in:
Shin'ya Ueoka 2018-10-12 10:14:33 +09:00
parent 6e6e306275
commit 003742ec51
11 changed files with 179 additions and 4 deletions

View 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);
}
}