diff --git a/components/BackupList.vue b/components/BackupList.vue index 9dcad3b..63a63ea 100644 --- a/components/BackupList.vue +++ b/components/BackupList.vue @@ -22,6 +22,13 @@ +
+ +

+ {{ errorMessage }} +

+
+

@@ -55,6 +62,7 @@ import {Icon as IconifyIcon} from "@iconify/vue" import CircleSkeleton from "~/components/skeleton/CircleSkeleton.vue" import TextSkeleton from "~/components/skeleton/TextSkeleton.vue" +import { apiFetch, downloadApiFile } from "~/composables/useApiAuth" const props = defineProps<{ folder: string | null @@ -62,31 +70,42 @@ const props = defineProps<{ const backups = ref([]) const loading = ref(false) +const errorMessage = ref("") const title = computed(() => { if (!props.folder) return "Fichiers" return `Backup — ${props.folder.toUpperCase()}` }) -const downloadBackup = (file: string) => { +const downloadBackup = async (file: string) => { if (!props.folder) return const url = `/api/download?folder=${encodeURIComponent(props.folder)}&file=${encodeURIComponent(file)}` - window.location.href = url + errorMessage.value = "" + + try { + await downloadApiFile(url, file) + } catch (error) { + console.error("Erreur telechargement backup:", error) + errorMessage.value = "Erreur lors de l'opération" + } } watch(() => props.folder, async (folder) => { if (!folder) { loading.value = false backups.value = [] + errorMessage.value = "" return } loading.value = true + errorMessage.value = "" try { - const data = await $fetch(`/api/backups?folder=${encodeURIComponent(folder)}`) + const data = await apiFetch(`/api/backups?folder=${encodeURIComponent(folder)}`) backups.value = data } catch (error) { console.error("Erreur récupération backups:", error) backups.value = [] + errorMessage.value = "Erreur lors de l'opération" } finally { loading.value = false } @@ -120,6 +139,12 @@ watch(() => props.folder, async (folder) => { padding: 2.5rem 1rem; } +.error-state { + border-radius: 8px; + border: 1px solid rgb(var(--m-error) / 0.12); + background: rgb(var(--m-error) / 0.06); +} + .file-list { display: flex; flex-direction: column; diff --git a/components/BackupRun.vue b/components/BackupRun.vue index c05ed58..d3eb365 100644 --- a/components/BackupRun.vue +++ b/components/BackupRun.vue @@ -79,6 +79,7 @@