diff --git a/components/BackupList.vue b/components/BackupList.vue
index 1aa8a38..cca8806 100644
--- a/components/BackupList.vue
+++ b/components/BackupList.vue
@@ -22,6 +22,13 @@
+
@@ -63,6 +70,7 @@ const props = defineProps<{
const backups = ref([])
const loading = ref(false)
+const errorMessage = ref("")
const apiAuthHeader = useApiAuthHeader()
const title = computed(() => {
if (!props.folder) return "Fichiers"
@@ -72,25 +80,36 @@ const title = computed(() => {
const downloadBackup = async (file: string) => {
if (!props.folder) return
const url = `/api/download?folder=${encodeURIComponent(props.folder)}&file=${encodeURIComponent(file)}`
- await downloadApiFile(url, file)
+ 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)}`, {
- headers: apiAuthHeader
+ headers: apiAuthHeader,
+ server: false
})
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
}
@@ -124,6 +143,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 36b9db2..7ea5d5f 100644
--- a/components/BackupRun.vue
+++ b/components/BackupRun.vue
@@ -143,7 +143,7 @@ const loadScripts = async () => {
} catch (error) {
scripts.value = []
isError.value = true
- message.value = `Erreur chargement scripts: ${error instanceof Error ? error.message : String(error)}`
+ message.value = "Erreur lors de l'opération"
emit("result", {
key: null,
label: "",
@@ -180,7 +180,7 @@ const runScript = async (key: string) => {
})
} catch (error: any) {
isError.value = true
- message.value = error?.data?.statusMessage || "Erreur execution script"
+ message.value = error?.data?.statusMessage || "Erreur lors de l'opération"
output.value = ""
emit("result", {
key,
diff --git a/components/MessageDiscord.vue b/components/MessageDiscord.vue
index 6b61904..9b35026 100644
--- a/components/MessageDiscord.vue
+++ b/components/MessageDiscord.vue
@@ -2,8 +2,9 @@
import {Icon as IconifyIcon} from "@iconify/vue"
import { useApiAuthHeader } from "~/composables/useApiAuth"
-const { data: messages } = await useFetch('/api/discord/messages', {
- headers: useApiAuthHeader()
+const { data: messages, error } = await useFetch('/api/discord/messages', {
+ headers: useApiAuthHeader(),
+ server: false
})
@@ -17,7 +18,14 @@ const { data: messages } = await useFetch('/api/discord/messages', {
Messages
-
+
+
+
+ Erreur lors de l'opération
+
+
+
+
Aucun message
@@ -78,6 +86,12 @@ const { data: messages } = await useFetch('/api/discord/messages', {
padding: 2rem 1rem;
}
+.error-state {
+ border-radius: 8px;
+ border: 1px solid rgb(var(--m-error) / 0.12);
+ background: rgb(var(--m-error) / 0.06);
+}
+
.message-list {
display: flex;
flex-direction: column;
diff --git a/components/Speedtest.vue b/components/Speedtest.vue
index 09872e5..cad8942 100644
--- a/components/Speedtest.vue
+++ b/components/Speedtest.vue
@@ -36,6 +36,10 @@
+
+