From e248477ecb46596af734589615118ba573971dc0 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Fri, 12 Oct 2018 14:59:45 +0900 Subject: Scroll on global mark and handle gone tab --- src/background/usecases/mark.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/background/usecases') diff --git a/src/background/usecases/mark.js b/src/background/usecases/mark.js index 2cb3b45..34b8a74 100644 --- a/src/background/usecases/mark.js +++ b/src/background/usecases/mark.js @@ -2,17 +2,19 @@ import GlobalMark from '../domains/global-mark'; import TabPresenter from '../presenters/tab'; import MarkRepository from '../repositories/mark'; import ConsolePresenter from '../presenters/console'; +import ContentMessageClient from '../infrastructures/content-message-client'; export default class MarkInteractor { constructor() { this.tabPresenter = new TabPresenter(); this.markRepository = new MarkRepository(); this.consolePresenter = new ConsolePresenter(); + this.contentMessageClient = new ContentMessageClient(); } async setGlobal(key, x, y) { let tab = await this.tabPresenter.getCurrent(); - let mark = new GlobalMark(tab.id, x, y); + let mark = new GlobalMark(tab.id, tab.url, x, y); return this.markRepository.setMark(key, mark); } @@ -23,7 +25,15 @@ export default class MarkInteractor { 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); + + return this.contentMessageClient.scrollTo( + mark.tabId, mark.x, mark.y + ).then(() => { + return this.tabPresenter.select(mark.tabId); + }).catch(async() => { + let tab = await this.tabPresenter.create(mark.url); + let mark2 = new GlobalMark(tab.id, mark.url, mark.x, mark.y); + return this.markRepository.setMark(key, mark2); + }); } } -- cgit v1.2.3