diff options
Diffstat (limited to 'src/background/operators/impls/InternalOpenURLOperator.ts')
-rw-r--r-- | src/background/operators/impls/InternalOpenURLOperator.ts | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/background/operators/impls/InternalOpenURLOperator.ts b/src/background/operators/impls/InternalOpenURLOperator.ts new file mode 100644 index 0000000..6bf513b --- /dev/null +++ b/src/background/operators/impls/InternalOpenURLOperator.ts @@ -0,0 +1,24 @@ +import Operator from "../Operator"; +import WindowPresenter from "../../presenters/WindowPresenter"; +import TabPresenter from "../../presenters/TabPresenter"; + +export default class InternalOpenURLOperator implements Operator { + constructor( + private readonly windowPresenter: WindowPresenter, + private readonly tabPresenter: TabPresenter, + private readonly url: string, + private readonly newTab?: boolean, + private readonly newWindow?: boolean + ) {} + + async run(): Promise<void> { + if (this.newWindow) { + await this.windowPresenter.create(this.url); + } else if (this.newTab) { + await this.tabPresenter.create(this.url); + } else { + const tab = await this.tabPresenter.getCurrent(); + await this.tabPresenter.open(this.url, tab.id); + } + } +} |