starling-devex 0.1.2

Starling: a local dev orchestrator with a central daemon, shared named-URL proxy, and a k9s-style TUI (a Rust port of Tilt + portless)
// Helpers for triggering updates.

import { TriggerMode } from "./types"

export const BuildButtonTooltip = {
  AlreadyQueued: "Resource already queued!",
  NeedsManualTrigger: "Trigger update to sync changes",
  UpdateInProgOrPending: "Resource already updating!",
  Stop: "Stop update",
  Default: "Trigger update",
}

export function buildButtonTooltip(
  isClickable: boolean,
  isEmphasized: boolean,
  isQueued: boolean
): string {
  if (isQueued) {
    return BuildButtonTooltip.AlreadyQueued
  } else if (!isClickable) {
    return BuildButtonTooltip.UpdateInProgOrPending
  } else if (isEmphasized) {
    return BuildButtonTooltip.NeedsManualTrigger
  } else {
    return BuildButtonTooltip.Default
  }
}

export function startBuild(name: string) {
  let url = `/api/trigger`

  fetch(url, {
    method: "post",
    body: JSON.stringify({
      manifest_names: [name],
      build_reason: 16 /* BuildReasonFlagTriggerWeb */,
    }),
  }).then((response) => {
    if (!response.ok) {
      console.log(response)
    }
  })
}

export function toggleTriggerMode(name: string, mode: TriggerMode) {
  let url = "/api/override/trigger_mode"

  fetch(url, {
    method: "post",
    body: JSON.stringify({
      manifest_names: [name],
      trigger_mode: mode,
    }),
  }).then((response) => {
    if (!response.ok) {
      console.log(response)
    }
  })
}