TF-1923 Fix new email offline mode not working

(cherry picked from commit c1c48e93d50cb0ebbccaf11c3f4a975af640b63a)
This commit is contained in:
dab246
2023-06-20 22:20:23 +07:00
committed by Dat H. Pham
parent b1a0cab02b
commit 6d96a1109e
35 changed files with 333 additions and 261 deletions
@@ -27,7 +27,7 @@ import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
import 'package:tmail_ui_user/features/email/domain/model/detailed_email.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/store_opened_email_to_cache_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/store_opened_email_interactor.dart';
import 'package:tmail_ui_user/features/email/presentation/controller/email_supervisor_controller.dart';
import 'package:tmail_ui_user/features/email/presentation/model/email_loaded.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
@@ -93,7 +93,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
final MarkAsStarEmailInteractor _markAsStarEmailInteractor;
final DownloadAttachmentForWebInteractor _downloadAttachmentForWebInteractor;
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
final StoreOpenedEmailToCacheInteractor _storeOpenedEmailToCacheInteractor;
final StoreOpenedEmailInteractor _storeOpenedEmailInteractor;
CreateNewEmailRuleFilterInteractor? _createNewEmailRuleFilterInteractor;
SendReceiptToSenderInteractor? _sendReceiptToSenderInteractor;
@@ -128,7 +128,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
this._markAsStarEmailInteractor,
this._downloadAttachmentForWebInteractor,
this._getAllIdentitiesInteractor,
this._storeOpenedEmailToCacheInteractor
this._storeOpenedEmailInteractor
);
@override
@@ -348,11 +348,14 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
if (emailLoaded != null) {
dispatchState(Right<Failure, Success>(GetEmailContentLoading()));
await Future.delayed(const Duration(milliseconds: 300));
consumeState(Stream.value(Right<Failure, Success>(GetEmailContentSuccess(
emailLoaded.emailContents,
emailLoaded.emailContentsDisplayed,
emailLoaded.attachments,
emailLoaded.emailCurrent))));
consumeState(Stream.value(Right<Failure, Success>(
GetEmailContentSuccess(
emailContents: emailLoaded.emailContents,
emailContentsDisplayed: emailLoaded.emailContentsDisplayed,
attachments: emailLoaded.attachments,
emailCurrent: emailLoaded.emailCurrent
)
)));
} else if (session != null && accountId != null && baseDownloadUrl != null) {
consumeState(_getEmailContentInteractor.execute(session, accountId, emailId, baseDownloadUrl));
}
@@ -386,11 +389,12 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
final detailedEmail = DetailedEmail(
emailId: currentEmail!.id!,
attachments: attachments,
headers: currentEmail?.emailHeader,
headers: currentEmail?.emailHeader?.toSet(),
keywords: currentEmail?.keywords,
htmlEmailContent: emailContents.value
);
_storeOpenedEmailToCache(
_storeOpenedEmailAction(
mailboxDashBoardController.sessionCurrent,
mailboxDashBoardController.accountId.value,
detailedEmail
@@ -1222,9 +1226,9 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
return false;
}
void _storeOpenedEmailToCache(Session? session, AccountId? accountId, DetailedEmail detailedEmail) async {
void _storeOpenedEmailAction(Session? session, AccountId? accountId, DetailedEmail detailedEmail) async {
if (session != null && accountId != null) {
consumeState(_storeOpenedEmailToCacheInteractor.execute(session, accountId, detailedEmail));
consumeState(_storeOpenedEmailInteractor.execute(session, accountId, detailedEmail));
}
}
}