Get state cache by AccountId
(cherry picked from commit 9bb1de613ca58e5a7cb66fbc97ecd308754d088b)
This commit is contained in:
@@ -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<State?> getState(StateType stateType);
|
||||
Future<State?> getState(AccountId accountId, StateType stateType);
|
||||
|
||||
Future<void> saveState(AccountId accountId, StateCache stateCache);
|
||||
}
|
||||
@@ -18,9 +18,10 @@ class StateDataSourceImpl extends StateDataSource {
|
||||
StateDataSourceImpl(this._stateCacheClient, this._exceptionThrower);
|
||||
|
||||
@override
|
||||
Future<State?> getState(StateType stateType) {
|
||||
Future<State?> 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);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
||||
Stream<MailboxResponse> 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<State?> getMailboxState() {
|
||||
return stateDataSource.getState(StateType.mailbox);
|
||||
Future<State?> getMailboxState(AccountId accountId) {
|
||||
return stateDataSource.getState(accountId, StateType.mailbox);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -38,7 +38,7 @@ abstract class MailboxRepository {
|
||||
|
||||
Future<bool> moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request);
|
||||
|
||||
Future<State?> getMailboxState();
|
||||
Future<State?> getMailboxState(AccountId accountId);
|
||||
|
||||
Future<bool> subscribeMailbox(Session session, AccountId accountId, SubscribeMailboxRequest request);
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ class CreateNewMailboxInteractor {
|
||||
try {
|
||||
yield Right<Failure, Success>(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<Failure, Success>(CreateNewMailboxSuccess(
|
||||
|
||||
@@ -22,7 +22,7 @@ class DeleteMultipleMailboxInteractor {
|
||||
try {
|
||||
yield Right<Failure, Success>(LoadingDeleteMultipleMailboxAll());
|
||||
|
||||
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
||||
final currentMailboxState = await _mailboxRepository.getMailboxState(accountId);
|
||||
|
||||
final listResult = await Future.wait(
|
||||
mapMailboxIdToDelete.keys.map((mailboxId) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -15,7 +15,7 @@ class MoveMailboxInteractor {
|
||||
try {
|
||||
yield Right<Failure, Success>(LoadingMoveMailbox());
|
||||
|
||||
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
||||
final currentMailboxState = await _mailboxRepository.getMailboxState(accountId);
|
||||
final result = await _mailboxRepository.moveMailbox(session, accountId, request);
|
||||
if (result) {
|
||||
yield Right<Failure, Success>(MoveMailboxSuccess(
|
||||
|
||||
@@ -15,7 +15,7 @@ class RenameMailboxInteractor {
|
||||
try {
|
||||
yield Right<Failure, Success>(LoadingRenameMailbox());
|
||||
|
||||
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
||||
final currentMailboxState = await _mailboxRepository.getMailboxState(accountId);
|
||||
|
||||
final result = await _mailboxRepository.renameMailbox(session, accountId, request);
|
||||
if (result) {
|
||||
|
||||
@@ -16,7 +16,7 @@ class SubscribeMailboxInteractor {
|
||||
try {
|
||||
yield Right<Failure, Success>(LoadingSubscribeMailbox());
|
||||
|
||||
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
||||
final currentMailboxState = await _mailboxRepository.getMailboxState(accountId);
|
||||
|
||||
final result = await _mailboxRepository.subscribeMailbox(session, accountId, request);
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ class SubscribeMultipleMailboxInteractor {
|
||||
try {
|
||||
yield Right<Failure, Success>(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;
|
||||
|
||||
Reference in New Issue
Block a user