diff --git a/src/App.vue b/src/App.vue index 78e87b8..f24c532 100644 --- a/src/App.vue +++ b/src/App.vue @@ -6,19 +6,19 @@ - -
{{ error.message }}
- {{ error.description }} -
+
+ + +

{{ notification[1].message }}

+

{{ notification[1].description }}

+
FERMER
+
+
+
{ return authStore.isAuthenticated; }); -const errorType = ref(null) - -const timeout = computed(() => { - if (errorType.value === "ERR_NETWORK") { - errorType.value = null - return "9000" - } else { - return -1 // désactive le timeOut de la snackbar - } -}) - const route = useRoute(); watch( @@ -79,20 +70,22 @@ watch( message: 'Erreur réseau', description: 'Service indisponible : merci de réessayer ultérieurement.' }; - errorStack.value.push(newError); + const notificationId = self.crypto.randomUUID() + errorsList.value.set(notificationId, newError) } }, { immediate: true } // Option pour exécuter le watcher dès le montage du composant ); function addError(error) { + const notificationId = self.crypto.randomUUID() + alertType.value = "error" let newError = { message: 'Erreur', description: '' } if(!error.response){ - deleteOldErrorNetworkMessage() - errorType.value = "ERR_NETWORK" + errorType = "ERR_NETWORK" newError.message = 'Erreur réseau : ' + error.code newError.description = 'Service indisponible : merci de réessayer ultérieurement.' }else{ @@ -112,8 +105,7 @@ function addError(error) { newError.message = 'Accès rejeté'; newError.description = 'Mauvaise requête : contrôlez les paramètres de votre requête et observez les logs du serveur pour plus d\'informations ' + '(' + error.config.url + ')'; } - if (error.response.status.toString() - .startsWith('5')) { + if (error.response.status.toString().startsWith('5')) { newError.message = 'Problème de disponibilité du serveur'; newError.description = 'Retentez plus tard. Vérifiez la disponibilité de la base de donnée (Etat des serveurs) en cliquant en bas à gauche sur l\'icone de paramètres. Si le problème perdure, contactez l\'assistance'; } @@ -127,16 +119,7 @@ function addError(error) { if (error.request.url) { newError.description = 'Problème de disponibilité du fichier demandé'; } - errorStack.value.push(newError); - snackbarIsActive.value = true; -} - -function clearErrors() { - errorStack.value = []; -} - -function closeAlert(index) { - errorStack.value.splice(index, 1); + addNotification(notificationId, newError) } function onLogout() { @@ -147,13 +130,21 @@ function toggleDrawer() { drawer.value = !drawer.value; } -// Permet de vérifier la présence d'un message de type ERR_NETWORK dans errorStack et de la supprimer afin d'éviter une surcharge du tableau -function deleteOldErrorNetworkMessage() { - errorStack.value.forEach((error, index) => { - if (error.message === "Erreur réseau : ERR_NETWORK") { - errorStack.value.splice(index, 1) - } - }) +function addNotification(notificationId, message) { + errorsList.value.set(notificationId, message) + if (errorType === "ERR_NETWORK") { + setTimeout(() => removeNotification(notificationId), 9000) // impose un timeout au v-alert pour que les alertes de type ERR_NETWORK ne surchargent pas la Map errorsList + } +} + +function removeNotification(notificationId) { + if (notificationId != null) { + errorsList.value.delete(notificationId) + } +} + +function clearErrors() { + errorsList.value = new Map() } @@ -161,18 +152,26 @@ function deleteOldErrorNetworkMessage() {