TF-571 Implement AuthenticationOIDC repository with Hive

This commit is contained in:
Dat PHAM HOANG
2022-05-31 14:29:30 +07:00
committed by Dat H. Pham
parent 03777be4a8
commit 471465e1bc
8 changed files with 246 additions and 1 deletions
@@ -0,0 +1,33 @@
import 'package:core/utils/app_logger.dart';
import 'package:model/oidc/token_oidc.dart';
import 'package:tmail_ui_user/features/caching/token_oidc_cache_client.dart';
import 'package:tmail_ui_user/features/login/data/extensions/token_oidc_cache_extension.dart';
import 'package:tmail_ui_user/features/login/data/extensions/token_oidc_extension.dart';
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
class TokenOidcCacheManager {
final TokenOidcCacheClient _tokenOidcCacheClient;
TokenOidcCacheManager(this._tokenOidcCacheClient);
Future<TokenOIDC> getTokenOidc(String tokenIdHash) async {
final tokenCache = await _tokenOidcCacheClient.getItem(tokenIdHash);
if (tokenCache == null) {
throw NotFoundStoredTokenException();
} else {
return tokenCache.toTokenOidc();
}
}
Future<void> persistOneTokenOidc(TokenOIDC tokenOIDC) async {
log('TokenOidcCacheManager::persistOneTokenOidc(): $tokenOIDC');
final emailCacheExist = await _tokenOidcCacheClient.isExistTable();
if (emailCacheExist) {
await _tokenOidcCacheClient.clearAllData();
}
log('TokenOidcCacheManager::persistOneTokenOidc(): key: ${tokenOIDC.tokenId.uuid}');
log('TokenOidcCacheManager::persistOneTokenOidc(): key\'s hash: ${tokenOIDC.tokenId.hashCode.toString()}');
log('TokenOidcCacheManager::persistOneTokenOidc(): token: ${tokenOIDC.token}');
await _tokenOidcCacheClient.insertItem(tokenOIDC.tokenId.hashCode.toString(), tokenOIDC.toTokenOidcCache());
}
}