fix(front): try to correct crash on ios
This commit is contained in:
@@ -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é')
|
||||
|
||||
Reference in New Issue
Block a user