Fixed no such method error

This commit is contained in:
Marc Rejohn Castillano 2026-02-28 21:51:57 +08:00
parent d3239d8c76
commit 1ce38618f6

View File

@ -33,20 +33,21 @@ final appRouterProvider = Provider<GoRouter>((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) {