TF-3698 Thread Detail Real time update

TF-3698 Thread Detail update reset RefreshThreadDetailAction position

TF-3698 Thread Detail refactor initializeThreadDetailEmails

TF-3698 Thread Detail refactor handleRefreshThreadDetailAction

TF-3698 Thread Detail create listThreadIds in ListEmailExtension
This commit is contained in:
DatDang
2025-05-27 11:03:28 +07:00
committed by Dat H. Pham
parent 1bc45e35f3
commit d210a892f2
28 changed files with 647 additions and 83 deletions
@@ -2,16 +2,19 @@
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/core/state.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:tmail_ui_user/features/thread/data/model/email_change_response.dart';
class EmailsResponse with EquatableMixin {
final List<Email>? emailList;
final List<EmailId>? notFoundEmailIds;
final State? state;
final EmailChangeResponse? emailChangeResponse;
const EmailsResponse({
this.emailList,
this.notFoundEmailIds,
this.state
this.state,
this.emailChangeResponse,
});
bool hasEmails() => emailList != null && emailList!.isNotEmpty;
@@ -21,5 +24,24 @@ class EmailsResponse with EquatableMixin {
bool get existNotFoundEmails => notFoundEmailIds?.isNotEmpty == true;
@override
List<Object?> get props => [emailList, notFoundEmailIds, state];
List<Object?> get props => [
emailList,
notFoundEmailIds,
state,
emailChangeResponse,
];
EmailsResponse copyWith({
List<Email>? emailList,
List<EmailId>? notFoundEmailIds,
State? state,
EmailChangeResponse? emailChangeResponse,
}) {
return EmailsResponse(
emailList: emailList ?? this.emailList,
notFoundEmailIds: notFoundEmailIds ?? this.notFoundEmailIds,
state: state ?? this.state,
emailChangeResponse: emailChangeResponse ?? this.emailChangeResponse,
);
}
}
@@ -3,6 +3,7 @@ import 'package:core/presentation/state/success.dart';
import 'package:jmap_dart_client/jmap/core/state.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/email/presentation_email.dart';
import 'package:tmail_ui_user/features/thread/data/model/email_change_response.dart';
class RefreshChangesAllEmailLoading extends LoadingState {}
@@ -10,18 +11,21 @@ class RefreshChangesAllEmailSuccess extends UIState {
final List<PresentationEmail> emailList;
final State? currentEmailState;
final MailboxId? currentMailboxId;
final EmailChangeResponse? emailChangeResponse;
RefreshChangesAllEmailSuccess({
required this.emailList,
this.currentEmailState,
this.currentMailboxId
this.currentMailboxId,
this.emailChangeResponse,
});
@override
List<Object?> get props => [
emailList,
currentEmailState,
currentMailboxId
currentMailboxId,
emailChangeResponse,
];
}
@@ -59,6 +59,8 @@ class RefreshChangesEmailsInMailboxInteractor {
return Right<Failure, Success>(RefreshChangesAllEmailSuccess(
emailList: presentationEmailList,
currentEmailState: emailResponse.state,
currentMailboxId: currentMailboxId));
currentMailboxId: currentMailboxId,
emailChangeResponse: emailResponse.emailChangeResponse,
));
}
}