Quellcode durchsuchen

Handle session expiries gracefully

Vishnu vor 4 Jahren
Ursprung
Commit
1547c5499f
1 geänderte Dateien mit 18 neuen und 0 gelöschten Zeilen
  1. 18 0
      lib/services/user_service.dart

+ 18 - 0
lib/services/user_service.dart

@@ -10,6 +10,7 @@ import 'package:photos/models/key_gen_result.dart';
 import 'package:photos/models/public_key.dart';
 import 'package:photos/models/set_keys_request.dart';
 import 'package:photos/models/set_recovery_key_request.dart';
+import 'package:photos/ui/login_page.dart';
 import 'package:photos/ui/ott_verification_page.dart';
 import 'package:photos/ui/password_entry_page.dart';
 import 'package:photos/ui/password_reentry_page.dart';
@@ -226,6 +227,23 @@ class UserService {
         showErrorDialog(
             context, "oops", "authentication failed, please try again");
       }
+    } on DioError catch (e) {
+      await dialog.hide();
+      _logger.severe(e);
+      if (e.response != null && e.response.statusCode == 404) {
+        showToast("session expired");
+        Navigator.of(context).pushAndRemoveUntil(
+          MaterialPageRoute(
+            builder: (BuildContext context) {
+              return LoginPage();
+            },
+          ),
+          (route) => route.isFirst,
+        );
+      } else {
+        showErrorDialog(context, "incorrect code",
+            "authentication failed, please try again");
+      }
     } catch (e) {
       await dialog.hide();
       _logger.severe(e);