diff --git a/lib/features/composer/domain/usecases/save_email_as_drafts_interactor.dart b/lib/features/composer/domain/usecases/save_email_as_drafts_interactor.dart index e959c95ac..a96366ec7 100644 --- a/lib/features/composer/domain/usecases/save_email_as_drafts_interactor.dart +++ b/lib/features/composer/domain/usecases/save_email_as_drafts_interactor.dart @@ -18,8 +18,8 @@ class SaveEmailAsDraftsInteractor { yield Right(SaveEmailAsDraftsLoading()); final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first; diff --git a/lib/features/composer/domain/usecases/send_email_interactor.dart b/lib/features/composer/domain/usecases/send_email_interactor.dart index f62a5d6ef..8255447ce 100644 --- a/lib/features/composer/domain/usecases/send_email_interactor.dart +++ b/lib/features/composer/domain/usecases/send_email_interactor.dart @@ -25,8 +25,8 @@ class SendEmailInteractor { yield Right(SendingEmailState()); final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first; diff --git a/lib/features/composer/domain/usecases/update_email_drafts_interactor.dart b/lib/features/composer/domain/usecases/update_email_drafts_interactor.dart index adf9c1781..183db238c 100644 --- a/lib/features/composer/domain/usecases/update_email_drafts_interactor.dart +++ b/lib/features/composer/domain/usecases/update_email_drafts_interactor.dart @@ -20,8 +20,8 @@ class UpdateEmailDraftsInteractor { yield Right(UpdatingEmailDrafts()); final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first; diff --git a/lib/features/email/data/repository/email_repository_impl.dart b/lib/features/email/data/repository/email_repository_impl.dart index 4d7196ace..5a46c1948 100644 --- a/lib/features/email/data/repository/email_repository_impl.dart +++ b/lib/features/email/data/repository/email_repository_impl.dart @@ -171,7 +171,7 @@ class EmailRepositoryImpl extends EmailRepository { } @override - Future getEmailState() { - return _stateDataSource.getState(StateType.email); + Future getEmailState(AccountId accountId) { + return _stateDataSource.getState(accountId, StateType.email); } } \ No newline at end of file diff --git a/lib/features/email/domain/repository/email_repository.dart b/lib/features/email/domain/repository/email_repository.dart index 301476959..09f91b39f 100644 --- a/lib/features/email/domain/repository/email_repository.dart +++ b/lib/features/email/domain/repository/email_repository.dart @@ -85,5 +85,5 @@ abstract class EmailRepository { Future deleteEmailPermanently(Session session, AccountId accountId, EmailId emailId); - Future getEmailState(); + Future getEmailState(AccountId accountId); } \ No newline at end of file diff --git a/lib/features/email/domain/usecases/delete_email_permanently_interactor.dart b/lib/features/email/domain/usecases/delete_email_permanently_interactor.dart index 567f4cfe9..0411565ad 100644 --- a/lib/features/email/domain/usecases/delete_email_permanently_interactor.dart +++ b/lib/features/email/domain/usecases/delete_email_permanently_interactor.dart @@ -18,8 +18,8 @@ class DeleteEmailPermanentlyInteractor { yield Right(StartDeleteEmailPermanently()); final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first; diff --git a/lib/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart b/lib/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart index d2686e9c7..ea5a0ab0f 100644 --- a/lib/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart +++ b/lib/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart @@ -18,8 +18,8 @@ class DeleteMultipleEmailsPermanentlyInteractor { yield Right(LoadingDeleteMultipleEmailsPermanentlyAll()); final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first; diff --git a/lib/features/email/domain/usecases/get_stored_email_state_interactor.dart b/lib/features/email/domain/usecases/get_stored_email_state_interactor.dart index effd5531f..623512d8d 100644 --- a/lib/features/email/domain/usecases/get_stored_email_state_interactor.dart +++ b/lib/features/email/domain/usecases/get_stored_email_state_interactor.dart @@ -12,7 +12,7 @@ class GetStoredEmailStateInteractor { Stream> execute(AccountId accountId) async* { try { - final state = await _emailRepository.getEmailState(); + final state = await _emailRepository.getEmailState(accountId); if (state != null) { yield Right(GetStoredEmailStateSuccess(state)); } else { diff --git a/lib/features/email/domain/usecases/mark_as_email_read_interactor.dart b/lib/features/email/domain/usecases/mark_as_email_read_interactor.dart index c5966111a..6054ae2c2 100644 --- a/lib/features/email/domain/usecases/mark_as_email_read_interactor.dart +++ b/lib/features/email/domain/usecases/mark_as_email_read_interactor.dart @@ -17,8 +17,8 @@ class MarkAsEmailReadInteractor { Stream> execute(Session session, AccountId accountId, Email email, ReadActions readAction) async* { try { final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first; diff --git a/lib/features/email/domain/usecases/mark_as_star_email_interactor.dart b/lib/features/email/domain/usecases/mark_as_star_email_interactor.dart index 0f056f838..66efec4fd 100644 --- a/lib/features/email/domain/usecases/mark_as_star_email_interactor.dart +++ b/lib/features/email/domain/usecases/mark_as_star_email_interactor.dart @@ -14,7 +14,7 @@ class MarkAsStarEmailInteractor { Stream> execute(Session session, AccountId accountId, Email email, MarkStarAction markStarAction) async* { try { - final currentEmailState = await emailRepository.getEmailState(); + final currentEmailState = await emailRepository.getEmailState(accountId); final result = await emailRepository.markAsStar(session, accountId, [email], markStarAction); if (result.isNotEmpty) { final updatedEmail = email.updatedEmail(newKeywords: result.first.keywords); diff --git a/lib/features/email/domain/usecases/move_to_mailbox_interactor.dart b/lib/features/email/domain/usecases/move_to_mailbox_interactor.dart index d7b7d033a..8c53d06ce 100644 --- a/lib/features/email/domain/usecases/move_to_mailbox_interactor.dart +++ b/lib/features/email/domain/usecases/move_to_mailbox_interactor.dart @@ -18,8 +18,8 @@ class MoveToMailboxInteractor { yield Right(LoadingMoveToMailbox()); final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first; diff --git a/lib/features/mailbox/data/datasource/state_datasource.dart b/lib/features/mailbox/data/datasource/state_datasource.dart index 3cdd1ee9c..ece1a5d63 100644 --- a/lib/features/mailbox/data/datasource/state_datasource.dart +++ b/lib/features/mailbox/data/datasource/state_datasource.dart @@ -4,7 +4,7 @@ import 'package:tmail_ui_user/features/mailbox/data/model/state_cache.dart'; import 'package:tmail_ui_user/features/mailbox/data/model/state_type.dart'; abstract class StateDataSource { - Future getState(StateType stateType); + Future getState(AccountId accountId, StateType stateType); Future saveState(AccountId accountId, StateCache stateCache); } \ No newline at end of file diff --git a/lib/features/mailbox/data/datasource_impl/state_datasource_impl.dart b/lib/features/mailbox/data/datasource_impl/state_datasource_impl.dart index 428784c00..02c8d0137 100644 --- a/lib/features/mailbox/data/datasource_impl/state_datasource_impl.dart +++ b/lib/features/mailbox/data/datasource_impl/state_datasource_impl.dart @@ -18,9 +18,10 @@ class StateDataSourceImpl extends StateDataSource { StateDataSourceImpl(this._stateCacheClient, this._exceptionThrower); @override - Future getState(StateType stateType) { + Future getState(AccountId accountId, StateType stateType) { return Future.sync(() async { - final stateCache = await _stateCacheClient.getItem(stateType.value); + final stateKey = TupleKey(stateType.value, accountId.asString).toString(); + final stateCache = await _stateCacheClient.getItem(stateKey); return stateCache?.toState(); }).catchError(_exceptionThrower.throwException); } diff --git a/lib/features/mailbox/data/repository/mailbox_repository_impl.dart b/lib/features/mailbox/data/repository/mailbox_repository_impl.dart index 396947ac4..d6252ac7f 100644 --- a/lib/features/mailbox/data/repository/mailbox_repository_impl.dart +++ b/lib/features/mailbox/data/repository/mailbox_repository_impl.dart @@ -40,7 +40,7 @@ class MailboxRepositoryImpl extends MailboxRepository { Stream getAllMailbox(Session session, AccountId accountId, {Properties? properties}) async* { final localMailboxResponse = await Future.wait([ mapDataSource[DataSourceType.local]!.getAllMailboxCache(accountId), - stateDataSource.getState(StateType.mailbox) + stateDataSource.getState(accountId, StateType.mailbox) ]).then((List response) { return MailboxResponse(mailboxes: response.first, state: response.last); }); @@ -84,7 +84,7 @@ class MailboxRepositoryImpl extends MailboxRepository { final newMailboxResponse = await Future.wait([ mapDataSource[DataSourceType.local]!.getAllMailboxCache(accountId), - stateDataSource.getState(StateType.mailbox) + stateDataSource.getState(accountId, StateType.mailbox) ]).then((List response) { return MailboxResponse(mailboxes: response.first, state: response.last); }); @@ -147,7 +147,7 @@ class MailboxRepositoryImpl extends MailboxRepository { final newMailboxResponse = await Future.wait([ mapDataSource[DataSourceType.local]!.getAllMailboxCache(accountId), - stateDataSource.getState(StateType.mailbox) + stateDataSource.getState(accountId, StateType.mailbox) ]).then((List response) { return MailboxResponse(mailboxes: response.first, state: response.last); }); @@ -191,8 +191,8 @@ class MailboxRepositoryImpl extends MailboxRepository { } @override - Future getMailboxState() { - return stateDataSource.getState(StateType.mailbox); + Future getMailboxState(AccountId accountId) { + return stateDataSource.getState(accountId, StateType.mailbox); } @override diff --git a/lib/features/mailbox/domain/repository/mailbox_repository.dart b/lib/features/mailbox/domain/repository/mailbox_repository.dart index 18f888f9b..b4dbc2a75 100644 --- a/lib/features/mailbox/domain/repository/mailbox_repository.dart +++ b/lib/features/mailbox/domain/repository/mailbox_repository.dart @@ -38,7 +38,7 @@ abstract class MailboxRepository { Future moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request); - Future getMailboxState(); + Future getMailboxState(AccountId accountId); Future subscribeMailbox(Session session, AccountId accountId, SubscribeMailboxRequest request); diff --git a/lib/features/mailbox/domain/usecases/create_new_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/create_new_mailbox_interactor.dart index 3a38d8a31..24abb7c19 100644 --- a/lib/features/mailbox/domain/usecases/create_new_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/create_new_mailbox_interactor.dart @@ -19,7 +19,7 @@ class CreateNewMailboxInteractor { try { yield Right(LoadingCreateNewMailbox()); - final currentMailboxState = await _mailboxRepository.getMailboxState(); + final currentMailboxState = await _mailboxRepository.getMailboxState(accountId); final newMailbox = await _mailboxRepository.createNewMailbox(session, accountId, newMailboxRequest); if (newMailbox != null) { yield Right(CreateNewMailboxSuccess( diff --git a/lib/features/mailbox/domain/usecases/delete_multiple_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/delete_multiple_mailbox_interactor.dart index 5cad6c172..7951166b0 100644 --- a/lib/features/mailbox/domain/usecases/delete_multiple_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/delete_multiple_mailbox_interactor.dart @@ -22,7 +22,7 @@ class DeleteMultipleMailboxInteractor { try { yield Right(LoadingDeleteMultipleMailboxAll()); - final currentMailboxState = await _mailboxRepository.getMailboxState(); + final currentMailboxState = await _mailboxRepository.getMailboxState(accountId); final listResult = await Future.wait( mapMailboxIdToDelete.keys.map((mailboxId) { diff --git a/lib/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart b/lib/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart index 42715eaf3..72548aa23 100644 --- a/lib/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart +++ b/lib/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart @@ -28,8 +28,8 @@ class MarkAsMailboxReadInteractor { onProgressController.add(Right(MarkAsMailboxReadLoading())); final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first; diff --git a/lib/features/mailbox/domain/usecases/move_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/move_mailbox_interactor.dart index e1ac008bb..33283e3b5 100644 --- a/lib/features/mailbox/domain/usecases/move_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/move_mailbox_interactor.dart @@ -15,7 +15,7 @@ class MoveMailboxInteractor { try { yield Right(LoadingMoveMailbox()); - final currentMailboxState = await _mailboxRepository.getMailboxState(); + final currentMailboxState = await _mailboxRepository.getMailboxState(accountId); final result = await _mailboxRepository.moveMailbox(session, accountId, request); if (result) { yield Right(MoveMailboxSuccess( diff --git a/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart index bfadd4d15..414b2357e 100644 --- a/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart @@ -15,7 +15,7 @@ class RenameMailboxInteractor { try { yield Right(LoadingRenameMailbox()); - final currentMailboxState = await _mailboxRepository.getMailboxState(); + final currentMailboxState = await _mailboxRepository.getMailboxState(accountId); final result = await _mailboxRepository.renameMailbox(session, accountId, request); if (result) { diff --git a/lib/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart index 28faf317b..525724cd5 100644 --- a/lib/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart @@ -16,7 +16,7 @@ class SubscribeMailboxInteractor { try { yield Right(LoadingSubscribeMailbox()); - final currentMailboxState = await _mailboxRepository.getMailboxState(); + final currentMailboxState = await _mailboxRepository.getMailboxState(accountId); final result = await _mailboxRepository.subscribeMailbox(session, accountId, request); diff --git a/lib/features/mailbox/domain/usecases/subscribe_multiple_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/subscribe_multiple_mailbox_interactor.dart index 6bb7f6531..295859929 100644 --- a/lib/features/mailbox/domain/usecases/subscribe_multiple_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/subscribe_multiple_mailbox_interactor.dart @@ -20,7 +20,7 @@ class SubscribeMultipleMailboxInteractor { try { yield Right(LoadingSubscribeMultipleMailbox()); - final currentMailboxState = await _mailboxRepository.getMailboxState(); + final currentMailboxState = await _mailboxRepository.getMailboxState(accountId); final listResult = await _mailboxRepository.subscribeMultipleMailbox(session, accountId, subscribeRequest); final matchedSize = listResult.length == subscribeRequest.mailboxIdsSubscribe.length; diff --git a/lib/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart index 7f2ff1095..11d063014 100644 --- a/lib/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart +++ b/lib/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart @@ -16,8 +16,8 @@ class RemoveEmailDraftsInteractor { Stream> execute(Session session, AccountId accountId, EmailId emailId) async* { try { final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first; diff --git a/lib/features/push_notification/domain/usecases/get_email_changes_to_remove_notification_interactor.dart b/lib/features/push_notification/domain/usecases/get_email_changes_to_remove_notification_interactor.dart index 1ed2e3cd6..cd64f30cb 100644 --- a/lib/features/push_notification/domain/usecases/get_email_changes_to_remove_notification_interactor.dart +++ b/lib/features/push_notification/domain/usecases/get_email_changes_to_remove_notification_interactor.dart @@ -29,7 +29,7 @@ class GetEmailChangesToRemoveNotificationInteractor { try { yield Right(GetEmailChangesToRemoveNotificationLoading()); - final currentState = await _emailRepository.getEmailState(); + final currentState = await _emailRepository.getEmailState(accountId); log('GetEmailChangesToRemoveNotificationInteractor::execute():currentState: $currentState'); if (currentState != null) { final emailIds = await _fcmRepository.getEmailChangesToRemoveNotification( diff --git a/lib/features/thread/data/repository/thread_repository_impl.dart b/lib/features/thread/data/repository/thread_repository_impl.dart index 07c2689fc..eda1f8bf4 100644 --- a/lib/features/thread/data/repository/thread_repository_impl.dart +++ b/lib/features/thread/data/repository/thread_repository_impl.dart @@ -51,7 +51,7 @@ class ThreadRepositoryImpl extends ThreadRepository { sort: sort, limit: limit, filterOption: emailFilter?.filterOption), - stateDataSource.getState(StateType.email) + stateDataSource.getState(accountId, StateType.email) ]).then((List response) { return EmailsResponse(emailList: response.first, state: response.last); }); @@ -110,7 +110,7 @@ class ThreadRepositoryImpl extends ThreadRepository { sort: sort, limit: limit, filterOption: emailFilter?.filterOption), - stateDataSource.getState(StateType.email) + stateDataSource.getState(accountId, StateType.email) ]).then((List response) { return EmailsResponse(emailList: response.first, state: response.last); }); @@ -224,7 +224,7 @@ class ThreadRepositoryImpl extends ThreadRepository { sort: sort, filterOption: emailFilter?.filterOption ), - stateDataSource.getState(StateType.email) + stateDataSource.getState(accountId, StateType.email) ]).then((List response) { return EmailsResponse(emailList: response.first, state: response.last); }); diff --git a/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart b/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart index 52efcf500..feffe1140 100644 --- a/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart +++ b/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart @@ -24,8 +24,8 @@ class EmptyTrashFolderInteractor { yield Right(LoadingState()); final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first; diff --git a/lib/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart b/lib/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart index 739cf4357..ed97c85bd 100644 --- a/lib/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart +++ b/lib/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart @@ -24,8 +24,8 @@ class MarkAsMultipleEmailReadInteractor { yield Right(LoadingMarkAsMultipleEmailReadAll()); final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first; diff --git a/lib/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart b/lib/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart index e68ffe5a5..bc7efe87c 100644 --- a/lib/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart +++ b/lib/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart @@ -21,7 +21,7 @@ class MarkAsStarMultipleEmailInteractor { try { yield Right(LoadingMarkAsStarMultipleEmailAll()); - final currentEmailState = await _emailRepository.getEmailState(); + final currentEmailState = await _emailRepository.getEmailState(accountId); final listEmailNeedMarkStar = emails .where((email) => markStarAction == MarkStarAction.unMarkStar ? email.hasStarred : !email.hasStarred) diff --git a/lib/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart b/lib/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart index 5f3077d58..e84b0123b 100644 --- a/lib/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart +++ b/lib/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart @@ -24,8 +24,8 @@ class MoveMultipleEmailToMailboxInteractor { yield Right(LoadingMoveMultipleEmailToMailboxAll()); final listState = await Future.wait([ - _mailboxRepository.getMailboxState(), - _emailRepository.getEmailState(), + _mailboxRepository.getMailboxState(accountId), + _emailRepository.getEmailState(accountId), ], eagerError: true); final currentMailboxState = listState.first;