mirror of
https://github.com/immich-app/immich.git
synced 2024-12-25 10:43:13 +02:00
fix(mobile) - Allow sign out if server is down, or device is offline (#3275)
* WIP: Allow app sign out when server cannot be reached * WIP: import logging lib * WIP: move log out up
This commit is contained in:
parent
7595d01956
commit
9012cf6946
@ -33,14 +33,12 @@ class ProfileDrawer extends HookConsumerWidget {
|
|||||||
?.copyWith(fontWeight: FontWeight.bold),
|
?.copyWith(fontWeight: FontWeight.bold),
|
||||||
).tr(),
|
).tr(),
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
bool res = await ref.watch(authenticationProvider.notifier).logout();
|
await ref.watch(authenticationProvider.notifier).logout();
|
||||||
|
|
||||||
if (res) {
|
ref.watch(backupProvider.notifier).cancelBackup();
|
||||||
ref.watch(backupProvider.notifier).cancelBackup();
|
ref.watch(assetProvider.notifier).clearAllAsset();
|
||||||
ref.watch(assetProvider.notifier).clearAllAsset();
|
ref.watch(websocketProvider.notifier).disconnect();
|
||||||
ref.watch(websocketProvider.notifier).disconnect();
|
AutoRouter.of(context).replace(const LoginRoute());
|
||||||
AutoRouter.of(context).replace(const LoginRoute());
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import 'package:immich_mobile/shared/services/api.service.dart';
|
|||||||
import 'package:immich_mobile/utils/db.dart';
|
import 'package:immich_mobile/utils/db.dart';
|
||||||
import 'package:immich_mobile/utils/hash.dart';
|
import 'package:immich_mobile/utils/hash.dart';
|
||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:logging/logging.dart';
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
||||||
@ -92,21 +93,29 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> logout() async {
|
Future<void> logout() async {
|
||||||
|
var log = Logger('AuthenticationNotifier');
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
String? userEmail = Store.tryGet(StoreKey.currentUser)?.email;
|
||||||
|
|
||||||
|
_apiService.authenticationApi
|
||||||
|
.logout()
|
||||||
|
.then((_) => log.info("Logout was successfull for $userEmail"))
|
||||||
|
.onError(
|
||||||
|
(error, stackTrace) =>
|
||||||
|
log.severe("Error logging out $userEmail", error, stackTrace),
|
||||||
|
);
|
||||||
|
|
||||||
await Future.wait([
|
await Future.wait([
|
||||||
_apiService.authenticationApi.logout(),
|
|
||||||
clearAssetsAndAlbums(_db),
|
clearAssetsAndAlbums(_db),
|
||||||
Store.delete(StoreKey.currentUser),
|
Store.delete(StoreKey.currentUser),
|
||||||
Store.delete(StoreKey.accessToken),
|
Store.delete(StoreKey.accessToken),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
state = state.copyWith(isAuthenticated: false);
|
state = state.copyWith(isAuthenticated: false);
|
||||||
|
|
||||||
return true;
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
debugPrint("Error logging out $e");
|
log.severe("Error logging out $e");
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,18 +75,15 @@ class ChangePasswordForm extends HookConsumerWidget {
|
|||||||
.changePassword(passwordController.value.text);
|
.changePassword(passwordController.value.text);
|
||||||
|
|
||||||
if (isSuccess) {
|
if (isSuccess) {
|
||||||
bool res = await ref
|
await ref
|
||||||
.read(authenticationProvider.notifier)
|
.read(authenticationProvider.notifier)
|
||||||
.logout();
|
.logout();
|
||||||
|
|
||||||
if (res) {
|
ref.read(backupProvider.notifier).cancelBackup();
|
||||||
ref.read(backupProvider.notifier).cancelBackup();
|
ref.read(assetProvider.notifier).clearAllAsset();
|
||||||
ref.read(assetProvider.notifier).clearAllAsset();
|
ref.read(websocketProvider.notifier).disconnect();
|
||||||
ref.read(websocketProvider.notifier).disconnect();
|
|
||||||
|
|
||||||
AutoRouter.of(context)
|
AutoRouter.of(context).replace(const LoginRoute());
|
||||||
.replace(const LoginRoute());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user