login method

Future<DisplayUser?> login(
  1. User user
)

login a User by checking if he exists in the remote database

Implementation

Future<DisplayUser?> login(User user) async {
  if (await isUserLoggedIn(user)) return this.user;
  try {
    final loggedInUser = await remote.login(user);
    debugPrint(
        'API.login: logged in as KZL=${loggedInUser?.name}, Def_Login_ID=${loggedInUser?.defLoginId}');
    _user = loggedInUser;
    remote.injectUser(loggedInUser);
    await loggedInUser!.store();
    await _seedLoginUsersCacheWithCurrentUser(loggedInUser);
    await refreshLoginUsersCache();
    final cachedUsers = await _readStoredLoginUsers();
    debugPrint('Login users cache after login: ${cachedUsers.length}');
    return this.user;
  } catch (e) {
    logout();
    rethrow;
  }
}