-
- {{ 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() {