From ddf912804fc4cb26d388283eacca63a0aeddf779 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 29 Nov 2020 16:02:57 +0900 Subject: Make background operations as a operator --- src/background/operators/impls/CloseTabOperator.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/background/operators/impls/CloseTabOperator.ts (limited to 'src/background/operators/impls/CloseTabOperator.ts') diff --git a/src/background/operators/impls/CloseTabOperator.ts b/src/background/operators/impls/CloseTabOperator.ts new file mode 100644 index 0000000..5d8e80b --- /dev/null +++ b/src/background/operators/impls/CloseTabOperator.ts @@ -0,0 +1,22 @@ +import Operator from "../Operator"; +import TabPresenter from "../../presenters/TabPresenter"; + +export default class CloseTabOperator implements Operator { + constructor( + private readonly tabPresenter: TabPresenter, + private readonly force: boolean = false, + private readonly selectLeft: boolean = false + ) {} + + async run(): Promise { + const tab = await this.tabPresenter.getCurrent(); + if (!this.force && tab.pinned) { + return Promise.resolve(); + } + if (this.selectLeft && tab.index > 0) { + const tabs = await this.tabPresenter.getAll(); + await this.tabPresenter.select(tabs[tab.index - 1].id as number); + } + return this.tabPresenter.remove([tab.id as number]); + } +} -- cgit v1.2.3