getUserModel method

Future<UserModel?> getUserModel()

The UserModel currently stored in secure storage, or null if absent, empty, or corrupted.

Corrupted data is cleared automatically to prevent repeated failures.

Implementation

Future<UserModel?> getUserModel() async {
  try {
    final String? raw = await storage.read(key: _userModelKey);

    if (raw == null || raw.isEmpty) return null;

    final Object? decoded = json.decode(raw);

    if (decoded is! Map<String, dynamic>) {
      await deleteUserModelData();
      return null;
    }

    final UserModel? userModel = UserModel.tryFromJson(decoded);

    if (userModel == null || userModel.isEmpty) {
      await deleteUserModelData();
      return null;
    }

    return userModel;
  } catch (e, st) {
    getIt<AppLogger>().warn(
      '[SecureStorage] Failed to read user model. Clearing stored user model.',
      error: e,
      stackTrace: st,
      extras: const <String, Object?>{'key': '_userModelKey', 'source': 'SecureStorage.getUserModel'},
    );
    await deleteUserModelData();
    return null;
  }
}