Fixed no such method error
This commit is contained in:
parent
d3239d8c76
commit
1ce38618f6
|
|
@ -33,20 +33,21 @@ final appRouterProvider = Provider<GoRouter>((ref) {
|
||||||
refreshListenable: notifier,
|
refreshListenable: notifier,
|
||||||
redirect: (context, state) {
|
redirect: (context, state) {
|
||||||
final authState = ref.read(authStateChangesProvider);
|
final authState = ref.read(authStateChangesProvider);
|
||||||
final session = authState.when(
|
var session;
|
||||||
data: (state) => state.session,
|
if (authState is AsyncData) {
|
||||||
loading: () => ref.read(sessionProvider),
|
final state = authState.value;
|
||||||
error: (error, _) => ref.read(sessionProvider),
|
session = state?.session;
|
||||||
);
|
} else {
|
||||||
|
session = ref.read(sessionProvider);
|
||||||
|
}
|
||||||
final isAuthRoute =
|
final isAuthRoute =
|
||||||
state.fullPath == '/login' || state.fullPath == '/signup';
|
state.fullPath == '/login' || state.fullPath == '/signup';
|
||||||
final isSignedIn = session != null;
|
final isSignedIn = session != null;
|
||||||
final profileAsync = ref.read(currentProfileProvider);
|
final profileAsync = ref.read(currentProfileProvider);
|
||||||
final isAdminRoute = state.matchedLocation.startsWith('/settings');
|
final isAdminRoute = state.matchedLocation.startsWith('/settings');
|
||||||
final isAdmin = profileAsync.maybeWhen(
|
final isAdmin = profileAsync is AsyncData
|
||||||
data: (profile) => profile?.role == 'admin',
|
? (profileAsync.value)?.role == 'admin'
|
||||||
orElse: () => false,
|
: false;
|
||||||
);
|
|
||||||
|
|
||||||
if (!isSignedIn && !isAuthRoute) {
|
if (!isSignedIn && !isAuthRoute) {
|
||||||
return '/login';
|
return '/login';
|
||||||
|
|
@ -161,17 +162,14 @@ class RouterNotifier extends ChangeNotifier {
|
||||||
RouterNotifier(this.ref) {
|
RouterNotifier(this.ref) {
|
||||||
_authSub = ref.listen(authStateChangesProvider, (previous, next) {
|
_authSub = ref.listen(authStateChangesProvider, (previous, next) {
|
||||||
// Enforce auth-level ban when a session becomes available.
|
// Enforce auth-level ban when a session becomes available.
|
||||||
next.when(
|
if (next is AsyncData) {
|
||||||
data: (authState) {
|
final authState = next.value;
|
||||||
final session = authState.session;
|
final session = authState?.session;
|
||||||
if (session != null) {
|
if (session != null) {
|
||||||
// Fire-and-forget enforcement (best-effort client-side sign-out)
|
// Fire-and-forget enforcement (best-effort client-side sign-out)
|
||||||
enforceLockForCurrentUser(ref.read(supabaseClientProvider));
|
enforceLockForCurrentUser(ref.read(supabaseClientProvider));
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
loading: () {},
|
|
||||||
error: (error, _) {},
|
|
||||||
);
|
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
});
|
});
|
||||||
_profileSub = ref.listen(currentProfileProvider, (previous, next) {
|
_profileSub = ref.listen(currentProfileProvider, (previous, next) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user