getAuthTokenModel method

Future<AuthTokenModel?> getAuthTokenModel()

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

Parses stored JSON with convert: false because the timestamps are already absolute millisecond values (written by setAuthTokenModel). Corrupted data is cleared automatically to prevent repeated failures.

Implementation

Future<AuthTokenModel?> getAuthTokenModel() async {
  try {
    final String? raw = await storage.read(key: _keyTokens);

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

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

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

    final AuthTokenModel? token = AuthTokenModel.tryFromJson(decoded, convert: false);

    if (token == null || token.isEmpty) {
      await deleteAuthTokenModelData();
      return null;
    }

    return token;
  } catch (e, st) {
    getIt<AppLogger>().warn(
      '[SecureStorage] Failed to read auth token. Clearing stored token.',
      error: e,
      stackTrace: st,
      extras: const <String, Object?>{'key': 'key_tokens', 'source': 'SecureStorage.getAuthTokenModel'},
    );
    await deleteAuthTokenModelData();
    return null;
  }
}