fix: Unable to log-out user with incorrect/old token (#104)

Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
PartyDonut 2024-11-02 09:56:01 +01:00 committed by GitHub
parent 0761a50bfa
commit d3e34d57e0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 14 deletions

View file

@ -1,6 +1,6 @@
import 'dart:developer';
import 'package:chopper/chopper.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/account_model.dart';
import 'package:fladder/models/credentials_model.dart';
import 'package:fladder/models/login_screen_model.dart';
@ -13,7 +13,6 @@ import 'package:fladder/providers/shared_provider.dart';
import 'package:fladder/providers/sync_provider.dart';
import 'package:fladder/providers/user_provider.dart';
import 'package:fladder/providers/views_provider.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
final authProvider = StateNotifierProvider<AuthNotifier, LoginScreenModel>((ref) {
return AuthNotifier(ref);
@ -77,15 +76,9 @@ class AuthNotifier extends StateNotifier<LoginScreenModel> {
}
Future<Response?> logOutUser() async {
if (ref.read(userProvider) != null) {
final response = await api.sessionsLogoutPost();
if (response.isSuccessful) {
log('Logged out');
}
state = state.copyWith(tempCredentials: CredentialsModel.createNewCredentials());
await ref.read(sharedUtilityProvider).removeAccount(ref.read(userProvider));
return response;
}
final currentUser = ref.read(userProvider);
state = state.copyWith(tempCredentials: CredentialsModel.createNewCredentials());
await ref.read(sharedUtilityProvider).removeAccount(currentUser);
clearAllProviders();
return null;
}

View file

@ -64,8 +64,12 @@ class SharedUtility {
Future<bool?> removeAccount(AccountModel? account) async {
if (account == null) return null;
//Try to logout user
await ref.read(userProvider.notifier).forceLogoutUser(account);
try {
//Try to logout user
await ref.read(userProvider.notifier).forceLogoutUser(account);
} catch (e) {
log('Unable to log-out user forcing anyway $e');
}
//Remove from local database
final savedAccounts = getAccounts();