TF-3480 Handle reopen multiple composer when reload page or session expired
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -37,6 +37,8 @@ class SaveComposerCacheOnWebInteractor {
|
||||
hasRequestReadReceipt: createEmailRequest.hasRequestReadReceipt,
|
||||
isMarkAsImportant: createEmailRequest.isMarkAsImportant,
|
||||
displayMode: createEmailRequest.displayMode
|
||||
composerIndex: createEmailRequest.composerIndex,
|
||||
composerId: createEmailRequest.composerId,
|
||||
));
|
||||
return Right(SaveComposerCacheSuccess());
|
||||
} catch (exception) {
|
||||
|
||||
@@ -52,7 +52,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/session
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/session_storage_composer_datasoure_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/composer_cache_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.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/manage_account/domain/usecases/get_all_identities_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/preferences/bindings/preferences_interactors_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identity_interactors_bindings.dart';
|
||||
@@ -260,7 +260,7 @@ class ComposerBindings extends BaseBindings {
|
||||
tag: composerId,
|
||||
);
|
||||
Get.lazyPut(
|
||||
() => RemoveComposerCacheOnWebInteractor(Get.find<ComposerCacheRepository>(tag: composerId)),
|
||||
() => RemoveComposerCacheByIdOnWebInteractor(Get.find<ComposerCacheRepository>(tag: composerId)),
|
||||
tag: composerId,
|
||||
);
|
||||
Get.lazyPut(() => SaveComposerCacheOnWebInteractor(
|
||||
@@ -313,7 +313,7 @@ class ComposerBindings extends BaseBindings {
|
||||
Get.find<GetEmailContentInteractor>(tag: composerId),
|
||||
Get.find<GetAllIdentitiesInteractor>(tag: composerId),
|
||||
Get.find<UploadController>(tag: composerId),
|
||||
Get.find<RemoveComposerCacheOnWebInteractor>(tag: composerId),
|
||||
Get.find<RemoveComposerCacheByIdOnWebInteractor>(tag: composerId),
|
||||
Get.find<SaveComposerCacheOnWebInteractor>(tag: composerId),
|
||||
Get.find<DownloadImageAsBase64Interactor>(tag: composerId),
|
||||
Get.find<TransformHtmlEmailContentInteractor>(tag: composerId),
|
||||
@@ -379,7 +379,7 @@ class ComposerBindings extends BaseBindings {
|
||||
Get.delete<LocalImagePickerInteractor>(tag: composerId);
|
||||
Get.delete<UploadAttachmentInteractor>(tag: composerId);
|
||||
Get.delete<GetEmailContentInteractor>(tag: composerId);
|
||||
Get.delete<RemoveComposerCacheOnWebInteractor>(tag: composerId);
|
||||
Get.delete<RemoveComposerCacheByIdOnWebInteractor>(tag: composerId);
|
||||
Get.delete<SaveComposerCacheOnWebInteractor>(tag: composerId);
|
||||
Get.delete<DownloadImageAsBase64Interactor>(tag: composerId);
|
||||
Get.delete<TransformHtmlEmailContentInteractor>(tag: composerId);
|
||||
|
||||
@@ -88,7 +88,7 @@ import 'package:tmail_ui_user/features/email/presentation/extensions/presentatio
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
|
||||
import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.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/extensions/open_and_close_composer_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/draggable_app_state.dart';
|
||||
@@ -149,7 +149,7 @@ class ComposerController extends BaseController
|
||||
final GetEmailContentInteractor _getEmailContentInteractor;
|
||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||
final UploadController uploadController;
|
||||
final RemoveComposerCacheOnWebInteractor _removeComposerCacheOnWebInteractor;
|
||||
final RemoveComposerCacheByIdOnWebInteractor _removeComposerCacheByIdOnWebInteractor;
|
||||
final SaveComposerCacheOnWebInteractor _saveComposerCacheOnWebInteractor;
|
||||
final DownloadImageAsBase64Interactor _downloadImageAsBase64Interactor;
|
||||
final TransformHtmlEmailContentInteractor _transformHtmlEmailContentInteractor;
|
||||
@@ -243,7 +243,7 @@ class ComposerController extends BaseController
|
||||
this._getEmailContentInteractor,
|
||||
this._getAllIdentitiesInteractor,
|
||||
this.uploadController,
|
||||
this._removeComposerCacheOnWebInteractor,
|
||||
this._removeComposerCacheByIdOnWebInteractor,
|
||||
this._saveComposerCacheOnWebInteractor,
|
||||
this._downloadImageAsBase64Interactor,
|
||||
this._transformHtmlEmailContentInteractor,
|
||||
@@ -421,7 +421,15 @@ class ComposerController extends BaseController
|
||||
|
||||
@override
|
||||
Future<void> onUnloadBrowserListener(html.Event event) async {
|
||||
await _removeComposerCacheOnWebInteractor.execute();
|
||||
final username = mailboxDashBoardController.sessionCurrent?.username;
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
if (composerId != null && username != null && accountId != null) {
|
||||
await _removeComposerCacheByIdOnWebInteractor.execute(
|
||||
accountId,
|
||||
username,
|
||||
composerId!,
|
||||
);
|
||||
}
|
||||
await _saveComposerCacheOnWebAction();
|
||||
}
|
||||
|
||||
@@ -504,6 +512,10 @@ class ComposerController extends BaseController
|
||||
final emailContent = await getContentInEditor();
|
||||
final uploadUri = _getUploadUriFromSession(session, accountId);
|
||||
|
||||
final composerIndex = composerId != null
|
||||
? mailboxDashBoardController.composerManager.getComposerIndex(composerId!)
|
||||
: null;
|
||||
|
||||
return CreateEmailRequest(
|
||||
session: session,
|
||||
accountId: accountId,
|
||||
@@ -531,6 +543,8 @@ class ComposerController extends BaseController
|
||||
emailSendingQueue: arguments.sendingEmail,
|
||||
displayMode: screenDisplayMode.value,
|
||||
uploadUri: uploadUri,
|
||||
composerIndex: composerIndex,
|
||||
composerId: composerId,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1363,9 +1377,12 @@ class ComposerController extends BaseController
|
||||
|
||||
isEmailChanged.value = draftEmailHash != emptyDraftEmailHash;
|
||||
|
||||
if (composerArguments.value?.emailActionType == EmailActionType.compose ||
|
||||
composerArguments.value?.emailActionType == EmailActionType.editDraft) {
|
||||
final emailActionType = composerArguments.value?.emailActionType;
|
||||
if (emailActionType == EmailActionType.compose
|
||||
|| emailActionType == EmailActionType.editDraft) {
|
||||
_savedEmailDraftHash = draftEmailHash;
|
||||
} else if (emailActionType == EmailActionType.reopenComposerBrowser) {
|
||||
_savedEmailDraftHash = emptyDraftEmailHash;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1468,7 +1485,7 @@ class ComposerController extends BaseController
|
||||
required AccountId accountId,
|
||||
required String downloadUrl
|
||||
}) {
|
||||
_restoreEmailInlineImagesInteractor = getBinding<RestoreEmailInlineImagesInteractor>();
|
||||
_restoreEmailInlineImagesInteractor = getBinding<RestoreEmailInlineImagesInteractor>(tag: composerId);
|
||||
if (_restoreEmailInlineImagesInteractor == null) return;
|
||||
consumeState(_restoreEmailInlineImagesInteractor!.execute(
|
||||
htmlContent: htmlContent,
|
||||
|
||||
@@ -30,6 +30,27 @@ class ComposerManager extends GetxController {
|
||||
_arrangeComposerIfNeeded();
|
||||
}
|
||||
|
||||
void addListComposer(List<ComposerArguments> listArguments) {
|
||||
for (var argument in listArguments) {
|
||||
final composerId = argument.composerId;
|
||||
|
||||
if (composerId == null) continue;
|
||||
|
||||
ComposerBindings(
|
||||
composerId: composerId,
|
||||
composerArguments: argument,
|
||||
).dependencies();
|
||||
|
||||
composers[composerId] = ComposerView(
|
||||
key: Key(composerId),
|
||||
composerId: composerId,
|
||||
);
|
||||
composerIdsQueue.add(composerId);
|
||||
}
|
||||
|
||||
_syncQueueIfNeeded();
|
||||
}
|
||||
|
||||
void removeComposer(String id) {
|
||||
log('ComposerManager::removeComposer:Id = $id');
|
||||
if (!composers.containsKey(id)) return;
|
||||
@@ -252,6 +273,8 @@ class ComposerManager extends GetxController {
|
||||
.toList();
|
||||
}
|
||||
|
||||
int getComposerIndex(String id) => composerIdsQueue.toList().indexOf(id);
|
||||
|
||||
void showComposerIfHidden(String composerId) {
|
||||
log('ComposerManager::showComposerIfHidden:Id = $composerId');
|
||||
if (!composers.containsKey(composerId)) return;
|
||||
|
||||
@@ -39,6 +39,8 @@ class CreateEmailRequest with EquatableMixin {
|
||||
final SendingEmail? emailSendingQueue;
|
||||
final ScreenDisplayMode displayMode;
|
||||
final Uri? uploadUri;
|
||||
final int? composerIndex;
|
||||
final String? composerId;
|
||||
|
||||
CreateEmailRequest({
|
||||
required this.session,
|
||||
@@ -67,6 +69,8 @@ class CreateEmailRequest with EquatableMixin {
|
||||
this.emailSendingQueue,
|
||||
this.displayMode = ScreenDisplayMode.normal,
|
||||
this.uploadUri,
|
||||
this.composerIndex,
|
||||
this.composerId,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -97,5 +101,7 @@ class CreateEmailRequest with EquatableMixin {
|
||||
emailSendingQueue,
|
||||
displayMode,
|
||||
uploadUri,
|
||||
composerIndex,
|
||||
composerId,
|
||||
];
|
||||
}
|
||||
@@ -34,6 +34,7 @@ class ComposerArguments extends RouterArguments {
|
||||
final List<EmailAddress>? cc;
|
||||
final List<EmailAddress>? bcc;
|
||||
final String? listPost;
|
||||
final String? composerId;
|
||||
|
||||
ComposerArguments({
|
||||
this.emailActionType = EmailActionType.compose,
|
||||
@@ -58,6 +59,7 @@ class ComposerArguments extends RouterArguments {
|
||||
this.bcc,
|
||||
this.listPost,
|
||||
this.isMarkAsImportant,
|
||||
this.composerId,
|
||||
});
|
||||
|
||||
factory ComposerArguments.fromSendingEmail(SendingEmail sendingEmail) =>
|
||||
@@ -122,6 +124,7 @@ class ComposerArguments extends RouterArguments {
|
||||
hasRequestReadReceipt: composerCache.hasRequestReadReceipt,
|
||||
displayMode: composerCache.displayMode,
|
||||
isMarkAsImportant: composerCache.isMarkAsImportant,
|
||||
composerId: composerCache.composerId,
|
||||
);
|
||||
|
||||
factory ComposerArguments.replyEmail({
|
||||
@@ -242,6 +245,7 @@ class ComposerArguments extends RouterArguments {
|
||||
cc,
|
||||
bcc,
|
||||
listPost,
|
||||
composerId,
|
||||
];
|
||||
|
||||
ComposerArguments copyWith({
|
||||
@@ -267,6 +271,7 @@ class ComposerArguments extends RouterArguments {
|
||||
List<EmailAddress>? cc,
|
||||
List<EmailAddress>? bcc,
|
||||
String? listPost,
|
||||
String? composerId,
|
||||
}) {
|
||||
return ComposerArguments(
|
||||
emailActionType: emailActionType ?? this.emailActionType,
|
||||
@@ -291,6 +296,7 @@ class ComposerArguments extends RouterArguments {
|
||||
cc: cc ?? this.cc,
|
||||
bcc: bcc ?? this.bcc,
|
||||
listPost: listPost ?? this.listPost,
|
||||
composerId: composerId ?? this.composerId,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
+11
-2
@@ -10,11 +10,20 @@ abstract class SessionStorageComposerDatasource {
|
||||
required ComposerCache composerCache,
|
||||
});
|
||||
|
||||
Future<ComposerCache> getComposerCacheOnWeb(
|
||||
Future<List<ComposerCache>> getComposerCacheOnWeb(
|
||||
AccountId accountId,
|
||||
UserName userName);
|
||||
|
||||
Future<void> removeComposerCacheOnWeb();
|
||||
Future<void> removeAllComposerCacheOnWeb(
|
||||
AccountId accountId,
|
||||
UserName userName,
|
||||
);
|
||||
|
||||
Future<void> removeComposerCacheByIdOnWeb(
|
||||
AccountId accountId,
|
||||
UserName userName,
|
||||
String composerId,
|
||||
);
|
||||
|
||||
Future<String> restoreEmailInlineImages(
|
||||
String htmlContent,
|
||||
|
||||
+41
-16
@@ -1,11 +1,11 @@
|
||||
import 'dart:convert';
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:core/domain/exceptions/web_session_exception.dart';
|
||||
import 'package:core/presentation/utils/html_transformer/html_transform.dart';
|
||||
import 'package:core/presentation/utils/html_transformer/transform_configuration.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/extensions/account_id_extensions.dart';
|
||||
import 'package:tmail_ui_user/features/caching/utils/cache_utils.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/session_storage_composer_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/model/composer_cache.dart';
|
||||
@@ -20,7 +20,7 @@ class SessionStorageComposerDatasourceImpl
|
||||
final ExceptionThrower _exceptionThrower;
|
||||
|
||||
@override
|
||||
Future<ComposerCache> getComposerCacheOnWeb(
|
||||
Future<List<ComposerCache>> getComposerCacheOnWeb(
|
||||
AccountId accountId,
|
||||
UserName userName
|
||||
) async {
|
||||
@@ -30,24 +30,20 @@ class SessionStorageComposerDatasourceImpl
|
||||
accountId.asString,
|
||||
userName.value).toString();
|
||||
|
||||
final result = html.window.sessionStorage.entries.firstWhereOrNull(
|
||||
(entry) => entry.key == keyWithIdentity);
|
||||
if (result != null) {
|
||||
return ComposerCache.fromJson(jsonDecode(result.value));
|
||||
final listEntries = html.window.sessionStorage.entries.where(
|
||||
(entry) => entry.key.startsWith(keyWithIdentity),
|
||||
);
|
||||
|
||||
if (listEntries.isNotEmpty) {
|
||||
return listEntries
|
||||
.map((entry) => ComposerCache.fromJson(jsonDecode(entry.value)))
|
||||
.toList();
|
||||
} else {
|
||||
throw NotFoundInWebSessionException();
|
||||
}
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> removeComposerCacheOnWeb() async {
|
||||
return Future.sync(() {
|
||||
html.window.sessionStorage.removeWhere(
|
||||
(key, value) => key.startsWith(EmailActionType.reopenComposerBrowser.name));
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> saveComposerCacheOnWeb({
|
||||
required AccountId accountId,
|
||||
@@ -58,7 +54,9 @@ class SessionStorageComposerDatasourceImpl
|
||||
final composerCacheKey = TupleKey(
|
||||
EmailActionType.reopenComposerBrowser.name,
|
||||
accountId.asString,
|
||||
userName.value).toString();
|
||||
userName.value,
|
||||
composerCache.composerId,
|
||||
).toString();
|
||||
Map<String, String> entries = {
|
||||
composerCacheKey: jsonEncode(composerCache.toJson())
|
||||
};
|
||||
@@ -78,4 +76,31 @@ class SessionStorageComposerDatasourceImpl
|
||||
mapCidImageDownloadUrl: mapUrlDownloadCID);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> removeAllComposerCacheOnWeb(AccountId accountId, UserName userName) {
|
||||
return Future.sync(() {
|
||||
final keyWithIdentity = TupleKey(
|
||||
EmailActionType.reopenComposerBrowser.name,
|
||||
accountId.asString,
|
||||
userName.value,
|
||||
).toString();
|
||||
|
||||
html.window.sessionStorage.removeWhere((key, value) => key.startsWith(keyWithIdentity));
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> removeComposerCacheByIdOnWeb(AccountId accountId, UserName userName, String composerId) {
|
||||
return Future.sync(() {
|
||||
final keyWithIdentity = TupleKey(
|
||||
EmailActionType.reopenComposerBrowser.name,
|
||||
accountId.asString,
|
||||
userName.value,
|
||||
composerId,
|
||||
).toString();
|
||||
|
||||
html.window.sessionStorage.removeWhere((key, value) => key == keyWithIdentity);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,12 +12,16 @@ class ComposerCache with EquatableMixin {
|
||||
final bool? hasRequestReadReceipt;
|
||||
final bool? isMarkAsImportant;
|
||||
final ScreenDisplayMode displayMode;
|
||||
final int? composerIndex;
|
||||
final String? composerId;
|
||||
|
||||
ComposerCache({
|
||||
this.email,
|
||||
this.hasRequestReadReceipt,
|
||||
this.isMarkAsImportant,
|
||||
this.displayMode = ScreenDisplayMode.normal
|
||||
this.composerIndex,
|
||||
this.composerId,
|
||||
});
|
||||
|
||||
factory ComposerCache.fromJson(Map<String, dynamic> json) => _$ComposerCacheFromJson(json);
|
||||
@@ -30,5 +34,7 @@ class ComposerCache with EquatableMixin {
|
||||
hasRequestReadReceipt,
|
||||
isMarkAsImportant,
|
||||
displayMode
|
||||
composerIndex,
|
||||
composerId,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ class ComposerCacheRepositoryImpl extends ComposerCacheRepository {
|
||||
ComposerCacheRepositoryImpl(this.composerCacheDataSource);
|
||||
|
||||
@override
|
||||
Future<ComposerCache> getComposerCacheOnWeb(
|
||||
Future<List<ComposerCache>> getComposerCacheOnWeb(
|
||||
AccountId accountId,
|
||||
UserName userName
|
||||
) {
|
||||
@@ -20,8 +20,13 @@ class ComposerCacheRepositoryImpl extends ComposerCacheRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> removeComposerCacheOnWeb() {
|
||||
return composerCacheDataSource.removeComposerCacheOnWeb();
|
||||
Future<void> removeAllComposerCacheOnWeb(AccountId accountId, UserName userName) {
|
||||
return composerCacheDataSource.removeAllComposerCacheOnWeb(accountId, userName);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> removeComposerCacheByIdOnWeb(AccountId accountId, UserName userName, String composerId) {
|
||||
return composerCacheDataSource.removeComposerCacheByIdOnWeb(accountId, userName, composerId);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -10,11 +10,20 @@ abstract class ComposerCacheRepository {
|
||||
required ComposerCache composerCache,
|
||||
});
|
||||
|
||||
Future<ComposerCache> getComposerCacheOnWeb(
|
||||
Future<List<ComposerCache>> getComposerCacheOnWeb(
|
||||
AccountId accountId,
|
||||
UserName userName);
|
||||
|
||||
Future<void> removeComposerCacheOnWeb();
|
||||
Future<void> removeAllComposerCacheOnWeb(
|
||||
AccountId accountId,
|
||||
UserName userName,
|
||||
);
|
||||
|
||||
Future<void> removeComposerCacheByIdOnWeb(
|
||||
AccountId accountId,
|
||||
UserName userName,
|
||||
String composerId,
|
||||
);
|
||||
|
||||
Future<String> restoreEmailInlineImages(
|
||||
String htmlContent,
|
||||
|
||||
@@ -4,12 +4,12 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/data/model/composer_cac
|
||||
|
||||
class GetComposerCacheSuccess extends UIState {
|
||||
|
||||
final ComposerCache composerCache;
|
||||
final List<ComposerCache> listComposerCache;
|
||||
|
||||
GetComposerCacheSuccess(this.composerCache);
|
||||
GetComposerCacheSuccess(this.listComposerCache);
|
||||
|
||||
@override
|
||||
List<Object> get props => [composerCache];
|
||||
List<Object> get props => [listComposerCache];
|
||||
}
|
||||
|
||||
class GetComposerCacheFailure extends FeatureFailure {
|
||||
|
||||
+5
-2
@@ -13,8 +13,11 @@ class GetComposerCacheOnWebInteractor {
|
||||
|
||||
Stream<Either<Failure, Success>> execute(AccountId accountId, UserName userName) async* {
|
||||
try {
|
||||
final data = await composerCacheRepository.getComposerCacheOnWeb(accountId, userName);
|
||||
yield Right(GetComposerCacheSuccess(data));
|
||||
final listComposerCache = await composerCacheRepository.getComposerCacheOnWeb(
|
||||
accountId,
|
||||
userName,
|
||||
);
|
||||
yield Right(GetComposerCacheSuccess(listComposerCache));
|
||||
} catch (exception) {
|
||||
yield Left(GetComposerCacheFailure(exception));
|
||||
}
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
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:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_composer_cache_state.dart';
|
||||
|
||||
class RemoveAllComposerCacheOnWebInteractor {
|
||||
final ComposerCacheRepository composerCacheRepository;
|
||||
|
||||
RemoveAllComposerCacheOnWebInteractor(this.composerCacheRepository);
|
||||
|
||||
Future<Either<Failure, Success>> execute(AccountId accountId, UserName userName) async {
|
||||
try {
|
||||
composerCacheRepository.removeAllComposerCacheOnWeb(accountId, userName);
|
||||
return Right(RemoveComposerCacheSuccess());
|
||||
} catch (exception) {
|
||||
return Left(RemoveComposerCacheFailure(exception));
|
||||
}
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
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:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_composer_cache_state.dart';
|
||||
|
||||
class RemoveComposerCacheByIdOnWebInteractor {
|
||||
final ComposerCacheRepository composerCacheRepository;
|
||||
|
||||
RemoveComposerCacheByIdOnWebInteractor(this.composerCacheRepository);
|
||||
|
||||
Future<Either<Failure, Success>> execute(
|
||||
AccountId accountId,
|
||||
UserName userName,
|
||||
String composerId,
|
||||
) async {
|
||||
try {
|
||||
composerCacheRepository.removeComposerCacheByIdOnWeb(
|
||||
accountId,
|
||||
userName,
|
||||
composerId,
|
||||
);
|
||||
return Right(RemoveComposerCacheSuccess());
|
||||
} catch (exception) {
|
||||
return Left(RemoveComposerCacheFailure(exception));
|
||||
}
|
||||
}
|
||||
}
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_composer_cache_state.dart';
|
||||
|
||||
class RemoveComposerCacheOnWebInteractor {
|
||||
final ComposerCacheRepository composerCacheRepository;
|
||||
|
||||
RemoveComposerCacheOnWebInteractor(this.composerCacheRepository);
|
||||
|
||||
Future<Either<Failure, Success>> execute() async {
|
||||
try {
|
||||
composerCacheRepository.removeComposerCacheOnWeb();
|
||||
return Right(RemoveComposerCacheSuccess());
|
||||
} catch (exception) {
|
||||
return Left(RemoveComposerCacheFailure(exception));
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-3
@@ -81,7 +81,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_com
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_mailbox_cached_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_report_state_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/domain/usecases/store_last_time_dismissed_spam_reported_interactor.dart';
|
||||
@@ -194,7 +195,8 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.find<UnsubscribeEmailInteractor>(),
|
||||
Get.find<RestoredDeletedMessageInteractor>(),
|
||||
Get.find<GetRestoredDeletedMessageInterator>(),
|
||||
Get.find<RemoveComposerCacheOnWebInteractor>(),
|
||||
Get.find<RemoveAllComposerCacheOnWebInteractor>(),
|
||||
Get.find<RemoveComposerCacheByIdOnWebInteractor>(),
|
||||
Get.find<GetAllIdentitiesInteractor>(),
|
||||
));
|
||||
Get.put(AdvancedFilterController());
|
||||
@@ -308,7 +310,8 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.lazyPut(() => QuickSearchEmailInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => MarkAsMailboxReadInteractor(Get.find<MailboxRepository>()));
|
||||
Get.lazyPut(() => GetComposerCacheOnWebInteractor(Get.find<ComposerCacheRepository>()));
|
||||
Get.lazyPut(() => RemoveComposerCacheOnWebInteractor(Get.find<ComposerCacheRepository>()));
|
||||
Get.lazyPut(() => RemoveComposerCacheByIdOnWebInteractor(Get.find<ComposerCacheRepository>()));
|
||||
Get.lazyPut(() => RemoveAllComposerCacheOnWebInteractor(Get.find<ComposerCacheRepository>()));
|
||||
Get.lazyPut(() => MarkAsEmailReadInteractor(Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => MarkAsStarEmailInteractor(Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => MarkAsMultipleEmailReadInteractor(
|
||||
|
||||
+25
-7
@@ -92,7 +92,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_repor
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.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/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/presentation/action/dashboard_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart';
|
||||
@@ -102,6 +103,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/delete_emails_in_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_preferences_setting_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/reopen_composer_cache_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/set_error_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mixin/user_setting_popup_menu_mixin.dart';
|
||||
@@ -213,7 +215,8 @@ class MailboxDashBoardController extends ReloadableController
|
||||
final UnsubscribeEmailInteractor _unsubscribeEmailInteractor;
|
||||
final RestoredDeletedMessageInteractor _restoreDeletedMessageInteractor;
|
||||
final GetRestoredDeletedMessageInterator _getRestoredDeletedMessageInteractor;
|
||||
final RemoveComposerCacheOnWebInteractor _removeComposerCacheOnWebInteractor;
|
||||
final RemoveComposerCacheByIdOnWebInteractor _removeComposerCacheByIdOnWebInteractor;
|
||||
final RemoveAllComposerCacheOnWebInteractor _removeAllComposerCacheOnWebInteractor;
|
||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||
|
||||
GetAllVacationInteractor? _getAllVacationInteractor;
|
||||
@@ -304,7 +307,8 @@ class MailboxDashBoardController extends ReloadableController
|
||||
this._unsubscribeEmailInteractor,
|
||||
this._restoreDeletedMessageInteractor,
|
||||
this._getRestoredDeletedMessageInteractor,
|
||||
this._removeComposerCacheOnWebInteractor,
|
||||
this._removeAllComposerCacheOnWebInteractor,
|
||||
this._removeComposerCacheByIdOnWebInteractor,
|
||||
this._getAllIdentitiesInteractor,
|
||||
);
|
||||
|
||||
@@ -433,8 +437,7 @@ class MailboxDashBoardController extends ReloadableController
|
||||
} else if (success is GetAllIdentitiesSuccess) {
|
||||
_handleGetAllIdentitiesSuccess(success);
|
||||
} else if (success is GetComposerCacheSuccess) {
|
||||
removeComposerCacheOnWeb();
|
||||
openComposer(ComposerArguments.fromSessionStorageBrowser(success.composerCache));
|
||||
handleGetComposerCacheSuccess(success);
|
||||
} else if (success is GetIdentityCacheOnWebSuccess) {
|
||||
goToSettings();
|
||||
} else if (success is MarkAsStarEmailSuccess) {
|
||||
@@ -3058,8 +3061,23 @@ class MailboxDashBoardController extends ReloadableController
|
||||
isRecoveringDeletedMessage.value = true;
|
||||
}
|
||||
|
||||
Future<void> _removeComposerCacheOnWeb() async {
|
||||
await _removeComposerCacheOnWebInteractor.execute();
|
||||
Future<void> removeComposerCacheByIdOnWeb(String composerId) async {
|
||||
if (accountId.value == null || sessionCurrent == null) return;
|
||||
|
||||
await _removeComposerCacheByIdOnWebInteractor.execute(
|
||||
accountId.value!,
|
||||
sessionCurrent!.username,
|
||||
composerId,
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> removeAllComposerCacheOnWeb() async {
|
||||
if (accountId.value == null || sessionCurrent == null) return;
|
||||
|
||||
await _removeAllComposerCacheOnWebInteractor.execute(
|
||||
accountId.value!,
|
||||
sessionCurrent!.username,
|
||||
);
|
||||
}
|
||||
|
||||
bool validateSendingEmailFailedWhenNetworkIsLostOnMobile(dynamic failure) {
|
||||
|
||||
+17
-1
@@ -30,6 +30,20 @@ extension OpenAndCloseComposerExtension on MailboxDashBoardController {
|
||||
}
|
||||
}
|
||||
|
||||
void openListComposer(List<ComposerArguments> listArguments) {
|
||||
final newListArguments = listArguments
|
||||
.map((argument) => argument.withIdentity(
|
||||
identities: List.from(listIdentities),
|
||||
selectedIdentityId: argument.selectedIdentityId,
|
||||
))
|
||||
.toList();
|
||||
|
||||
composerManager.addListComposer(newListArguments);
|
||||
if (!twakeAppManager.hasComposer) {
|
||||
twakeAppManager.setHasComposer(true);
|
||||
}
|
||||
}
|
||||
|
||||
void _openComposerOnWeb(ComposerArguments composerArguments) {
|
||||
composerManager.addComposer(composerArguments);
|
||||
if (!twakeAppManager.hasComposer) {
|
||||
@@ -99,7 +113,9 @@ extension OpenAndCloseComposerExtension on MailboxDashBoardController {
|
||||
|
||||
_handleResultAfterCloseComposer(result);
|
||||
|
||||
await removeComposerCacheOnWeb();
|
||||
if (composerId != null) {
|
||||
await removeComposerCacheByIdOnWeb(composerId);
|
||||
}
|
||||
}
|
||||
|
||||
void _handleResultAfterCloseComposer(dynamic result) {
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
|
||||
|
||||
extension ReopenComposerCacheExtension on MailboxDashBoardController {
|
||||
|
||||
void handleGetComposerCacheSuccess(GetComposerCacheSuccess success) {
|
||||
removeAllComposerCacheOnWeb();
|
||||
|
||||
final listComposerCacheSortByIndex = success.listComposerCache
|
||||
..sort((a, b) => (a.composerIndex ?? 0).compareTo(b.composerIndex ?? 0));
|
||||
|
||||
final listArguments = listComposerCacheSortByIndex
|
||||
.map((composerCache) => ComposerArguments.fromSessionStorageBrowser(composerCache))
|
||||
.toList();
|
||||
|
||||
openListComposer(listArguments);
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
+10
-5
@@ -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,
|
||||
);
|
||||
});
|
||||
|
||||
+10
-5
@@ -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,
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user