<script setup lang="ts">
// Bouton « Rafraîchir » : resynchronise le contenu depuis Grav. Placé à côté de
// « Générer le PDF » (éditeur) et « Nouveau portfolio » (index).
withDefaults(defineProps<{ size?: 'xs' | 'sm' | 'md' }>(), { size: 'sm' })

const toast = useToast()
const syncing = ref(false)

async function refreshContent() {
  syncing.value = true
  try {
    const result = await $fetch<{ ok: boolean, summary: string }>('/api/sync', {
      method: 'POST',
      timeout: 900_000,
    })
    toast.add({
      title: result.ok ? 'Contenu rafraîchi' : 'Synchronisation en échec',
      description: result.summary,
      color: result.ok ? 'success' : 'error',
    })
    if (result.ok) await refreshNuxtData()
  } catch {
    toast.add({ title: 'Échec de la synchronisation', color: 'error' })
  } finally {
    syncing.value = false
  }
}
</script>

<template>
  <UTooltip text="Actualise les données depuis Grav">
    <UButton
      icon="i-lucide-refresh-cw"
      label="Rafraîchir"
      :size="size"
      variant="ghost"
      color="neutral"
      :loading="syncing"
      @click="refreshContent"
    />
  </UTooltip>
</template>
