Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 1x | import { SettingsJSON } from "../types/settings"
import { SettingsStorage, UiWindow } from "../types/wrapper"
 
import { SettingsManager } from "./SettingsManager"
import { APIHandler } from "./APIHandler"
import { UiUpdater } from "./UiUpdater"
import { UrlObserver } from "./UrlObserver"
import { ChromeSettingsStorage } from "./ChromeSettingsStorage"
import { StatsUpdater } from "./StatsUpdater"
import { StatsCalculator } from "./StatsCalculator"
import { BrowserUiWindow } from "./BrowserUiWindow"
 
import { MockSettingsStorage } from "../../tests/mocks/MockSettingsStorage"
 
import settingsData from "../../settings.json" with { type: "json" }
 
const settingsJSON: SettingsJSON = settingsData as SettingsJSON
 
/**
 * Factory class for creating instances of StatsUpdater with different settings.
 */
export class StatsUpdaterFactory {
  /**
   * Create a new StatsUpdater instance with the specified settings.
   *
   * @param {SettingsStorage} storageManager - The storage manager for settings.
   * @param {UiWindow} uiWindow - The window object for the browser.
   * @returns {StatsUpdater} A new StatsUpdater instance.
   */
  static createStatsUpdater(
    storageManager: SettingsStorage = new ChromeSettingsStorage(),
    uiWindow: UiWindow = new BrowserUiWindow()
  ): StatsUpdater {
    return new StatsUpdater({
      settingsJSON,
      settingsManager: new SettingsManager(storageManager, settingsJSON),
      apiHandler: new APIHandler(settingsJSON),
      uiUpdater: new UiUpdater(settingsJSON, uiWindow),
      statsCalculator: new StatsCalculator(settingsJSON),
      urlObserver: new UrlObserver(uiWindow),
      uiWindow
    })
  }
 
  /**
   * Create a new StatsUpdater instance for testing purposes.
   *
   * @param {SettingsStorage} storageManager - The storage manager for settings.
   * @param {UiWindow} uiWindow - The window object for the browser.
   * @returns {StatsUpdater} A new StatsUpdater instance for testing.
   */
  static createStatsUpdaterForTest(
    storageManager: SettingsStorage = new MockSettingsStorage(),
    uiWindow: UiWindow
  ): StatsUpdater {
    return new StatsUpdater({
      settingsJSON,
      settingsManager: new SettingsManager(storageManager, settingsJSON),
      apiHandler: new APIHandler(settingsJSON),
      uiUpdater: new UiUpdater(settingsJSON, uiWindow),
      statsCalculator: new StatsCalculator(settingsJSON),
      urlObserver: new UrlObserver(uiWindow),
      uiWindow
    })
  }
}
  |