fix(front): try to correct crash on ios
Some checks failed
Deploy to Development / build-and-deploy (push) Has been cancelled
Deploy to Production / build-and-deploy (push) Successful in 1m39s

This commit is contained in:
EvanChal
2026-01-26 23:03:49 +01:00
parent 08810440e0
commit 658b7a9dda
10 changed files with 149 additions and 48 deletions

View File

@@ -68,6 +68,16 @@ instance.interceptors.request.use(
}
}
// Augmenter le timeout pour les requêtes POST/PUT avec FormData (uploads)
if ((config.method === 'POST' || config.method === 'PUT') && config.data instanceof FormData) {
config.timeout = 120000 // 2 minutes pour les uploads
// Ne pas définir Content-Type pour FormData - laisser le navigateur l'ajouter avec la boundary
// C'est crucial sur mobile où définir explicitement le Content-Type peut causer des erreurs
if (config.headers && config.headers['Content-Type'] === 'multipart/form-data') {
delete config.headers['Content-Type']
}
}
return config
},
error => {
@@ -112,12 +122,24 @@ instance.interceptors.response.use(
}
if (error.response?.status === 401) {
// Ne pas déconnecter automatiquement sur les requêtes POST/PUT avec FormData
// car les erreurs peuvent être dues à des problèmes réseau temporaires sur mobile
const isFormDataUpload = error.config?.data instanceof FormData ||
(error.config?.method === 'POST' || error.config?.method === 'PUT')
// Ne pas rediriger si on est déjà sur une page d'auth
const currentRoute = router.currentRoute.value
if (!currentRoute.path.includes('/login') && !currentRoute.path.includes('/register')) {
localStorage.removeItem('token')
router.push('/login')
toast.error('Session expirée, veuillez vous reconnecter')
// Pour les uploads, ne déconnecter que si c'est vraiment une erreur d'authentification
// (pas juste une erreur réseau qui se manifeste comme 401)
if (!isFormDataUpload || error.response?.data?.detail?.includes('credentials') || error.response?.data?.detail?.includes('token')) {
localStorage.removeItem('token')
router.push('/login')
toast.error('Session expirée, veuillez vous reconnecter')
} else {
// Pour les uploads, juste afficher une erreur sans déconnecter
toast.error('Erreur lors de l\'upload. Veuillez réessayer.')
}
}
} else if (error.response?.status === 403) {
toast.error('Accès non autorisé')