import { api } from "actionhero";
import { CLSInitializer } from "../classes/initializers/clsInitializer";
import { Telemetry } from "../modules/telemetry";
import { getGrouparooRunMode } from "../modules/runMode";
import { ConfigUser } from "../modules/configUser";

export class TelemetryInitializer extends CLSInitializer {
  constructor() {
    super();
    this.name = "telemetry";
    this.startPriority = 20; // start after codeConfig to include configured data
  }

  async initializeWithinTransaction() {}

  async startWithinTransaction() {
    if (getGrouparooRunMode() === "cli:config") {
      await ConfigUser.loadOrStoreCustomerId();
      await Telemetry.send("cli_config");
    }
  }

  async stopWithinTransaction() {
    if (getGrouparooRunMode() === "cli:run")
      await Telemetry.send("cli_run", api.process.stopReasons);
  }
}
