#When to load user's Data after auth

2 messages · Page 1 of 1 (latest)

magic breach
#

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;
        }```
stark edge