aboutsummaryrefslogtreecommitdiff
path: root/src/background/operators/impls/OpenHomeOperator.ts
blob: 4773be633e946b7f9d1a36858897b97a192b19eb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import Operator from "../Operator";
import TabPresenter from "../../presenters/TabPresenter";
import BrowserSettingRepository from "../../repositories/BrowserSettingRepository";

export default class OpenHomeOperator implements Operator {
  constructor(
    private readonly tabPresenter: TabPresenter,
    private readonly browserSettingRepository: BrowserSettingRepository,
    private readonly newTab: boolean
  ) {}

  async run(): Promise<void> {
    const tab = await this.tabPresenter.getCurrent();
    const urls = await this.browserSettingRepository.getHomepageUrls();
    if (urls.length === 1 && urls[0] === "about:home") {
      // eslint-disable-next-line max-len
      throw new Error(
        "Cannot open Firefox Home (about:home) by WebExtensions, set your custom URLs"
      );
    }
    if (urls.length === 1 && !this.newTab) {
      await this.tabPresenter.open(urls[0], tab.id);
      return;
    }
    for (const url of urls) {
      await this.tabPresenter.create(url);
    }
  }
}