Skip to content

Commit 77757a6

Browse files
committed
TF-4186 Remove company server login info when switch to other login type
1 parent 725bc9a commit 77757a6

File tree

19 files changed

+123
-1
lines changed

19 files changed

+123
-1
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import 'package:core/presentation/state/failure.dart';
2+
import 'package:core/presentation/state/success.dart';
3+
4+
class RemovingCompanyServerLoginInfo extends LoadingState {}
5+
6+
class RemoveCompanyServerLoginInfoSuccess extends UIState {}
7+
8+
class RemoveCompanyServerLoginInfoFailure extends FeatureFailure {
9+
RemoveCompanyServerLoginInfoFailure(dynamic exception)
10+
: super(exception: exception);
11+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import 'dart:core';
2+
3+
import 'package:core/presentation/state/failure.dart';
4+
import 'package:core/presentation/state/success.dart';
5+
import 'package:dartz/dartz.dart';
6+
import 'package:tmail_ui_user/features/login/domain/repository/company_server_login_repository.dart';
7+
import 'package:tmail_ui_user/features/login/domain/state/remove_company_server_login_info_state.dart';
8+
9+
class RemoveCompanyServerLoginInfoInteractor {
10+
final CompanyServerLoginRepository _serverLoginRepository;
11+
12+
RemoveCompanyServerLoginInfoInteractor(this._serverLoginRepository);
13+
14+
Stream<Either<Failure, Success>> execute() async* {
15+
try {
16+
yield Right(RemovingCompanyServerLoginInfo());
17+
await _serverLoginRepository.removeCompanyServerLoginInfo();
18+
yield Right(RemoveCompanyServerLoginInfoSuccess());
19+
} catch (exception) {
20+
yield Left(RemoveCompanyServerLoginInfoFailure(exception));
21+
}
22+
}
23+
}

lib/features/login/presentation/bindings/company_server_login_interactor_bindings.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:tmail_ui_user/features/login/data/local/company_server_login_cac
77
import 'package:tmail_ui_user/features/login/data/repository/company_server_login_repository_impl.dart';
88
import 'package:tmail_ui_user/features/login/domain/repository/company_server_login_repository.dart';
99
import 'package:tmail_ui_user/features/login/domain/usecases/get_company_server_login_info_interactor.dart';
10+
import 'package:tmail_ui_user/features/login/domain/usecases/remove_company_server_login_info_interactor.dart';
1011
import 'package:tmail_ui_user/features/login/domain/usecases/save_company_server_login_info_interactor.dart';
1112
import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart';
1213

@@ -46,6 +47,11 @@ class CompanyServerLoginInteractorBindings extends InteractorsBindings {
4647
Get.find<CompanyServerLoginRepository>(),
4748
),
4849
);
50+
Get.put(
51+
RemoveCompanyServerLoginInfoInteractor(
52+
Get.find<CompanyServerLoginRepository>(),
53+
),
54+
);
4955
}
5056

5157
@override

lib/features/login/presentation/extensions/handle_company_server_login_info_extension.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,8 @@ extension HandleCompanyServerLoginInfoExtension on LoginController {
3030
onUsernameChange(userEmail);
3131
usernameInputController.text = userEmail;
3232
}
33+
34+
void removeCompanyServerLoginInfo() {
35+
consumeState(removeCompanyServerLoginInfoInteractor.execute());
36+
}
3337
}

lib/features/login/presentation/login_bindings.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/get_oidc_configurat
2424
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_oidc_configuration_interactor.dart';
2525
import 'package:tmail_ui_user/features/login/domain/usecases/get_token_oidc_interactor.dart';
2626
import 'package:tmail_ui_user/features/login/domain/usecases/remove_auth_destination_url_interactor.dart';
27+
import 'package:tmail_ui_user/features/login/domain/usecases/remove_company_server_login_info_interactor.dart';
2728
import 'package:tmail_ui_user/features/login/domain/usecases/save_company_server_login_info_interactor.dart';
2829
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_url_on_mobile_interactor.dart';
2930
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart';
@@ -58,6 +59,7 @@ class LoginBindings extends BaseBindings {
5859
Get.find<TryGuessingWebFingerInteractor>(),
5960
Get.find<RemoveAuthDestinationUrlInteractor>(),
6061
Get.find<SaveCompanyServerLoginInfoInteractor>(),
62+
Get.find<RemoveCompanyServerLoginInfoInteractor>(),
6163
));
6264
}
6365

lib/features/login/presentation/login_controller.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/get_oidc_configurat
4747
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_oidc_configuration_interactor.dart';
4848
import 'package:tmail_ui_user/features/login/domain/usecases/get_token_oidc_interactor.dart';
4949
import 'package:tmail_ui_user/features/login/domain/usecases/remove_auth_destination_url_interactor.dart';
50+
import 'package:tmail_ui_user/features/login/domain/usecases/remove_company_server_login_info_interactor.dart';
5051
import 'package:tmail_ui_user/features/login/domain/usecases/save_company_server_login_info_interactor.dart';
5152
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_url_on_mobile_interactor.dart';
5253
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart';
@@ -86,6 +87,7 @@ class LoginController extends ReloadableController {
8687
final TryGuessingWebFingerInteractor _tryGuessingWebFingerInteractor;
8788
final RemoveAuthDestinationUrlInteractor _removeAuthDestinationUrlInteractor;
8889
final SaveCompanyServerLoginInfoInteractor saveCompanyServerLoginInfoInteractor;
90+
final RemoveCompanyServerLoginInfoInteractor removeCompanyServerLoginInfoInteractor;
8991

9092
final TextEditingController urlInputController = TextEditingController();
9193
final TextEditingController usernameInputController = TextEditingController();
@@ -120,6 +122,7 @@ class LoginController extends ReloadableController {
120122
this._tryGuessingWebFingerInteractor,
121123
this._removeAuthDestinationUrlInteractor,
122124
this.saveCompanyServerLoginInfoInteractor,
125+
this.removeCompanyServerLoginInfoInteractor,
123126
);
124127

125128
@override
@@ -471,6 +474,8 @@ class LoginController extends ReloadableController {
471474
void _getTokenOIDCSuccess(GetTokenOIDCSuccess success) {
472475
if (isDnsLookupFormOnMobile && _username != null) {
473476
saveCompanyServerLoginInfo(_username!.value);
477+
} else if (PlatformInfo.isMobile) {
478+
removeCompanyServerLoginInfo();
474479
}
475480
synchronizeTokenAndGetSession(
476481
baseUri: _currentBaseUrl!,
@@ -564,6 +569,10 @@ class LoginController extends ReloadableController {
564569
}
565570

566571
void _handleCommonOIDCFailure() {
572+
if (PlatformInfo.isMobile) {
573+
removeCompanyServerLoginInfo();
574+
}
575+
567576
if (PlatformInfo.isMobile && loginFormType.value == LoginFormType.dnsLookupForm) {
568577
_showPasswordForm();
569578
} else {

test/features/base/base_controller_test.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import 'package:tmail_ui_user/features/caching/caching_manager.dart';
2020
import 'package:tmail_ui_user/features/login/data/network/interceptors/authorization_interceptors.dart';
2121
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
2222
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
23+
import 'package:tmail_ui_user/features/login/domain/usecases/get_company_server_login_info_interactor.dart';
2324
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
2425
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
2526
import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
@@ -65,6 +66,7 @@ class SomeOtherException extends RemoteException {}
6566
MockSpec<DeleteCredentialInteractor>(),
6667
MockSpec<LogoutOidcInteractor>(),
6768
MockSpec<DeleteAuthorityOidcInteractor>(),
69+
MockSpec<GetCompanyServerLoginInfoInteractor>(),
6870
MockSpec<AppToast>(),
6971
MockSpec<ImagePaths>(),
7072
MockSpec<ResponsiveUtils>(),
@@ -84,6 +86,7 @@ void main() {
8486
late MockDeleteCredentialInteractor mockDeleteCredentialInteractor;
8587
late MockLogoutOidcInteractor mockLogoutOidcInteractor;
8688
late MockDeleteAuthorityOidcInteractor mockDeleteAuthorityOidcInteractor;
89+
late MockGetCompanyServerLoginInfoInteractor mockGetCompanyServerLoginInfoInteractor;
8790
late MockAppToast mockAppToast;
8891
late MockImagePaths mockImagePaths;
8992
late MockResponsiveUtils mockResponsiveUtils;
@@ -100,6 +103,7 @@ void main() {
100103
mockDeleteCredentialInteractor = MockDeleteCredentialInteractor();
101104
mockLogoutOidcInteractor = MockLogoutOidcInteractor();
102105
mockDeleteAuthorityOidcInteractor = MockDeleteAuthorityOidcInteractor();
106+
mockGetCompanyServerLoginInfoInteractor = MockGetCompanyServerLoginInfoInteractor();
103107
mockAppToast = MockAppToast();
104108
mockImagePaths = MockImagePaths();
105109
mockResponsiveUtils = MockResponsiveUtils();
@@ -119,6 +123,7 @@ void main() {
119123
Get.put<DeleteCredentialInteractor>(mockDeleteCredentialInteractor);
120124
Get.put<LogoutOidcInteractor>(mockLogoutOidcInteractor);
121125
Get.put<DeleteAuthorityOidcInteractor>(mockDeleteAuthorityOidcInteractor);
126+
Get.put<GetCompanyServerLoginInfoInteractor>(mockGetCompanyServerLoginInfoInteractor);
122127
Get.put<AppToast>(mockAppToast);
123128
Get.put<ImagePaths>(mockImagePaths);
124129
Get.put<ResponsiveUtils>(mockResponsiveUtils);

test/features/composer/presentation/composer_controller_test.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import 'package:tmail_ui_user/features/email/presentation/model/composer_argumen
5050
import 'package:tmail_ui_user/features/login/data/network/interceptors/authorization_interceptors.dart';
5151
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
5252
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
53+
import 'package:tmail_ui_user/features/login/domain/usecases/get_company_server_login_info_interactor.dart';
5354
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart';
5455
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
5556
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/draggable_app_state.dart';
@@ -154,6 +155,7 @@ class MockMailboxDashBoardController extends Mock implements MailboxDashBoardCon
154155
MockSpec<DeleteCredentialInteractor>(),
155156
MockSpec<LogoutOidcInteractor>(),
156157
MockSpec<DeleteAuthorityOidcInteractor>(),
158+
MockSpec<GetCompanyServerLoginInfoInteractor>(),
157159
MockSpec<AppToast>(),
158160
MockSpec<ImagePaths>(),
159161
MockSpec<ResponsiveUtils>(),
@@ -200,6 +202,7 @@ void main() {
200202
late MockDeleteCredentialInteractor mockDeleteCredentialInteractor;
201203
late MockLogoutOidcInteractor mockLogoutOidcInteractor;
202204
late MockDeleteAuthorityOidcInteractor mockDeleteAuthorityOidcInteractor;
205+
late MockGetCompanyServerLoginInfoInteractor mockGetCompanyServerLoginInfoInteractor;
203206
late MockAppToast mockAppToast;
204207
late MockUuid mockUuid;
205208
late MockApplicationManager mockApplicationManager;
@@ -245,6 +248,7 @@ void main() {
245248
mockDeleteCredentialInteractor = MockDeleteCredentialInteractor();
246249
mockLogoutOidcInteractor = MockLogoutOidcInteractor();
247250
mockDeleteAuthorityOidcInteractor = MockDeleteAuthorityOidcInteractor();
251+
mockGetCompanyServerLoginInfoInteractor = MockGetCompanyServerLoginInfoInteractor();
248252
mockAppToast = MockAppToast();
249253
mockUuid = MockUuid();
250254
mockApplicationManager = MockApplicationManager();
@@ -262,6 +266,7 @@ void main() {
262266
Get.put<DeleteCredentialInteractor>(mockDeleteCredentialInteractor);
263267
Get.put<LogoutOidcInteractor>(mockLogoutOidcInteractor);
264268
Get.put<DeleteAuthorityOidcInteractor>(mockDeleteAuthorityOidcInteractor);
269+
Get.put<GetCompanyServerLoginInfoInteractor>(mockGetCompanyServerLoginInfoInteractor);
265270
Get.put<AppToast>(mockAppToast);
266271
Get.put<ImagePaths>(ImagePaths());
267272
Get.put<ResponsiveUtils>(ResponsiveUtils());

test/features/email/presentation/controller/single_email_controller_test.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oi
4444
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
4545
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/download_ui_action.dart';
4646
import 'package:tmail_ui_user/features/download/presentation/controllers/download_controller.dart';
47+
import 'package:tmail_ui_user/features/login/domain/usecases/get_company_server_login_info_interactor.dart';
4748
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
4849
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
4950
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart';
@@ -83,6 +84,7 @@ const fallbackGenerators = {
8384
MockSpec<DeleteCredentialInteractor>(),
8485
MockSpec<LogoutOidcInteractor>(),
8586
MockSpec<DeleteAuthorityOidcInteractor>(),
87+
MockSpec<GetCompanyServerLoginInfoInteractor>(),
8688
MockSpec<AppToast>(),
8789
MockSpec<ImagePaths>(),
8890
MockSpec<ResponsiveUtils>(),
@@ -117,6 +119,7 @@ void main() {
117119
final deleteCredentialInteractor = MockDeleteCredentialInteractor();
118120
final logoutOidcInteractor = MockLogoutOidcInteractor();
119121
final deleteAuthorityOidcInteractor = MockDeleteAuthorityOidcInteractor();
122+
final getCompanyServerLoginInfoInteractor = MockGetCompanyServerLoginInfoInteractor();
120123
final appToast = MockAppToast();
121124
final imagePaths = MockImagePaths();
122125
final responsiveUtils = MockResponsiveUtils();
@@ -154,6 +157,7 @@ void main() {
154157
Get.put<DeleteCredentialInteractor>(deleteCredentialInteractor);
155158
Get.put<LogoutOidcInteractor>(logoutOidcInteractor);
156159
Get.put<DeleteAuthorityOidcInteractor>(deleteAuthorityOidcInteractor);
160+
Get.put<GetCompanyServerLoginInfoInteractor>(getCompanyServerLoginInfoInteractor);
157161
Get.put<AppToast>(appToast);
158162
Get.put<ImagePaths>(imagePaths);
159163
Get.put<ResponsiveUtils>(responsiveUtils);

test/features/home/presentation/home_controller_test.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/check_oidc_is_avail
2424
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
2525
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
2626
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
27+
import 'package:tmail_ui_user/features/login/domain/usecases/get_company_server_login_info_interactor.dart';
2728
import 'package:tmail_ui_user/features/login/domain/usecases/get_oidc_configuration_interactor.dart';
2829
import 'package:tmail_ui_user/features/login/domain/usecases/get_oidc_user_info_interactor.dart';
2930
import 'package:tmail_ui_user/features/login/domain/usecases/remove_auth_destination_url_interactor.dart';
@@ -44,6 +45,7 @@ import 'home_controller_test.mocks.dart';
4445
MockSpec<DeleteCredentialInteractor>(),
4546
MockSpec<LogoutOidcInteractor>(),
4647
MockSpec<DeleteAuthorityOidcInteractor>(),
48+
MockSpec<GetCompanyServerLoginInfoInteractor>(),
4749
MockSpec<AppToast>(),
4850
MockSpec<ImagePaths>(),
4951
MockSpec<ResponsiveUtils>(),
@@ -91,6 +93,7 @@ void main() {
9193
late MockDeleteCredentialInteractor mockDeleteCredentialInteractor;
9294
late MockLogoutOidcInteractor mockLogoutOidcInteractor;
9395
late MockDeleteAuthorityOidcInteractor mockDeleteAuthorityOidcInteractor;
96+
late MockGetCompanyServerLoginInfoInteractor mockGetCompanyServerLoginInfoInteractor;
9497
late MockAppToast mockAppToast;
9598
late MockImagePaths mockImagePaths;
9699
late MockResponsiveUtils mockResponsiveUtils;
@@ -122,6 +125,7 @@ void main() {
122125
mockDeleteCredentialInteractor = MockDeleteCredentialInteractor();
123126
mockLogoutOidcInteractor = MockLogoutOidcInteractor();
124127
mockDeleteAuthorityOidcInteractor = MockDeleteAuthorityOidcInteractor();
128+
mockGetCompanyServerLoginInfoInteractor = MockGetCompanyServerLoginInfoInteractor();
125129
mockAppToast = MockAppToast();
126130
mockImagePaths = MockImagePaths();
127131
mockResponsiveUtils = MockResponsiveUtils();
@@ -146,6 +150,7 @@ void main() {
146150
Get.put<DeleteCredentialInteractor>(mockDeleteCredentialInteractor);
147151
Get.put<LogoutOidcInteractor>(mockLogoutOidcInteractor);
148152
Get.put<DeleteAuthorityOidcInteractor>(mockDeleteAuthorityOidcInteractor);
153+
Get.put<GetCompanyServerLoginInfoInteractor>(mockGetCompanyServerLoginInfoInteractor);
149154
Get.put<AppToast>(mockAppToast);
150155
Get.put<ImagePaths>(mockImagePaths);
151156
Get.put<ResponsiveUtils>(mockResponsiveUtils);

0 commit comments

Comments
 (0)