TF-3601 View entire message on dialog
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user