diff --git a/lib/routing/app_router.dart b/lib/routing/app_router.dart index 0f86d0b0..037a1efc 100644 --- a/lib/routing/app_router.dart +++ b/lib/routing/app_router.dart @@ -33,20 +33,21 @@ final appRouterProvider = Provider((ref) { refreshListenable: notifier, redirect: (context, state) { final authState = ref.read(authStateChangesProvider); - final session = authState.when( - data: (state) => state.session, - loading: () => ref.read(sessionProvider), - error: (error, _) => ref.read(sessionProvider), - ); + var session; + if (authState is AsyncData) { + final state = authState.value; + session = state?.session; + } else { + session = ref.read(sessionProvider); + } final isAuthRoute = state.fullPath == '/login' || state.fullPath == '/signup'; final isSignedIn = session != null; final profileAsync = ref.read(currentProfileProvider); final isAdminRoute = state.matchedLocation.startsWith('/settings'); - final isAdmin = profileAsync.maybeWhen( - data: (profile) => profile?.role == 'admin', - orElse: () => false, - ); + final isAdmin = profileAsync is AsyncData + ? (profileAsync.value)?.role == 'admin' + : false; if (!isSignedIn && !isAuthRoute) { return '/login'; @@ -161,17 +162,14 @@ class RouterNotifier extends ChangeNotifier { RouterNotifier(this.ref) { _authSub = ref.listen(authStateChangesProvider, (previous, next) { // Enforce auth-level ban when a session becomes available. - next.when( - data: (authState) { - final session = authState.session; - if (session != null) { - // Fire-and-forget enforcement (best-effort client-side sign-out) - enforceLockForCurrentUser(ref.read(supabaseClientProvider)); - } - }, - loading: () {}, - error: (error, _) {}, - ); + if (next is AsyncData) { + final authState = next.value; + final session = authState?.session; + if (session != null) { + // Fire-and-forget enforcement (best-effort client-side sign-out) + enforceLockForCurrentUser(ref.read(supabaseClientProvider)); + } + } notifyListeners(); }); _profileSub = ref.listen(currentProfileProvider, (previous, next) {