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
- SELF HOSTING ISSUE, DATA NOT MIGRATING T...
Hey, devs, I recently tried to migrate my cloud instance to a self hosted version but my data is not transferred fully only the table structure is transferred ...
- No Document ID?
Hi I have a self hosted appwrite. My documents get a document ID but are not visible in the console. I don't know why this happens and how to fix this
- AppwriteException: Invalid query: Query ...
```js console.log(typeof interaction.user.id) console.log(interaction.user.id) const user_check = await TablesDB.listRows({ databaseId: "db", ...