diff --git a/lib/features/login/domain/usecases/get_token_oidc_interactor.dart b/lib/features/login/domain/usecases/get_token_oidc_interactor.dart index 0e956cf2c..9cee86c06 100644 --- a/lib/features/login/domain/usecases/get_token_oidc_interactor.dart +++ b/lib/features/login/domain/usecases/get_token_oidc_interactor.dart @@ -1,21 +1,43 @@ import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; +import 'package:model/account/account.dart'; +import 'package:model/account/authentication_type.dart'; +import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart'; import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart'; +import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart'; import 'package:tmail_ui_user/features/login/domain/state/get_token_oidc_state.dart'; class GetTokenOIDCInteractor { final AuthenticationOIDCRepository authenticationOIDCRepository; + final AccountRepository _accountRepository; + final CredentialRepository _credentialRepository; - GetTokenOIDCInteractor(this.authenticationOIDCRepository); + GetTokenOIDCInteractor(this._credentialRepository, this.authenticationOIDCRepository, this._accountRepository); - Future> execute(String clientId, String redirectUrl, - String discoveryUrl, List scopes) async { + Future> execute( + Uri baseUrl, + String clientId, + String redirectUrl, + String discoveryUrl, + List scopes + ) async { try { - final tokenOIDC = await authenticationOIDCRepository.getTokenOIDC(clientId, redirectUrl, discoveryUrl, scopes); + log('GetTokenOIDCInteractor::execute(): baseUrl: $baseUrl'); + final tokenOIDC = await authenticationOIDCRepository + .getTokenOIDC(clientId, redirectUrl, discoveryUrl, scopes); + await Future.wait([ + _credentialRepository.saveBaseUrl(baseUrl), + _accountRepository.setCurrentAccount(Account( + tokenOIDC.tokenId.hashCode.toString(), + AuthenticationType.oidc, + isSelected: true)), + authenticationOIDCRepository.persistTokenOIDC(tokenOIDC) + ]); return Right(GetTokenOIDCSuccess(tokenOIDC)); } catch (e) { + logError('GetTokenOIDCInteractor::execute(): $e'); return Left(GetTokenOIDCFailure(e)); } }