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;
}```
Sure you can get the user data there since the authProvider is for the user. It contains data about the user and you're fetching data about the user so it makes sense.
If you're fetching some other data that belongs to the user, I would do that elsewhere.
Perfect! thats what i thought. Thanks.
Recommended threads
- New attribute stuck on processing?
I was running out of disk space and after creating an attribute and restarting my appwrite (self hosted) I have an attribute stuck on creation. Any way to remov...
- CORS error only on tables db api After u...
I've recently updated my self hosted appwrite instance to the 1.8.0 and updated my frontend with the tables db apis but strangely, even if I'm able to log in, g...
- Bug: When creating a table, table name i...
I created a table with a typo. my_taable .... then my code couldn't find it. i updated table name and still couldn't find it. the table name doesn't update. i h...