import { defineStore } from 'pinia'
import { computed, MaybeRefOrGetter, toValue } from 'vue'

type Input = {
  uri: string
  label: string
  description?: string
}

export function useInput(uri: MaybeRefOrGetter<string>) {
  const playoutStore = usePlayoutStore()
  return computed(() => playoutStore.inputs.find((i) => i.uri === toValue(uri)) ?? null)
}

export const usePlayoutStore = defineStore('playout', () => {
  // These are hard-coded in engine-core as well
  // See playout config: https://gitlab.servus.at/aura/engine-core/-/blob/40e7c86373a0029e4db9fd98295997017a92a9e3/config/sample.engine-core.ini#L73
  // see playout source: https://gitlab.servus.at/aura/engine-core/-/blob/40e7c86373a0029e4db9fd98295997017a92a9e3/src/in_soundcard.liq#L83-105
  const inputs: Input[] = [
    { uri: 'line://0', label: 'Studio' },
    { uri: 'line://1', label: 'Pre-Production' },
    { uri: 'line://2', label: 'Line 2' },
  ]

  return {
    inputs,
  }
})