瀏覽代碼

Handle session expiries gracefully

Vishnu 4 年之前
父節點
當前提交
1547c5499f
共有 1 個文件被更改,包括 18 次插入0 次删除
  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/public_key.dart';
 import 'package:photos/models/set_keys_request.dart';
 import 'package:photos/models/set_keys_request.dart';
 import 'package:photos/models/set_recovery_key_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/ott_verification_page.dart';
 import 'package:photos/ui/password_entry_page.dart';
 import 'package:photos/ui/password_entry_page.dart';
 import 'package:photos/ui/password_reentry_page.dart';
 import 'package:photos/ui/password_reentry_page.dart';
@@ -226,6 +227,23 @@ class UserService {
         showErrorDialog(
         showErrorDialog(
             context, "oops", "authentication failed, please try again");
             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) {
     } catch (e) {
       await dialog.hide();
       await dialog.hide();
       _logger.severe(e);
       _logger.severe(e);