TF-3480 Handle reopen multiple composer when reload page or session expired

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-02-28 01:29:38 +07:00
committed by Dat H. Pham
parent 810d86b100
commit cfc72a6f4f
24 changed files with 318 additions and 101 deletions
@@ -51,7 +51,7 @@ import 'package:tmail_ui_user/features/email/presentation/model/composer_argumen
import 'package:tmail_ui_user/features/login/data/network/interceptors/authorization_interceptors.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/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/draggable_app_state.dart';
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
@@ -156,7 +156,7 @@ class MockMailboxDashBoardController extends Mock implements MailboxDashBoardCon
MockSpec<GetEmailContentInteractor>(),
MockSpec<GetAllIdentitiesInteractor>(),
MockSpec<UploadController>(fallbackGenerators: fallbackGenerators),
MockSpec<RemoveComposerCacheOnWebInteractor>(),
MockSpec<RemoveComposerCacheByIdOnWebInteractor>(),
MockSpec<SaveComposerCacheOnWebInteractor>(),
MockSpec<DownloadImageAsBase64Interactor>(),
MockSpec<TransformHtmlEmailContentInteractor>(),
@@ -199,7 +199,7 @@ void main() {
late MockGetEmailContentInteractor mockGetEmailContentInteractor;
late MockGetAllIdentitiesInteractor mockGetAllIdentitiesInteractor;
late MockUploadController mockUploadController;
late MockRemoveComposerCacheOnWebInteractor mockRemoveComposerCacheOnWebInteractor;
late MockRemoveComposerCacheByIdOnWebInteractor mockRemoveComposerCacheByIdOnWebInteractor;
late MockSaveComposerCacheOnWebInteractor mockSaveComposerCacheOnWebInteractor;
late MockDownloadImageAsBase64Interactor mockDownloadImageAsBase64Interactor;
late MockTransformHtmlEmailContentInteractor mockTransformHtmlEmailContentInteractor;
@@ -267,7 +267,7 @@ void main() {
mockGetEmailContentInteractor = MockGetEmailContentInteractor();
mockGetAllIdentitiesInteractor = MockGetAllIdentitiesInteractor();
mockUploadController = MockUploadController();
mockRemoveComposerCacheOnWebInteractor = MockRemoveComposerCacheOnWebInteractor();
mockRemoveComposerCacheByIdOnWebInteractor = MockRemoveComposerCacheByIdOnWebInteractor();
mockSaveComposerCacheOnWebInteractor = MockSaveComposerCacheOnWebInteractor();
mockDownloadImageAsBase64Interactor = MockDownloadImageAsBase64Interactor();
mockTransformHtmlEmailContentInteractor = MockTransformHtmlEmailContentInteractor();
@@ -282,7 +282,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -415,7 +415,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -476,7 +476,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -538,7 +538,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -599,7 +599,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -901,7 +901,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -973,7 +973,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -1047,7 +1047,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -1125,7 +1125,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -1490,7 +1490,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -1542,7 +1542,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -1595,7 +1595,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -1652,7 +1652,7 @@ void main() {
mockGetEmailContentInteractor,
mockGetAllIdentitiesInteractor,
mockUploadController,
mockRemoveComposerCacheOnWebInteractor,
mockRemoveComposerCacheByIdOnWebInteractor,
mockSaveComposerCacheOnWebInteractor,
mockDownloadImageAsBase64Interactor,
mockTransformHtmlEmailContentInteractor,
@@ -56,7 +56,8 @@ import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_na
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart';
@@ -173,7 +174,8 @@ const fallbackGenerators = {
MockSpec<Uuid>(),
MockSpec<CachingManager>(),
MockSpec<LanguageCacheManager>(),
MockSpec<RemoveComposerCacheOnWebInteractor>(),
MockSpec<RemoveAllComposerCacheOnWebInteractor>(),
MockSpec<RemoveComposerCacheByIdOnWebInteractor>(),
MockSpec<ApplicationManager>(),
MockSpec<ToastManager>(),
MockSpec<TwakeAppManager>(),
@@ -263,7 +265,8 @@ void main() {
final verifyNameInteractor = MockVerifyNameInteractor();
final getAllMailboxInteractor = MockGetAllMailboxInteractor();
final refreshAllMailboxInteractor = MockRefreshAllMailboxInteractor();
final removeComposerCacheOnWebInteractor = MockRemoveComposerCacheOnWebInteractor();
final removeAllComposerCacheOnWebInteractor = MockRemoveAllComposerCacheOnWebInteractor();
final removeComposerCacheByIdOnWebInteractor = MockRemoveComposerCacheByIdOnWebInteractor();
final getAllIdentitiesInteractor = MockGetAllIdentitiesInteractor();
final composerManager = MockComposerManager();
late MailboxController mailboxController;
@@ -316,7 +319,8 @@ void main() {
Get.put<GetAuthenticatedAccountInteractor>(getAuthenticatedAccountInteractor);
Get.put<UpdateAccountCacheInteractor>(updateAccountCacheInteractor);
Get.put<GetAllIdentitiesInteractor>(getAllIdentitiesInteractor);
Get.put<RemoveComposerCacheOnWebInteractor>(removeComposerCacheOnWebInteractor);
Get.put<RemoveAllComposerCacheOnWebInteractor>(removeAllComposerCacheOnWebInteractor);
Get.put<RemoveComposerCacheByIdOnWebInteractor>(removeComposerCacheByIdOnWebInteractor);
Get.put<ComposerManager>(composerManager);
searchController = SearchController(
@@ -351,7 +355,8 @@ void main() {
unsubscribeEmailInteractor,
restoreDeletedMessageInteractor,
getRestoredDeletedMessageInteractor,
removeComposerCacheOnWebInteractor,
removeAllComposerCacheOnWebInteractor,
removeComposerCacheByIdOnWebInteractor,
getAllIdentitiesInteractor,
);
});
@@ -55,7 +55,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_repor
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart';
@@ -174,7 +175,8 @@ const fallbackGenerators = {
MockSpec<Uuid>(),
MockSpec<CachingManager>(),
MockSpec<LanguageCacheManager>(),
MockSpec<RemoveComposerCacheOnWebInteractor>(),
MockSpec<RemoveAllComposerCacheOnWebInteractor>(),
MockSpec<RemoveComposerCacheByIdOnWebInteractor>(),
MockSpec<ApplicationManager>(),
MockSpec<GetAllIdentitiesInteractor>(),
MockSpec<GetQuotasInteractor>(),
@@ -250,7 +252,8 @@ void main() {
final verifyNameInteractor = MockVerifyNameInteractor();
final getAllMailboxInteractor = MockGetAllMailboxInteractor();
final refreshAllMailboxInteractor = MockRefreshAllMailboxInteractor();
final removeComposerCacheOnWebInteractor = MockRemoveComposerCacheOnWebInteractor();
final removeAllComposerCacheOnWebInteractor = MockRemoveAllComposerCacheOnWebInteractor();
final removeComposerCacheByIdOnWebInteractor = MockRemoveComposerCacheByIdOnWebInteractor();
final getAllIdentitiesInteractor = MockGetAllIdentitiesInteractor();
final composerManager = MockComposerManager();
@@ -314,7 +317,8 @@ void main() {
Get.put<GetAuthenticatedAccountInteractor>(getAuthenticatedAccountInteractor);
Get.put<UpdateAccountCacheInteractor>(updateAccountCacheInteractor);
Get.put<GetAllIdentitiesInteractor>(getAllIdentitiesInteractor);
Get.put<RemoveComposerCacheOnWebInteractor>(removeComposerCacheOnWebInteractor);
Get.put<RemoveAllComposerCacheOnWebInteractor>(removeAllComposerCacheOnWebInteractor);
Get.put<RemoveComposerCacheByIdOnWebInteractor>(removeComposerCacheByIdOnWebInteractor);
Get.put<ComposerManager>(composerManager);
when(emailReceiveManager.pendingSharedFileInfo).thenAnswer((_) => BehaviorSubject.seeded([]));
@@ -350,7 +354,8 @@ void main() {
unsubscribeEmailInteractor,
restoreDeletedMessageInteractor,
getRestoredDeletedMessageInteractor,
removeComposerCacheOnWebInteractor,
removeAllComposerCacheOnWebInteractor,
removeComposerCacheByIdOnWebInteractor,
getAllIdentitiesInteractor,
);
Get.put(mailboxDashboardController);
@@ -42,7 +42,8 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_r
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart';
@@ -152,7 +153,8 @@ const fallbackGenerators = {
MockSpec<RestoredDeletedMessageInteractor>(),
MockSpec<GetRestoredDeletedMessageInterator>(),
MockSpec<GetIdentityCacheOnWebInteractor>(),
MockSpec<RemoveComposerCacheOnWebInteractor>(),
MockSpec<RemoveAllComposerCacheOnWebInteractor>(),
MockSpec<RemoveComposerCacheByIdOnWebInteractor>(),
MockSpec<GetAllIdentitiesInteractor>(),
MockSpec<ComposerManager>(fallbackGenerators: fallbackGenerators),
])
@@ -209,7 +211,8 @@ void main() {
late MockUnsubscribeEmailInteractor unsubscribeEmailInteractor;
late MockRestoredDeletedMessageInteractor restoreDeletedMessageInteractor;
late MockGetRestoredDeletedMessageInterator getRestoredDeletedMessageInteractor;
late MockRemoveComposerCacheOnWebInteractor removeComposerCacheOnWebInteractor;
late MockRemoveAllComposerCacheOnWebInteractor removeAllComposerCacheOnWebInteractor;
late MockRemoveComposerCacheByIdOnWebInteractor removeComposerCacheByIdOnWebInteractor;
late MockGetAllIdentitiesInteractor getAllIdentitiesInteractor;
// Declaration base controller
@@ -301,7 +304,8 @@ void main() {
unsubscribeEmailInteractor = MockUnsubscribeEmailInteractor();
restoreDeletedMessageInteractor = MockRestoredDeletedMessageInteractor();
getRestoredDeletedMessageInteractor = MockGetRestoredDeletedMessageInterator();
removeComposerCacheOnWebInteractor = MockRemoveComposerCacheOnWebInteractor();
removeAllComposerCacheOnWebInteractor = MockRemoveAllComposerCacheOnWebInteractor();
removeComposerCacheByIdOnWebInteractor = MockRemoveComposerCacheByIdOnWebInteractor();
getAllIdentitiesInteractor = MockGetAllIdentitiesInteractor();
searchController = SearchController(
@@ -346,7 +350,8 @@ void main() {
unsubscribeEmailInteractor,
restoreDeletedMessageInteractor,
getRestoredDeletedMessageInteractor,
removeComposerCacheOnWebInteractor,
removeAllComposerCacheOnWebInteractor,
removeComposerCacheByIdOnWebInteractor,
getAllIdentitiesInteractor,
);