diff --git a/lib/features/mailbox/domain/state/get_all_mailboxes_state.dart b/lib/features/mailbox/domain/state/get_all_mailboxes_state.dart index 31a8861c8..6dc18cb45 100644 --- a/lib/features/mailbox/domain/state/get_all_mailboxes_state.dart +++ b/lib/features/mailbox/domain/state/get_all_mailboxes_state.dart @@ -3,18 +3,16 @@ import 'package:jmap_dart_client/jmap/core/state.dart'; import 'package:model/mailbox/presentation_mailbox.dart'; class GetAllMailboxSuccess extends UIState { - final List defaultMailboxList; - final List folderMailboxList; + final List mailboxList; final State? currentMailboxState; GetAllMailboxSuccess({ - required this.defaultMailboxList, - required this.folderMailboxList, + required this.mailboxList, required this.currentMailboxState }); @override - List get props => [defaultMailboxList, folderMailboxList, currentMailboxState]; + List get props => [mailboxList, currentMailboxState]; } class GetAllMailboxFailure extends FeatureFailure { diff --git a/lib/features/mailbox/domain/usecases/get_all_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/get_all_mailbox_interactor.dart index c41929202..20b4a58b2 100644 --- a/lib/features/mailbox/domain/usecases/get_all_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/get_all_mailbox_interactor.dart @@ -4,7 +4,6 @@ import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/extensions/list_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_state.dart'; @@ -26,12 +25,12 @@ class GetAllMailboxInteractor { } Either _toGetMailboxState(MailboxResponse mailboxResponse) { - final tupleList = mailboxResponse.mailboxes - ?.splitMailboxList((mailbox) => mailbox.hasRole()) ?? Tuple2([], []); + final mailboxList = mailboxResponse.mailboxes + ?.map((mailbox) => mailbox.toPresentationMailbox()).toList() + ?? List.empty(); return Right(GetAllMailboxSuccess( - defaultMailboxList: tupleList.value1, - folderMailboxList: tupleList.value2, + mailboxList: mailboxList, currentMailboxState: mailboxResponse.state) ); } diff --git a/lib/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart index ed84b5ca4..66d8dee68 100644 --- a/lib/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart @@ -1,12 +1,11 @@ import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/state.dart' as jmapState; +import 'package:model/model.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart'; import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_state.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/extensions/list_mailbox_extension.dart'; -import 'package:model/model.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmapState; class RefreshAllMailboxInteractor { final MailboxRepository _mailboxRepository; @@ -26,12 +25,13 @@ class RefreshAllMailboxInteractor { } Either _toGetMailboxState(MailboxResponse mailboxResponse) { - final tupleList = mailboxResponse.mailboxes - ?.splitMailboxList((mailbox) => mailbox.hasRole()) ?? Tuple2([], []); + final mailboxList = mailboxResponse.mailboxes + ?.map((mailbox) => mailbox.toPresentationMailbox()).toList() + ?? List.empty(); return Right(GetAllMailboxSuccess( - defaultMailboxList: tupleList.value1, - folderMailboxList: tupleList.value2, - currentMailboxState: mailboxResponse.state)); + mailboxList: mailboxList, + currentMailboxState: mailboxResponse.state) + ); } } \ No newline at end of file diff --git a/test/features/mailbox/domain/usecases/get_all_mailbox_interactor_test.dart b/test/features/mailbox/domain/usecases/get_all_mailbox_interactor_test.dart deleted file mode 100644 index bc0b59e3e..000000000 --- a/test/features/mailbox/domain/usecases/get_all_mailbox_interactor_test.dart +++ /dev/null @@ -1,79 +0,0 @@ -import 'dart:async'; - -import 'package:core/core.dart'; -import 'package:dartz/dartz.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; -import 'package:mockito/annotations.dart'; -import 'package:mockito/mockito.dart'; -import 'package:model/extensions/mailbox_extension.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_state.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/usecases/get_all_mailbox_interactor.dart'; - -import '../../../../fixtures/account_fixtures.dart'; -import '../../../../fixtures/mailbox_fixtures.dart'; -import 'get_all_mailbox_interactor_test.mocks.dart'; - -@GenerateMocks([MailboxRepository]) -void main() { - late MailboxRepository mailboxRepository; - late GetAllMailboxInteractor getAllMailboxInteractor; - - group('[GetAllMailboxInteractor]', () { - - setUp(() { - mailboxRepository = MockMailboxRepository(); - getAllMailboxInteractor = GetAllMailboxInteractor(mailboxRepository); - }); - - test('getAllMailboxInteractor should execute to get all mailbox from cache and network', () async { - when(mailboxRepository.getAllMailbox(AccountFixtures.aliceAccountId)) - .thenAnswer((_) => Stream.fromIterable({ - MailboxResponse( - mailboxes: { - MailboxFixtures.inboxMailbox, - MailboxFixtures.sentMailbox - }.toList(), - state: jmap.State('s1')), - MailboxResponse( - mailboxes: { - MailboxFixtures.inboxMailbox, - MailboxFixtures.sentMailbox, - MailboxFixtures.folder1, - MailboxFixtures.folder1_1 - }.toList(), - state: jmap.State('s1')) - })); - - final streamStates = getAllMailboxInteractor.execute(AccountFixtures.aliceAccountId); - - final states = await streamStates.toList(); - - expect(states.length, equals(3)); - expect(states, containsAllInOrder({ - Right(LoadingState()), - Right(GetAllMailboxSuccess( - defaultMailboxList: { - MailboxFixtures.inboxMailbox.toPresentationMailbox(), - MailboxFixtures.sentMailbox.toPresentationMailbox() - }.toList(), - folderMailboxList: List.empty(), - currentMailboxState: jmap.State('s1')) - ), - Right(GetAllMailboxSuccess( - defaultMailboxList: { - MailboxFixtures.inboxMailbox.toPresentationMailbox(), - MailboxFixtures.sentMailbox.toPresentationMailbox() - }.toList(), - folderMailboxList: { - MailboxFixtures.folder1.toPresentationMailbox(), - MailboxFixtures.folder1_1.toPresentationMailbox() - }.toList(), - currentMailboxState: jmap.State('s1')) - ) - })); - }); - }); -} \ No newline at end of file diff --git a/test/features/mailbox/domain/usecases/refresh_all_mailbox_interactor_test.dart b/test/features/mailbox/domain/usecases/refresh_all_mailbox_interactor_test.dart deleted file mode 100644 index 97051643c..000000000 --- a/test/features/mailbox/domain/usecases/refresh_all_mailbox_interactor_test.dart +++ /dev/null @@ -1,66 +0,0 @@ -import 'dart:async'; - -import 'package:core/core.dart'; -import 'package:dartz/dartz.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; -import 'package:mockito/annotations.dart'; -import 'package:mockito/mockito.dart'; -import 'package:model/extensions/mailbox_extension.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_state.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart'; - -import '../../../../fixtures/account_fixtures.dart'; -import '../../../../fixtures/mailbox_fixtures.dart'; -import '../../../../fixtures/state_fixtures.dart'; -import 'refresh_all_mailbox_interactor_test.mocks.dart'; - -@GenerateMocks([MailboxRepository]) -void main() { - late MailboxRepository mailboxRepository; - late RefreshAllMailboxInteractor refreshAllMailboxInteractor; - - group('[RefreshAllMailboxInteractor]', () { - - setUp(() { - mailboxRepository = MockMailboxRepository(); - refreshAllMailboxInteractor = RefreshAllMailboxInteractor(mailboxRepository); - }); - - test('refreshAllMailboxInteractor should execute to get all mailbox from cache and combine with network changed', () async { - when(mailboxRepository.refresh(AccountFixtures.aliceAccountId, StateFixtures.currentMailboxState)) - .thenAnswer((_) => Stream.fromIterable({ - MailboxResponse( - mailboxes: { - MailboxFixtures.inboxMailbox, - MailboxFixtures.sentMailbox, - MailboxFixtures.folder1, - MailboxFixtures.folder1_1 - }.toList(), - state: jmap.State('s1')) - })); - - final streamStates = refreshAllMailboxInteractor.execute(AccountFixtures.aliceAccountId, StateFixtures.currentMailboxState); - - final states = await streamStates.toList(); - - expect(states.length, equals(2)); - expect(states, containsAllInOrder({ - Right(RefreshingState()), - Right(GetAllMailboxSuccess( - defaultMailboxList: { - MailboxFixtures.inboxMailbox.toPresentationMailbox(), - MailboxFixtures.sentMailbox.toPresentationMailbox() - }.toList(), - folderMailboxList: { - MailboxFixtures.folder1.toPresentationMailbox(), - MailboxFixtures.folder1_1.toPresentationMailbox() - }.toList(), - currentMailboxState: jmap.State('s1')) - ) - })); - }); - }); -} \ No newline at end of file