TF-1317 Update authentication account to store AccountId
This commit is contained in:
@@ -19,6 +19,7 @@ import 'package:tmail_ui_user/features/login/domain/state/get_stored_token_oidc_
|
|||||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/presentation/login_form_type.dart';
|
import 'package:tmail_ui_user/features/login/presentation/login_form_type.dart';
|
||||||
import 'package:tmail_ui_user/features/login/presentation/model/login_arguments.dart';
|
import 'package:tmail_ui_user/features/login/presentation/model/login_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
|
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
|
||||||
@@ -50,6 +51,7 @@ abstract class ReloadableController extends BaseController {
|
|||||||
final LogoutOidcInteractor _logoutOidcInteractor;
|
final LogoutOidcInteractor _logoutOidcInteractor;
|
||||||
final DeleteAuthorityOidcInteractor _deleteAuthorityOidcInteractor;
|
final DeleteAuthorityOidcInteractor _deleteAuthorityOidcInteractor;
|
||||||
final GetAuthenticatedAccountInteractor _getAuthenticatedAccountInteractor;
|
final GetAuthenticatedAccountInteractor _getAuthenticatedAccountInteractor;
|
||||||
|
final UpdateAuthenticationAccountInteractor _updateAuthenticationAccountInteractor;
|
||||||
final _fcmReceiver = FcmReceiver.instance;
|
final _fcmReceiver = FcmReceiver.instance;
|
||||||
|
|
||||||
GetFCMSubscriptionLocalInteractor? _getSubscriptionLocalInteractor;
|
GetFCMSubscriptionLocalInteractor? _getSubscriptionLocalInteractor;
|
||||||
@@ -59,6 +61,7 @@ abstract class ReloadableController extends BaseController {
|
|||||||
this._logoutOidcInteractor,
|
this._logoutOidcInteractor,
|
||||||
this._deleteAuthorityOidcInteractor,
|
this._deleteAuthorityOidcInteractor,
|
||||||
this._getAuthenticatedAccountInteractor,
|
this._getAuthenticatedAccountInteractor,
|
||||||
|
this._updateAuthenticationAccountInteractor
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -158,6 +161,7 @@ abstract class ReloadableController extends BaseController {
|
|||||||
final apiUrl = success.session.apiUrl.toString();
|
final apiUrl = success.session.apiUrl.toString();
|
||||||
if (apiUrl.isNotEmpty) {
|
if (apiUrl.isNotEmpty) {
|
||||||
_dynamicUrlInterceptors.changeBaseUrl(apiUrl);
|
_dynamicUrlInterceptors.changeBaseUrl(apiUrl);
|
||||||
|
updateAuthenticationAccount(success.session, success.session.accounts.keys.first);
|
||||||
handleReloaded(success.session);
|
handleReloaded(success.session);
|
||||||
} else {
|
} else {
|
||||||
_handleGetSessionFailure();
|
_handleGetSessionFailure();
|
||||||
@@ -276,4 +280,12 @@ abstract class ReloadableController extends BaseController {
|
|||||||
logoutAction();
|
logoutAction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void updateAuthenticationAccount(Session? session, AccountId? accountId) {
|
||||||
|
final apiUrl = session?.apiUrl.toString() ?? '';
|
||||||
|
log('ReloadableController::updateAuthenticationAccount():apiUrl: $apiUrl');
|
||||||
|
if (accountId != null && apiUrl.isNotEmpty) {
|
||||||
|
consumeState(_updateAuthenticationAccountInteractor.execute(accountId, apiUrl));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -96,9 +96,12 @@ class DownloadAttachmentsInteractor {
|
|||||||
_authenticationOIDCRepository.persistTokenOIDC(newTokenOIDC),
|
_authenticationOIDCRepository.persistTokenOIDC(newTokenOIDC),
|
||||||
_accountRepository.deleteCurrentAccount(accountCurrent.id),
|
_accountRepository.deleteCurrentAccount(accountCurrent.id),
|
||||||
_accountRepository.setCurrentAccount(Account(
|
_accountRepository.setCurrentAccount(Account(
|
||||||
newTokenOIDC.tokenIdHash,
|
newTokenOIDC.tokenIdHash,
|
||||||
AuthenticationType.oidc,
|
AuthenticationType.oidc,
|
||||||
isSelected: true))
|
isSelected: true,
|
||||||
|
accountId: accountId,
|
||||||
|
apiUrl: accountCurrent.apiUrl
|
||||||
|
))
|
||||||
]);
|
]);
|
||||||
|
|
||||||
_authorizationInterceptors.setTokenAndAuthorityOidc(
|
_authorizationInterceptors.setTokenAndAuthorityOidc(
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc
|
|||||||
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.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/authentication_oidc_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
|
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/refresh_token_oidc_interactor.dart';
|
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/state_datasource.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/datasource/state_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart';
|
||||||
@@ -136,10 +135,6 @@ class EmailBindings extends BaseBindings {
|
|||||||
Get.find<CredentialRepository>(),
|
Get.find<CredentialRepository>(),
|
||||||
Get.find<AccountRepository>(),
|
Get.find<AccountRepository>(),
|
||||||
Get.find<AuthenticationOIDCRepository>()));
|
Get.find<AuthenticationOIDCRepository>()));
|
||||||
Get.lazyPut(() => RefreshTokenOIDCInteractor(
|
|
||||||
Get.find<AuthenticationOIDCRepository>(),
|
|
||||||
Get.find<AccountRepository>(),
|
|
||||||
));
|
|
||||||
Get.lazyPut(() => GetStoredEmailStateInteractor(Get.find<EmailRepository>()));
|
Get.lazyPut(() => GetStoredEmailStateInteractor(Get.find<EmailRepository>()));
|
||||||
IdentityInteractorsBindings().dependencies();
|
IdentityInteractorsBindings().dependencies();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||||
import 'package:model/account/account.dart';
|
import 'package:model/account/account.dart';
|
||||||
import 'package:model/account/authentication_type.dart';
|
import 'package:model/account/authentication_type.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/model/account_cache.dart';
|
import 'package:tmail_ui_user/features/login/data/model/account_cache.dart';
|
||||||
@@ -15,6 +17,12 @@ extension AccountCacheExtension on AccountCache {
|
|||||||
|
|
||||||
Account toAccount() {
|
Account toAccount() {
|
||||||
final authenticationType = fromAuthenticationTypeString();
|
final authenticationType = fromAuthenticationTypeString();
|
||||||
return Account(id, authenticationType, isSelected: isSelected);
|
return Account(
|
||||||
|
id,
|
||||||
|
authenticationType,
|
||||||
|
isSelected: isSelected,
|
||||||
|
accountId: accountId != null ? AccountId(Id(accountId!)) : null,
|
||||||
|
apiUrl: apiUrl
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,12 @@ import 'package:tmail_ui_user/features/login/data/model/account_cache.dart';
|
|||||||
|
|
||||||
extension AccountExtensions on Account {
|
extension AccountExtensions on Account {
|
||||||
AccountCache toCache() {
|
AccountCache toCache() {
|
||||||
return AccountCache(id, authenticationType.asString(), isSelected: isSelected);
|
return AccountCache(
|
||||||
|
id,
|
||||||
|
authenticationType.asString(),
|
||||||
|
isSelected: isSelected,
|
||||||
|
accountId: accountId?.id.value,
|
||||||
|
apiUrl: apiUrl
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,8 +15,28 @@ class AccountCache extends HiveObject with EquatableMixin {
|
|||||||
@HiveField(2)
|
@HiveField(2)
|
||||||
final bool isSelected;
|
final bool isSelected;
|
||||||
|
|
||||||
AccountCache(this.id, this.authenticationType, {required this.isSelected});
|
@HiveField(3)
|
||||||
|
final String? accountId;
|
||||||
|
|
||||||
|
@HiveField(4)
|
||||||
|
final String? apiUrl;
|
||||||
|
|
||||||
|
AccountCache(
|
||||||
|
this.id,
|
||||||
|
this.authenticationType,
|
||||||
|
{
|
||||||
|
required this.isSelected,
|
||||||
|
this.accountId,
|
||||||
|
this.apiUrl
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object?> get props => [id, authenticationType, isSelected];
|
List<Object?> get props => [
|
||||||
|
id,
|
||||||
|
authenticationType,
|
||||||
|
isSelected,
|
||||||
|
accountId,
|
||||||
|
apiUrl
|
||||||
|
];
|
||||||
}
|
}
|
||||||
@@ -88,13 +88,18 @@ class AuthorizationInterceptors extends InterceptorsWrapper {
|
|||||||
_configOIDC!.scopes,
|
_configOIDC!.scopes,
|
||||||
_token!.refreshToken);
|
_token!.refreshToken);
|
||||||
|
|
||||||
|
final accountCurrent = await _accountCacheManager.getSelectedAccount();
|
||||||
|
|
||||||
await Future.wait([
|
await Future.wait([
|
||||||
_tokenOidcCacheManager.persistOneTokenOidc(newToken),
|
_tokenOidcCacheManager.persistOneTokenOidc(newToken),
|
||||||
_accountCacheManager.deleteSelectedAccount(_token!.tokenIdHash),
|
_accountCacheManager.deleteSelectedAccount(_token!.tokenIdHash),
|
||||||
_accountCacheManager.setSelectedAccount(Account(
|
_accountCacheManager.setSelectedAccount(Account(
|
||||||
newToken.tokenIdHash,
|
newToken.tokenIdHash,
|
||||||
AuthenticationType.oidc,
|
AuthenticationType.oidc,
|
||||||
isSelected: true)),
|
isSelected: true,
|
||||||
|
accountId: accountCurrent.accountId,
|
||||||
|
apiUrl: accountCurrent.apiUrl
|
||||||
|
)),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
log('AuthorizationInterceptors::onError(): refreshToken: $newToken');
|
log('AuthorizationInterceptors::onError(): refreshToken: $newToken');
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import 'package:core/presentation/state/failure.dart';
|
||||||
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
|
||||||
|
class UpdateAuthenticationAccountLoading extends LoadingState {}
|
||||||
|
|
||||||
|
class UpdateAuthenticationAccountSuccess extends UIState {
|
||||||
|
|
||||||
|
UpdateAuthenticationAccountSuccess();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateAuthenticationAccountFailure extends FeatureFailure {
|
||||||
|
final dynamic exception;
|
||||||
|
|
||||||
|
UpdateAuthenticationAccountFailure(this.exception);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [exception];
|
||||||
|
}
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
|
|
||||||
import 'package:core/core.dart';
|
|
||||||
import 'package:dartz/dartz.dart';
|
|
||||||
import 'package:model/model.dart';
|
|
||||||
import 'package:tmail_ui_user/features/login/domain/extensions/oidc_configuration_extensions.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/state/refresh_token_oidc_state.dart';
|
|
||||||
|
|
||||||
class RefreshTokenOIDCInteractor {
|
|
||||||
|
|
||||||
final AuthenticationOIDCRepository authenticationOIDCRepository;
|
|
||||||
final AccountRepository _accountRepository;
|
|
||||||
|
|
||||||
RefreshTokenOIDCInteractor(this.authenticationOIDCRepository, this._accountRepository);
|
|
||||||
|
|
||||||
Future<Either<Failure, Success>> execute(
|
|
||||||
OIDCConfiguration config,
|
|
||||||
String refreshToken) async {
|
|
||||||
try {
|
|
||||||
final newTokenOIDC = await authenticationOIDCRepository.refreshingTokensOIDC(
|
|
||||||
config.clientId,
|
|
||||||
config.redirectUrl,
|
|
||||||
config.discoveryUrl,
|
|
||||||
config.scopes,
|
|
||||||
refreshToken);
|
|
||||||
|
|
||||||
await Future.wait([
|
|
||||||
_accountRepository.setCurrentAccount(Account(
|
|
||||||
newTokenOIDC.tokenId.hashCode.toString(),
|
|
||||||
AuthenticationType.oidc,
|
|
||||||
isSelected: true)),
|
|
||||||
authenticationOIDCRepository.persistTokenOIDC(newTokenOIDC),
|
|
||||||
]);
|
|
||||||
return Right<Failure, Success>(RefreshTokenOIDCSuccess(newTokenOIDC));
|
|
||||||
} catch (e) {
|
|
||||||
logError('RefreshTokenOIDCInteractor::execute(): $e');
|
|
||||||
return Left<Failure, Success>(RefreshTokenOIDCFailure(e));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
import 'package:core/presentation/state/failure.dart';
|
||||||
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
import 'package:dartz/dartz.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
|
import 'package:model/extensions/account_extension.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/state/update_authentication_account_state.dart';
|
||||||
|
|
||||||
|
class UpdateAuthenticationAccountInteractor {
|
||||||
|
final AccountRepository _accountRepository;
|
||||||
|
|
||||||
|
UpdateAuthenticationAccountInteractor(this._accountRepository);
|
||||||
|
|
||||||
|
Stream<Either<Failure, Success>> execute(AccountId accountId, String apiUrl) async* {
|
||||||
|
try{
|
||||||
|
yield Right(UpdateAuthenticationAccountLoading());
|
||||||
|
final currentAccount = await _accountRepository.getCurrentAccount();
|
||||||
|
await _accountRepository.setCurrentAccount(currentAccount.fromAccountId(
|
||||||
|
accountId: accountId,
|
||||||
|
apiUrl: apiUrl
|
||||||
|
));
|
||||||
|
yield Right(UpdateAuthenticationAccountSuccess());
|
||||||
|
} catch(e) {
|
||||||
|
yield Left(UpdateAuthenticationAccountFailure(e));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -46,6 +46,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oi
|
|||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_token_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_token_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_url_on_mobile_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_url_on_mobile_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/presentation/login_controller.dart';
|
import 'package:tmail_ui_user/features/login/presentation/login_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
|
import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
|
||||||
@@ -60,6 +61,7 @@ class LoginBindings extends BaseBindings {
|
|||||||
Get.find<LogoutOidcInteractor>(),
|
Get.find<LogoutOidcInteractor>(),
|
||||||
Get.find<DeleteAuthorityOidcInteractor>(),
|
Get.find<DeleteAuthorityOidcInteractor>(),
|
||||||
Get.find<GetAuthenticatedAccountInteractor>(),
|
Get.find<GetAuthenticatedAccountInteractor>(),
|
||||||
|
Get.find<UpdateAuthenticationAccountInteractor>(),
|
||||||
Get.find<AuthenticationInteractor>(),
|
Get.find<AuthenticationInteractor>(),
|
||||||
Get.find<DynamicUrlInterceptors>(),
|
Get.find<DynamicUrlInterceptors>(),
|
||||||
Get.find<AuthorizationInterceptors>(),
|
Get.find<AuthorizationInterceptors>(),
|
||||||
@@ -166,6 +168,7 @@ class LoginBindings extends BaseBindings {
|
|||||||
Get.lazyPut(() => GetAllRecentLoginUsernameOnMobileInteractor(
|
Get.lazyPut(() => GetAllRecentLoginUsernameOnMobileInteractor(
|
||||||
Get.find<LoginUsernameRepository>()
|
Get.find<LoginUsernameRepository>()
|
||||||
));
|
));
|
||||||
|
Get.lazyPut(() => UpdateAuthenticationAccountInteractor(Get.find<AccountRepository>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_oidc_con
|
|||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_token_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_token_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_url_on_mobile_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_url_on_mobile_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/presentation/login_form_type.dart';
|
import 'package:tmail_ui_user/features/login/presentation/login_form_type.dart';
|
||||||
import 'package:tmail_ui_user/features/login/presentation/model/login_arguments.dart';
|
import 'package:tmail_ui_user/features/login/presentation/model/login_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/login/presentation/state/login_state.dart';
|
import 'package:tmail_ui_user/features/login/presentation/state/login_state.dart';
|
||||||
@@ -81,6 +82,7 @@ class LoginController extends ReloadableController {
|
|||||||
LogoutOidcInteractor logoutOidcInteractor,
|
LogoutOidcInteractor logoutOidcInteractor,
|
||||||
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
|
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
|
||||||
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
||||||
|
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor,
|
||||||
this._authenticationInteractor,
|
this._authenticationInteractor,
|
||||||
this._dynamicUrlInterceptors,
|
this._dynamicUrlInterceptors,
|
||||||
this._authorizationInterceptors,
|
this._authorizationInterceptors,
|
||||||
@@ -96,9 +98,12 @@ class LoginController extends ReloadableController {
|
|||||||
this._getAllRecentLoginUrlOnMobileInteractor,
|
this._getAllRecentLoginUrlOnMobileInteractor,
|
||||||
this._saveLoginUsernameOnMobileInteractor,
|
this._saveLoginUsernameOnMobileInteractor,
|
||||||
this._getAllRecentLoginUsernameOnMobileInteractor,
|
this._getAllRecentLoginUsernameOnMobileInteractor,
|
||||||
) : super(logoutOidcInteractor,
|
) : super(
|
||||||
deleteAuthorityOidcInteractor,
|
logoutOidcInteractor,
|
||||||
getAuthenticatedAccountInteractor);
|
deleteAuthorityOidcInteractor,
|
||||||
|
getAuthenticatedAccountInteractor,
|
||||||
|
updateAuthenticationAccountInteractor
|
||||||
|
);
|
||||||
|
|
||||||
var loginState = LoginState(Right(LoginInitAction())).obs;
|
var loginState = LoginState(Right(LoginInitAction())).obs;
|
||||||
final loginFormType = LoginFormType.baseUrlForm.obs;
|
final loginFormType = LoginFormType.baseUrlForm.obs;
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oi
|
|||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/state_datasource.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/datasource/state_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart';
|
||||||
@@ -124,6 +125,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.find<LogoutOidcInteractor>(),
|
Get.find<LogoutOidcInteractor>(),
|
||||||
Get.find<DeleteAuthorityOidcInteractor>(),
|
Get.find<DeleteAuthorityOidcInteractor>(),
|
||||||
Get.find<GetAuthenticatedAccountInteractor>(),
|
Get.find<GetAuthenticatedAccountInteractor>(),
|
||||||
|
Get.find<UpdateAuthenticationAccountInteractor>(),
|
||||||
Get.find<MoveToMailboxInteractor>(),
|
Get.find<MoveToMailboxInteractor>(),
|
||||||
Get.find<DeleteEmailPermanentlyInteractor>(),
|
Get.find<DeleteEmailPermanentlyInteractor>(),
|
||||||
Get.find<MarkAsMailboxReadInteractor>(),
|
Get.find<MarkAsMailboxReadInteractor>(),
|
||||||
@@ -256,6 +258,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.find<AppConfigLoader>()));
|
Get.find<AppConfigLoader>()));
|
||||||
Get.lazyPut(() => GetEmailByIdInteractor(
|
Get.lazyPut(() => GetEmailByIdInteractor(
|
||||||
Get.find<ThreadRepository>()));
|
Get.find<ThreadRepository>()));
|
||||||
|
Get.lazyPut(() => UpdateAuthenticationAccountInteractor(Get.find<AccountRepository>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
+9
-3
@@ -42,6 +42,7 @@ import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action
|
|||||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart';
|
||||||
@@ -176,6 +177,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
LogoutOidcInteractor logoutOidcInteractor,
|
LogoutOidcInteractor logoutOidcInteractor,
|
||||||
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
|
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
|
||||||
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
||||||
|
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor,
|
||||||
this._moveToMailboxInteractor,
|
this._moveToMailboxInteractor,
|
||||||
this._deleteEmailPermanentlyInteractor,
|
this._deleteEmailPermanentlyInteractor,
|
||||||
this._markAsMailboxReadInteractor,
|
this._markAsMailboxReadInteractor,
|
||||||
@@ -188,9 +190,12 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
this._emptyTrashFolderInteractor,
|
this._emptyTrashFolderInteractor,
|
||||||
this._deleteMultipleEmailsPermanentlyInteractor,
|
this._deleteMultipleEmailsPermanentlyInteractor,
|
||||||
this._getEmailByIdInteractor,
|
this._getEmailByIdInteractor,
|
||||||
) : super(logoutOidcInteractor,
|
) : super(
|
||||||
deleteAuthorityOidcInteractor,
|
logoutOidcInteractor,
|
||||||
getAuthenticatedAccountInteractor);
|
deleteAuthorityOidcInteractor,
|
||||||
|
getAuthenticatedAccountInteractor,
|
||||||
|
updateAuthenticationAccountInteractor
|
||||||
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
@@ -405,6 +410,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
sessionCurrent = arguments;
|
sessionCurrent = arguments;
|
||||||
accountId.value = sessionCurrent?.accounts.keys.first;
|
accountId.value = sessionCurrent?.accounts.keys.first;
|
||||||
_getUserProfile();
|
_getUserProfile();
|
||||||
|
updateAuthenticationAccount(sessionCurrent, accountId.value);
|
||||||
injectAutoCompleteBindings(sessionCurrent, accountId.value);
|
injectAutoCompleteBindings(sessionCurrent, accountId.value);
|
||||||
injectRuleFilterBindings(sessionCurrent, accountId.value);
|
injectRuleFilterBindings(sessionCurrent, accountId.value);
|
||||||
injectVacationBindings(sessionCurrent, accountId.value);
|
injectVacationBindings(sessionCurrent, accountId.value);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oi
|
|||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart';
|
import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart';
|
import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
|
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
|
||||||
@@ -48,7 +49,8 @@ class ManageAccountDashBoardBindings extends BaseBindings {
|
|||||||
Get.lazyPut(() => ManageAccountDashBoardController(
|
Get.lazyPut(() => ManageAccountDashBoardController(
|
||||||
Get.find<LogoutOidcInteractor>(),
|
Get.find<LogoutOidcInteractor>(),
|
||||||
Get.find<DeleteAuthorityOidcInteractor>(),
|
Get.find<DeleteAuthorityOidcInteractor>(),
|
||||||
Get.find<GetAuthenticatedAccountInteractor>()
|
Get.find<GetAuthenticatedAccountInteractor>(),
|
||||||
|
Get.find<UpdateAuthenticationAccountInteractor>()
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,6 +96,7 @@ class ManageAccountDashBoardBindings extends BaseBindings {
|
|||||||
Get.find<GetCredentialInteractor>(),
|
Get.find<GetCredentialInteractor>(),
|
||||||
Get.find<GetStoredTokenOidcInteractor>(),
|
Get.find<GetStoredTokenOidcInteractor>(),
|
||||||
));
|
));
|
||||||
|
Get.lazyPut(() => UpdateAuthenticationAccountInteractor(Get.find<AccountRepository>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
|||||||
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart';
|
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_user_profile_state.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_user_profile_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/update_vacation_state.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/state/update_vacation_state.dart';
|
||||||
@@ -60,10 +61,13 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
LogoutOidcInteractor logoutOidcInteractor,
|
LogoutOidcInteractor logoutOidcInteractor,
|
||||||
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
|
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
|
||||||
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
||||||
|
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor
|
||||||
) : super(
|
) : super(
|
||||||
logoutOidcInteractor,
|
logoutOidcInteractor,
|
||||||
deleteAuthorityOidcInteractor,
|
deleteAuthorityOidcInteractor,
|
||||||
getAuthenticatedAccountInteractor);
|
getAuthenticatedAccountInteractor,
|
||||||
|
updateAuthenticationAccountInteractor
|
||||||
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_ex
|
|||||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/session/domain/state/get_session_state.dart';
|
import 'package:tmail_ui_user/features/session/domain/state/get_session_state.dart';
|
||||||
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart';
|
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart';
|
||||||
@@ -33,6 +34,7 @@ class SessionController extends ReloadableController {
|
|||||||
LogoutOidcInteractor logoutOidcInteractor,
|
LogoutOidcInteractor logoutOidcInteractor,
|
||||||
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
|
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
|
||||||
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
||||||
|
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor,
|
||||||
this._getSessionInteractor,
|
this._getSessionInteractor,
|
||||||
this._deleteCredentialInteractor,
|
this._deleteCredentialInteractor,
|
||||||
this._cachingManager,
|
this._cachingManager,
|
||||||
@@ -40,9 +42,12 @@ class SessionController extends ReloadableController {
|
|||||||
this._authorizationInterceptors,
|
this._authorizationInterceptors,
|
||||||
this._appToast,
|
this._appToast,
|
||||||
this._dynamicUrlInterceptors,
|
this._dynamicUrlInterceptors,
|
||||||
) : super(logoutOidcInteractor,
|
) : super(
|
||||||
deleteAuthorityOidcInteractor,
|
logoutOidcInteractor,
|
||||||
getAuthenticatedAccountInteractor);
|
deleteAuthorityOidcInteractor,
|
||||||
|
getAuthenticatedAccountInteractor,
|
||||||
|
updateAuthenticationAccountInteractor
|
||||||
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_i
|
|||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart';
|
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/session/presentation/session_controller.dart';
|
import 'package:tmail_ui_user/features/session/presentation/session_controller.dart';
|
||||||
@@ -37,6 +38,7 @@ class SessionPageBindings extends BaseBindings {
|
|||||||
Get.find<LogoutOidcInteractor>(),
|
Get.find<LogoutOidcInteractor>(),
|
||||||
Get.find<DeleteAuthorityOidcInteractor>(),
|
Get.find<DeleteAuthorityOidcInteractor>(),
|
||||||
Get.find<GetAuthenticatedAccountInteractor>(),
|
Get.find<GetAuthenticatedAccountInteractor>(),
|
||||||
|
Get.find<UpdateAuthenticationAccountInteractor>(),
|
||||||
Get.find<GetSessionInteractor>(),
|
Get.find<GetSessionInteractor>(),
|
||||||
Get.find<DeleteCredentialInteractor>(),
|
Get.find<DeleteCredentialInteractor>(),
|
||||||
Get.find<CachingManager>(),
|
Get.find<CachingManager>(),
|
||||||
@@ -85,6 +87,7 @@ class SessionPageBindings extends BaseBindings {
|
|||||||
Get.find<GetCredentialInteractor>(),
|
Get.find<GetCredentialInteractor>(),
|
||||||
Get.find<GetStoredTokenOidcInteractor>(),
|
Get.find<GetStoredTokenOidcInteractor>(),
|
||||||
));
|
));
|
||||||
|
Get.lazyPut(() => UpdateAuthenticationAccountInteractor(Get.find<AccountRepository>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -1,13 +1,30 @@
|
|||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:model/account/authentication_type.dart';
|
import 'package:model/account/authentication_type.dart';
|
||||||
|
|
||||||
class Account with EquatableMixin {
|
class Account with EquatableMixin {
|
||||||
final String id;
|
final String id;
|
||||||
final AuthenticationType authenticationType;
|
final AuthenticationType authenticationType;
|
||||||
final bool isSelected;
|
final bool isSelected;
|
||||||
|
final AccountId? accountId;
|
||||||
|
final String? apiUrl;
|
||||||
|
|
||||||
Account(this.id, this.authenticationType, {required this.isSelected});
|
Account(
|
||||||
|
this.id,
|
||||||
|
this.authenticationType,
|
||||||
|
{
|
||||||
|
required this.isSelected,
|
||||||
|
this.accountId,
|
||||||
|
this.apiUrl,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object?> get props => [id, authenticationType, isSelected];
|
List<Object?> get props => [
|
||||||
|
id,
|
||||||
|
authenticationType,
|
||||||
|
isSelected,
|
||||||
|
accountId,
|
||||||
|
apiUrl
|
||||||
|
];
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
|
import 'package:model/account/account.dart';
|
||||||
|
|
||||||
|
extension AccountExtension on Account {
|
||||||
|
|
||||||
|
Account fromAccountId({required AccountId accountId, required String apiUrl}) {
|
||||||
|
return Account(
|
||||||
|
id,
|
||||||
|
authenticationType,
|
||||||
|
isSelected: isSelected,
|
||||||
|
accountId: accountId,
|
||||||
|
apiUrl: apiUrl
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -52,6 +52,7 @@ export 'extensions/user_profile_extension.dart';
|
|||||||
export 'extensions/utc_date_extension.dart';
|
export 'extensions/utc_date_extension.dart';
|
||||||
export 'extensions/email_filter_condition_extension.dart';
|
export 'extensions/email_filter_condition_extension.dart';
|
||||||
export 'extensions/list_email_header_extension.dart';
|
export 'extensions/list_email_header_extension.dart';
|
||||||
|
export 'extensions/account_extension.dart';
|
||||||
// Identity
|
// Identity
|
||||||
export 'identity/identity_request_dto.dart';
|
export 'identity/identity_request_dto.dart';
|
||||||
export 'mailbox/expand_mode.dart';
|
export 'mailbox/expand_mode.dart';
|
||||||
|
|||||||
Reference in New Issue
Block a user