<template>
  <v-container class="px-12">
    <div class="flex justify-between items-center mt-5">
      <div class="flex items-end gap-2">
        <h1 class="text-2xl">Create a new bot</h1>
      </div>

      <div class="flex gap-2">
        <v-btn
          color="grey"
          text="Cancel"
          prepend-icon="mdi-arrow-left"
          variant="tonal"
          to="/dev/bots"
        />
      </div>
    </div>

    <v-expand-transition>
      <v-alert v-if="error" variant="tonal" type="error" class="text-xs mt-5 mb-3">
        {{ t("errorOccurred", [error]) }}
      </v-alert>
    </v-expand-transition>

    <v-form class="mt-5" @submit.prevent="submit">
      <v-row>
        <v-col cols="12" md="6" lg="4">
          <v-text-field
            label="Name"
            name="name"
            variant="outlined"
            hide-details
          />
        </v-col>
        <v-col cols="12" md="6" lg="4">
          <v-text-field
            label="Nick"
            name="nick"
            variant="outlined"
            hide-details
          />
        </v-col>
        <v-col cols="12" md="6" lg="4">
          <v-textarea
            auto-grow
            rows="1"
            label="Description"
            name="description"
            variant="outlined"
          />
        </v-col>
      </v-row>

      <div class="flex justify-end">
        <v-btn type="submit" text="Create" append-icon="mdi-plus" :loading="submitting" />
      </div>
    </v-form>
  </v-container>
</template>

<script setup lang="ts">
definePageMeta({
  layout: "dev-portal",
  middleware: ["auth"],
})

useHead({
  title: "New Bot",
})

const { t } = useI18n()

const error = ref<null | string>(null)
const submitting = ref(false)

async function submit(evt: SubmitEvent) {
  const data = Object.fromEntries(new FormData(evt.target as HTMLFormElement).entries())
  if (!data.name) return

  submitting.value = true

  const res = await solarFetch("/cgi/id/dev/bots", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(data),
  })
  if (res.status != 200) {
    error.value = await res.text()
  } else {
    navigateTo('/dev/bots')
  }

  submitting.value = false
}
</script>