From 9fd5b7c03f5c0bd43944c3d8d5b6e0061a4f1697 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Sat, 22 Mar 2025 09:50:24 -0500 Subject: [PATCH] clear mount list on login failure --- web/repertory/lib/models/auth.dart | 3 +++ web/repertory/lib/models/mount_list.dart | 9 +++++++-- web/repertory/lib/screens/edit_mount_screen.dart | 1 - 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/web/repertory/lib/models/auth.dart b/web/repertory/lib/models/auth.dart index e9af0c6e..290534c1 100644 --- a/web/repertory/lib/models/auth.dart +++ b/web/repertory/lib/models/auth.dart @@ -5,12 +5,14 @@ import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'package:repertory/constants.dart' as constants; import 'package:repertory/helpers.dart'; +import 'package:repertory/models/mount_list.dart'; import 'package:sodium_libs/sodium_libs.dart'; class Auth with ChangeNotifier { bool _authenticated = false; SecureKey _key = SecureKey.random(constants.sodium, 32); String _user = ""; + MountList? mountList; bool get authenticated => _authenticated; SecureKey get key => _key; @@ -53,6 +55,7 @@ class Auth with ChangeNotifier { void logoff() { _authenticated = false; _user = ""; + mountList?.clear(); notifyListeners(); } diff --git a/web/repertory/lib/models/mount_list.dart b/web/repertory/lib/models/mount_list.dart index 076de389..2b6f2745 100644 --- a/web/repertory/lib/models/mount_list.dart +++ b/web/repertory/lib/models/mount_list.dart @@ -14,6 +14,7 @@ class MountList with ChangeNotifier { final Auth _auth; MountList(this._auth) { + _auth.mountList = this; _auth.addListener(() { if (_auth.authenticated) { _fetch(); @@ -166,6 +167,11 @@ class MountList with ChangeNotifier { return ret; } + void clear() { + _mountList = []; + notifyListeners(); + } + Future reset() async { if (constants.navigatorKey.currentContext == null || ModalRoute.of(constants.navigatorKey.currentContext!)?.settings.name != @@ -178,8 +184,7 @@ class MountList with ChangeNotifier { 'Mount removed externally. Reloading...', ); - _mountList = []; - notifyListeners(); + clear(); return _fetch(); } diff --git a/web/repertory/lib/screens/edit_mount_screen.dart b/web/repertory/lib/screens/edit_mount_screen.dart index a9adf1f7..33665576 100644 --- a/web/repertory/lib/screens/edit_mount_screen.dart +++ b/web/repertory/lib/screens/edit_mount_screen.dart @@ -2,7 +2,6 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:repertory/constants.dart' as constants; import 'package:repertory/models/auth.dart'; import 'package:repertory/models/mount.dart'; import 'package:repertory/widgets/mount_settings.dart';