Rank 3: Container
Hello All,
I have a question about the best practice on when to fetch some data related to the authenticated user. I have a user data collection which stores users address and some settings used through out the app. When the app loads i check for auth and then i need to get the data. I have a redirect set up in the router which will detect any changes in auth and go to the correct route.
authenticated, unauthenticated,}
final authController = StateNotifierProvider<AuthProvider, AuthStatus>((ref) => AuthProvider(ref));
class AuthProvider extends StateNotifier<AuthStatus> { AuthProvider(this.ref) : super(AuthStatus.unauthenticated); final Ref ref;
late User _currentUser;
User get currentUser => _currentUser;
Future<AuthStatus> getUser() async { final account = ref.read(appwriteAccountProvider);
try { final user = await account.get(); _currentUser = user; state = AuthStatus.authenticated;
///// Should I get the data here?? ////
return AuthStatus.authenticated; } on AppwriteException catch (e) { state = AuthStatus.unauthenticated;
return AuthStatus.unauthenticated; } }}```
```redirect: (context, state) async { final auth = await ref.read(authController.notifier).getUser();
final bool loggingIn = state.matchedLocation == '/signin';
final isGoingSignUp = state.matchedLocation == '/signup';
if (auth == AuthStatus.unauthenticated) { return '/signin'; }
if (isGoingSignUp && auth == AuthStatus.authenticated) { return '/'; }
if (loggingIn) { return '/'; } /// User is authenticated goto destination return null; }```