TF-3601 View entire message on dialog

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-03-31 04:29:39 +07:00
committed by Dat H. Pham
parent 1c97c8a189
commit 7342bbc11d
19 changed files with 273 additions and 1 deletions
@@ -0,0 +1,34 @@
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:jmap_dart_client/jmap/core/user_name.dart';
import 'package:model/email/attachment.dart';
import 'package:model/email/presentation_email.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class ViewEntireMessageRequest with EquatableMixin {
final UserName userName;
final PresentationEmail presentationEmail;
final List<Attachment> attachments;
final String emailContent;
final Locale locale;
final AppLocalizations appLocalizations;
ViewEntireMessageRequest({
required this.userName,
required this.presentationEmail,
required this.attachments,
required this.emailContent,
required this.locale,
required this.appLocalizations,
});
@override
List<Object?> get props => [
userName,
presentationEmail,
attachments,
emailContent,
locale,
appLocalizations,
];
}
@@ -29,6 +29,7 @@ import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
import 'package:tmail_ui_user/features/email/domain/model/preview_email_eml_request.dart';
import 'package:tmail_ui_user/features/email/domain/model/restore_deleted_message_request.dart';
import 'package:tmail_ui_user/features/email/domain/model/view_entire_message_request.dart';
import 'package:tmail_ui_user/features/email/presentation/model/eml_previewer.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
@@ -219,4 +220,6 @@ abstract class EmailRepository {
AccountRequest accountRequest,
{CancelToken? cancelToken}
);
Future<String> generateEntireMessageAsDocument(ViewEntireMessageRequest entireMessageRequest);
}
@@ -0,0 +1,18 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class GettingEntireMessageAsDocument extends LoadingState {}
class GetEntireMessageAsDocumentSuccess extends UIState {
final String messageDocument;
GetEntireMessageAsDocumentSuccess(this.messageDocument);
@override
List<Object?> get props => [messageDocument];
}
class GetEntireMessageAsDocumentFailure extends FeatureFailure {
GetEntireMessageAsDocumentFailure({dynamic exception}) : super(exception: exception);
}
@@ -0,0 +1,22 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/email/domain/model/view_entire_message_request.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
import 'package:tmail_ui_user/features/email/domain/state/get_entire_message_as_document_state.dart';
class GetEntireMessageAsDocumentInteractor {
final EmailRepository _emailRepository;
GetEntireMessageAsDocumentInteractor(this._emailRepository);
Stream<Either<Failure, Success>> execute(ViewEntireMessageRequest messageRequest) async* {
try {
yield Right(GettingEntireMessageAsDocument());
final messageDocument = await _emailRepository.generateEntireMessageAsDocument(messageRequest);
yield Right(GetEntireMessageAsDocumentSuccess(messageDocument));
} catch (e) {
yield Left(GetEntireMessageAsDocumentFailure(exception: e));
}
}
}