mirror of
https://github.com/immich-app/immich
synced 2025-11-07 17:27:20 +00:00
feat(mobile) - Add better offline support (#3279)
* WIP: Adding init support for offline-loading * WIP: found bug and fixed with offline browing adv setting * WIP: big some bugs with first login * WIP: static analysis fixes * PR: Removed setting for offline browing * PR: static analysis - remove imports * PR: Refactored user login state * PR: changed logger log level as it happens a lot * PR: change log var to _log * PR: addressing comments * WIP: bug fixes * WIP: static analysis on the logger variable
This commit is contained in:
parent
afb0d0f54d
commit
fe9ef1a3ea
5 changed files with 126 additions and 32 deletions
|
|
@ -4,29 +4,40 @@ import 'package:auto_route/auto_route.dart';
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/shared/services/api.service.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:openapi/api.dart';
|
||||
|
||||
class AuthGuard extends AutoRouteGuard {
|
||||
final ApiService _apiService;
|
||||
final _log = Logger("AuthGuard");
|
||||
AuthGuard(this._apiService);
|
||||
@override
|
||||
void onNavigation(NavigationResolver resolver, StackRouter router) async {
|
||||
|
||||
resolver.next(true);
|
||||
|
||||
try {
|
||||
var res = await _apiService.authenticationApi.validateAccessToken();
|
||||
if (res != null && res.authStatus) {
|
||||
resolver.next(true);
|
||||
} else {
|
||||
if (res == null || res.authStatus != true) {
|
||||
// If the access token is invalid, take user back to login
|
||||
_log.fine("User token is invalid. Redirecting to login");
|
||||
router.replaceAll([const LoginRoute()]);
|
||||
}
|
||||
} on ApiException catch (e) {
|
||||
if (e.code == HttpStatus.badRequest &&
|
||||
e.innerException is SocketException) {
|
||||
// offline?
|
||||
resolver.next(true);
|
||||
_log.fine(
|
||||
"Unable to validate user token. User may be offline and offline browsing is allowed.",
|
||||
);
|
||||
} else {
|
||||
debugPrint("Error [onNavigation] ${e.toString()}");
|
||||
router.replaceAll([const LoginRoute()]);
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
debugPrint("Error [onNavigation] ${e.toString()}");
|
||||
router.replaceAll([const LoginRoute()]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue