TF-1810 Implement store detailed email to cache
(cherry picked from commit 6be6d69ad8e5fb05d839e2649b1f444613eea6d1)
This commit is contained in:
@@ -14,6 +14,7 @@ import 'package:tmail_ui_user/features/email/data/network/email_api.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/repository/email_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/get_detailed_email_by_id_interator.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/store_detailed_email_to_cache_interator.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_impl/mailbox_cache_datasource_impl.dart';
|
||||
@@ -49,6 +50,7 @@ import 'package:tmail_ui_user/features/push_notification/domain/usecases/store_m
|
||||
import 'package:tmail_ui_user/features/push_notification/domain/usecases/store_subscription_interator.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/datasource/thread_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/datasource_impl/thread_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/local/email_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/network/thread_isolate_worker.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart';
|
||||
@@ -101,6 +103,7 @@ class FcmInteractorBindings extends InteractorsBindings {
|
||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||
Get.find<DetailedEmailCacheManager>(),
|
||||
Get.find<DetailedEmailCacheWorkerQueue>(),
|
||||
Get.find<EmailCacheManager>(),
|
||||
Get.find<FileUtils>(),
|
||||
Get.find<CacheExceptionThrower>()));
|
||||
}
|
||||
@@ -128,6 +131,7 @@ class FcmInteractorBindings extends InteractorsBindings {
|
||||
Get.find<FCMRepositoryImpl>(),
|
||||
Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => GetDetailedEmailByIdInteractor(Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => StoreDetailedEmailToCacheInteractor(Get.find<EmailRepository>()));
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -24,6 +24,7 @@ import 'package:tmail_ui_user/features/email/domain/state/get_detailed_email_by_
|
||||
import 'package:tmail_ui_user/features/email/domain/state/get_stored_state_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/get_detailed_email_by_id_interator.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/get_stored_email_state_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/store_detailed_email_to_cache_interator.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/domain/exceptions/fcm_exception.dart';
|
||||
@@ -61,6 +62,7 @@ class EmailChangeListener extends ChangeListener {
|
||||
GetNewReceiveEmailFromNotificationInteractor? _getNewReceiveEmailFromNotificationInteractor;
|
||||
GetDetailedEmailByIdInteractor? _getDetailedEmailByIdInteractor;
|
||||
DynamicUrlInterceptors? _dynamicUrlInterceptors;
|
||||
StoreDetailedEmailToCacheInteractor? _storeDetailedEmailToCacheInteractor;
|
||||
|
||||
jmap.State? _newStateEmailDelivery;
|
||||
AccountId? _accountId;
|
||||
@@ -81,6 +83,7 @@ class EmailChangeListener extends ChangeListener {
|
||||
_getNewReceiveEmailFromNotificationInteractor = getBinding<GetNewReceiveEmailFromNotificationInteractor>();
|
||||
_getDetailedEmailByIdInteractor = getBinding<GetDetailedEmailByIdInteractor>();
|
||||
_dynamicUrlInterceptors = getBinding<DynamicUrlInterceptors>();
|
||||
_storeDetailedEmailToCacheInteractor = getBinding<StoreDetailedEmailToCacheInteractor>();
|
||||
} catch (e) {
|
||||
logError('EmailChangeListener::_internal(): IS NOT REGISTERED: ${e.toString()}');
|
||||
}
|
||||
@@ -99,7 +102,9 @@ class EmailChangeListener extends ChangeListener {
|
||||
_handleRemoveNotificationWhenEmailMarkAsRead(action.newState, action.accountId, action.session);
|
||||
}
|
||||
_synchronizeEmailOnForegroundAction(action.newState);
|
||||
_getNewReceiveEmailFromNotificationAction(action.session, action.accountId, action.newState);
|
||||
if (!BuildUtils.isWeb) {
|
||||
_getNewReceiveEmailFromNotificationAction(action.session, action.accountId, action.newState);
|
||||
}
|
||||
} else if (action is PushNotificationAction) {
|
||||
_pushNotificationAction(action.newState, action.accountId, action.userName, action.session);
|
||||
} else if (action is StoreEmailStateToRefreshAction) {
|
||||
@@ -240,7 +245,11 @@ class EmailChangeListener extends ChangeListener {
|
||||
} else if (success is GetNewReceiveEmailFromNotificationSuccess) {
|
||||
_handleGetNewReceiveEmailFromNotificationSuccess(success.session, success.accountId, success.emailIds);
|
||||
} else if (success is GetDetailedEmailByIdSuccess) {
|
||||
_handleGetDetailedEmailByIdActionSuccess(success.presentationEmail, success.detailedEmail);
|
||||
_handleGetDetailedEmailByIdActionSuccess(
|
||||
success.session,
|
||||
success.accountId,
|
||||
success.email,
|
||||
success.detailedEmail);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -307,7 +316,7 @@ class EmailChangeListener extends ChangeListener {
|
||||
}
|
||||
}
|
||||
|
||||
void _handleGetNewReceiveEmailFromNotificationSuccess(Session? session, AccountId accountId, List<EmailId> emailIds) {
|
||||
void _handleGetNewReceiveEmailFromNotificationSuccess(Session? session, AccountId accountId, Set<EmailId> emailIds) {
|
||||
log('EmailChangeListener::_handleGetNewReceiveEmailFromNotificationSuccess():emailIds: $emailIds');
|
||||
for (var emailId in emailIds) {
|
||||
_getDetailedEmailByIdAction(session, accountId, emailId);
|
||||
@@ -328,7 +337,20 @@ class EmailChangeListener extends ChangeListener {
|
||||
}
|
||||
}
|
||||
|
||||
void _handleGetDetailedEmailByIdActionSuccess(PresentationEmail presentationEmail, DetailedEmail detailedEmail) {
|
||||
log('EmailChangeListener::_handleGetDetailedEmailByIdActionSuccess():emailID: ${presentationEmail.id} | Content: ${detailedEmail.htmlEmailContent}');
|
||||
void _handleGetDetailedEmailByIdActionSuccess(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
Email email,
|
||||
DetailedEmail detailedEmail
|
||||
) {
|
||||
log('EmailChangeListener::_handleGetDetailedEmailByIdActionSuccess():emailId: ${email.id}');
|
||||
if (_storeDetailedEmailToCacheInteractor != null) {
|
||||
consumeState(_storeDetailedEmailToCacheInteractor!.execute(
|
||||
session,
|
||||
accountId,
|
||||
email,
|
||||
detailedEmail
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user