From 02daa1e68917cfb1122177ec25cbd1be595f9e78 Mon Sep 17 00:00:00 2001 From: Vaibhav Surve Date: Fri, 18 Jul 2025 10:15:25 +0530 Subject: [PATCH] fix(api_service): enhance logout handling on token issues --- lib/helpers/services/api_service.dart | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/helpers/services/api_service.dart b/lib/helpers/services/api_service.dart index 260e2b0..230fde7 100644 --- a/lib/helpers/services/api_service.dart +++ b/lib/helpers/services/api_service.dart @@ -20,7 +20,8 @@ class ApiService { final token = await LocalStorage.getJwtToken(); if (token == null) { - logSafe("No JWT token found."); + logSafe("No JWT token found. Logging out..."); + await LocalStorage.logout(); return null; } @@ -31,7 +32,7 @@ class ApiService { if (refreshed) { return await LocalStorage.getJwtToken(); } else { - logSafe("Token refresh failed. Logging out..."); + logSafe("Token refresh failed. Logging out immediately..."); await LocalStorage.logout(); return null; } @@ -47,10 +48,16 @@ class ApiService { final refreshed = await AuthService.refreshToken(); if (refreshed) { return await LocalStorage.getJwtToken(); + } else { + logSafe("Token refresh failed (near expiry). Logging out..."); + await LocalStorage.logout(); + return null; } } } catch (e) { logSafe("Token decoding error: $e", level: LogLevel.error); + await LocalStorage.logout(); + return null; } return token; @@ -107,8 +114,9 @@ class ApiService { }) async { String? token = await _getToken(); if (token == null) { - logSafe("Token is null. Cannot proceed with GET request.", + logSafe("Token is null. Forcing logout from GET request.", level: LogLevel.error); + await LocalStorage.logout(); return null; } @@ -141,8 +149,9 @@ class ApiService { ); } - logSafe("Token refresh failed. Aborting request.", + logSafe("Token refresh failed. Logging out user.", level: LogLevel.error); + await LocalStorage.logout(); } return response; @@ -246,7 +255,7 @@ class ApiService { } /// Directory calling the API - + static Future deleteBucket(String id) async { final endpoint = "${ApiEndpoints.updateBucket}/$id";