fixed logout at refresh failed
This commit is contained in:
@@ -41,7 +41,14 @@ List<SingleChildWidget> get essentialProviders {
|
||||
|
||||
List<SingleChildWidget> get cores {
|
||||
return [
|
||||
Provider(create: (context) => NetworkManager(context.read()), lazy: true),
|
||||
Provider(
|
||||
create: (context) {
|
||||
final nm = NetworkManager(context.read());
|
||||
|
||||
return nm;
|
||||
},
|
||||
lazy: true,
|
||||
),
|
||||
ChangeNotifierProvider(create: (context) => ThemeProvider(), lazy: true),
|
||||
ChangeNotifierProvider(
|
||||
create: (context) => NotificationStateService(),
|
||||
|
||||
@@ -17,6 +17,14 @@ class NetworkManager {
|
||||
bool _interceptorsAdded = false;
|
||||
final SharedPreferences _prefs;
|
||||
|
||||
/// Callback invoked when refresh token fails (expired, missing, or errored).
|
||||
/// Should clear local auth state and navigate to the login screen.
|
||||
/// // Callback to be called when refresh token fails (logout callback)
|
||||
Future<void> Function()? _onAuthFailed;
|
||||
void setAuthFailed(Future<void> Function() callback) {
|
||||
_onAuthFailed = callback;
|
||||
}
|
||||
|
||||
NetworkManager(this._prefs)
|
||||
: mainDio = Dio(
|
||||
BaseOptions(
|
||||
@@ -75,6 +83,10 @@ class NetworkManager {
|
||||
mainDio.options.headers['Authorization'] = 'Bearer $newAccessToken';
|
||||
return handler.resolve(await mainDio.fetch(error.requestOptions));
|
||||
}
|
||||
|
||||
// Refresh token failed – force logout
|
||||
appLogger.error('❌ Refresh token failed, triggering logout');
|
||||
await _onAuthFailed!();
|
||||
}
|
||||
return handler.next(error);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user