TF-2536 Change the logic to get all mailbox

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2024-02-05 16:16:40 +07:00
committed by Dat PHAM HOANG
parent 560bba622c
commit d8bfb83e89
19 changed files with 273 additions and 115 deletions
@@ -0,0 +1 @@
class NotFoundGetMailboxResponseException implements Exception {}
@@ -0,0 +1,6 @@
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart';
class CacheMailboxResponse extends MailboxResponse {
CacheMailboxResponse({required super.mailboxes, super.state});
}
@@ -0,0 +1,6 @@
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart';
class FullMailboxResponse extends MailboxResponse {
FullMailboxResponse({required super.mailboxes, super.state});
}
@@ -3,21 +3,15 @@ import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/core/state.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
class MailboxResponse with EquatableMixin {
final List<Mailbox>? mailboxes;
abstract class MailboxResponse with EquatableMixin {
final List<Mailbox> mailboxes;
final State? state;
MailboxResponse({
this.mailboxes,
required this.mailboxes,
this.state
});
bool hasData() {
return mailboxes != null
&& mailboxes!.isNotEmpty
&& state != null;
}
@override
List<Object?> get props => [mailboxes, state];
}
@@ -0,0 +1,16 @@
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart';
class PartialMailboxResponse extends MailboxResponse {
final List<Id> mailboxNotFound;
PartialMailboxResponse({
required this.mailboxNotFound,
required super.mailboxes,
super.state,
});
@override
List<Object?> get props => [mailboxNotFound, ...super.props];
}
@@ -1,9 +1,10 @@
import 'package:core/core.dart';
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:model/model.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';
@@ -30,8 +31,8 @@ class GetAllMailboxInteractor {
Either<Failure, Success> _toGetMailboxState(MailboxResponse mailboxResponse) {
final mailboxList = mailboxResponse.mailboxes
?.map((mailbox) => mailbox.toPresentationMailbox()).toList()
?? List<PresentationMailbox>.empty();
.map((mailbox) => mailbox.toPresentationMailbox())
.toList();
return Right<Failure, Success>(GetAllMailboxSuccess(
mailboxList: mailboxList,
@@ -7,7 +7,6 @@ import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap_state;
import 'package:model/extensions/mailbox_extension.dart';
import 'package:model/mailbox/presentation_mailbox.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/refresh_changes_all_mailboxes_state.dart';
@@ -36,8 +35,8 @@ class RefreshAllMailboxInteractor {
Either<Failure, Success> _toGetMailboxState(MailboxResponse mailboxResponse) {
final mailboxList = mailboxResponse.mailboxes
?.map((mailbox) => mailbox.toPresentationMailbox()).toList()
?? List<PresentationMailbox>.empty();
.map((mailbox) => mailbox.toPresentationMailbox())
.toList();
return Right<Failure, Success>(RefreshChangesAllMailboxSuccess(
mailboxList: mailboxList,