TF-3775 Thread Detail handle error getEmailLoaded
TF-3775 Thread Detail readd EventBodyContentWidget maxHeight TF-3775 Thread Detail fix max lines subject mobile TF-3775 Thread Detail add email attachments top spacing TF-3775 Thread Detail fix email not updated on move/trash/spam TF-3775 Thread Detail Fix exception fast switch email in tablet large TF-3775 Thread Detail Adjust MailUnsubscribedBanner vertical spacing
This commit is contained in:
@@ -76,7 +76,6 @@ class EmailBindings extends BaseBindings {
|
|||||||
Get.find<DownloadAttachmentsInteractor>(),
|
Get.find<DownloadAttachmentsInteractor>(),
|
||||||
Get.find<DeviceManager>(),
|
Get.find<DeviceManager>(),
|
||||||
Get.find<ExportAttachmentInteractor>(),
|
Get.find<ExportAttachmentInteractor>(),
|
||||||
Get.find<MoveToMailboxInteractor>(),
|
|
||||||
Get.find<MarkAsStarEmailInteractor>(),
|
Get.find<MarkAsStarEmailInteractor>(),
|
||||||
Get.find<DownloadAttachmentForWebInteractor>(),
|
Get.find<DownloadAttachmentForWebInteractor>(),
|
||||||
Get.find<GetAllIdentitiesInteractor>(),
|
Get.find<GetAllIdentitiesInteractor>(),
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_file_dialog/flutter_file_dialog.dart';
|
import 'package:flutter_file_dialog/flutter_file_dialog.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:get/get_navigation/src/dialog/dialog_route.dart';
|
import 'package:get/get_navigation/src/dialog/dialog_route.dart';
|
||||||
import 'package:http_parser/http_parser.dart';
|
import 'package:http_parser/http_parser.dart';
|
||||||
@@ -42,14 +41,11 @@ import 'package:share_plus/share_plus.dart';
|
|||||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
|
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
|
||||||
import 'package:tmail_ui_user/features/base/state/button_state.dart';
|
import 'package:tmail_ui_user/features/base/state/button_state.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
|
||||||
import 'package:tmail_ui_user/features/email/domain/exceptions/email_exceptions.dart';
|
import 'package:tmail_ui_user/features/email/domain/exceptions/email_exceptions.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/extensions/list_attachments_extension.dart';
|
import 'package:tmail_ui_user/features/email/domain/extensions/list_attachments_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/detailed_email.dart';
|
import 'package:tmail_ui_user/features/email/domain/model/detailed_email.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
|
import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart';
|
import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/move_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/preview_email_eml_request.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/send_receipt_to_sender_request.dart';
|
import 'package:tmail_ui_user/features/email/domain/model/send_receipt_to_sender_request.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/view_entire_message_request.dart';
|
import 'package:tmail_ui_user/features/email/domain/model/view_entire_message_request.dart';
|
||||||
@@ -68,7 +64,6 @@ import 'package:tmail_ui_user/features/email/domain/state/get_entire_message_as_
|
|||||||
import 'package:tmail_ui_user/features/email/domain/state/get_html_content_from_attachment_state.dart';
|
import 'package:tmail_ui_user/features/email/domain/state/get_html_content_from_attachment_state.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart';
|
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_star_state.dart';
|
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_star_state.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.dart';
|
|
||||||
import 'package:tmail_ui_user/features/email/domain/state/parse_calendar_event_state.dart';
|
import 'package:tmail_ui_user/features/email/domain/state/parse_calendar_event_state.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/state/parse_email_by_blob_id_state.dart';
|
import 'package:tmail_ui_user/features/email/domain/state/parse_email_by_blob_id_state.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/state/preview_email_from_eml_file_state.dart';
|
import 'package:tmail_ui_user/features/email/domain/state/preview_email_from_eml_file_state.dart';
|
||||||
@@ -89,7 +84,6 @@ import 'package:tmail_ui_user/features/email/domain/usecases/download_attachment
|
|||||||
import 'package:tmail_ui_user/features/email/domain/usecases/export_attachment_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/export_attachment_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/get_email_content_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/get_email_content_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
|
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/parse_calendar_event_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/parse_calendar_event_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/parse_email_by_blob_id_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/parse_email_by_blob_id_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/preview_email_from_eml_file_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/preview_email_from_eml_file_interactor.dart';
|
||||||
@@ -119,7 +113,6 @@ import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.d
|
|||||||
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
|
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/get_mailbox_contain_extension.dart';
|
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
||||||
@@ -161,7 +154,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
final DownloadAttachmentsInteractor _downloadAttachmentsInteractor;
|
final DownloadAttachmentsInteractor _downloadAttachmentsInteractor;
|
||||||
final DeviceManager _deviceManager;
|
final DeviceManager _deviceManager;
|
||||||
final ExportAttachmentInteractor _exportAttachmentInteractor;
|
final ExportAttachmentInteractor _exportAttachmentInteractor;
|
||||||
final MoveToMailboxInteractor _moveToMailboxInteractor;
|
|
||||||
final MarkAsStarEmailInteractor _markAsStarEmailInteractor;
|
final MarkAsStarEmailInteractor _markAsStarEmailInteractor;
|
||||||
final DownloadAttachmentForWebInteractor _downloadAttachmentForWebInteractor;
|
final DownloadAttachmentForWebInteractor _downloadAttachmentForWebInteractor;
|
||||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||||
@@ -230,7 +222,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
this._downloadAttachmentsInteractor,
|
this._downloadAttachmentsInteractor,
|
||||||
this._deviceManager,
|
this._deviceManager,
|
||||||
this._exportAttachmentInteractor,
|
this._exportAttachmentInteractor,
|
||||||
this._moveToMailboxInteractor,
|
|
||||||
this._markAsStarEmailInteractor,
|
this._markAsStarEmailInteractor,
|
||||||
this._downloadAttachmentForWebInteractor,
|
this._downloadAttachmentForWebInteractor,
|
||||||
this._getAllIdentitiesInteractor,
|
this._getAllIdentitiesInteractor,
|
||||||
@@ -282,8 +273,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
_exportAttachmentSuccessAction(success);
|
_exportAttachmentSuccessAction(success);
|
||||||
} else if (success is ExportAllAttachmentsSuccess) {
|
} else if (success is ExportAllAttachmentsSuccess) {
|
||||||
_exportAllAttachmentsSuccessAction(success);
|
_exportAllAttachmentsSuccessAction(success);
|
||||||
} else if (success is MoveToMailboxSuccess) {
|
|
||||||
_moveToMailboxSuccess(success);
|
|
||||||
} else if (success is MarkAsStarEmailSuccess) {
|
} else if (success is MarkAsStarEmailSuccess) {
|
||||||
_markAsEmailStarSuccess(success);
|
_markAsEmailStarSuccess(success);
|
||||||
} else if (success is DownloadAttachmentForWebSuccess) {
|
} else if (success is DownloadAttachmentForWebSuccess) {
|
||||||
@@ -780,7 +769,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PresentationMailbox? getMailboxContain(PresentationEmail email) {
|
PresentationMailbox? getMailboxContain(PresentationEmail email) {
|
||||||
return mailboxDashBoardController.getMailboxContain(email);
|
return email.findMailboxContain(mailboxDashBoardController.mapMailboxById);
|
||||||
}
|
}
|
||||||
|
|
||||||
void markAsEmailRead(
|
void markAsEmailRead(
|
||||||
@@ -1206,7 +1195,9 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
accountId!,
|
accountId!,
|
||||||
email,
|
email,
|
||||||
mapMailbox: mailboxDashBoardController.mapMailboxById,
|
mapMailbox: mailboxDashBoardController.mapMailboxById,
|
||||||
selectedMailbox: mailboxDashBoardController.selectedMailbox.value,
|
selectedMailbox: currentEmail?.findMailboxContain(
|
||||||
|
mailboxDashBoardController.mapMailboxById,
|
||||||
|
),
|
||||||
isSearchEmailRunning: mailboxDashBoardController.searchController.isSearchEmailRunning,
|
isSearchEmailRunning: mailboxDashBoardController.searchController.isSearchEmailRunning,
|
||||||
);
|
);
|
||||||
if (!context.mounted || moveActionRequest == null) return;
|
if (!context.mounted || moveActionRequest == null) return;
|
||||||
@@ -1222,61 +1213,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _moveToMailbox(
|
|
||||||
BuildContext context,
|
|
||||||
Session session,
|
|
||||||
AccountId accountId,
|
|
||||||
MoveToMailboxRequest moveRequest,
|
|
||||||
Map<EmailId, bool> emailIdsWithReadStatus,
|
|
||||||
) {
|
|
||||||
consumeState(_moveToMailboxInteractor.execute(
|
|
||||||
session,
|
|
||||||
accountId,
|
|
||||||
moveRequest,
|
|
||||||
emailIdsWithReadStatus,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
void _moveToMailboxSuccess(MoveToMailboxSuccess success) {
|
|
||||||
mailboxDashBoardController.dispatchState(Right(success));
|
|
||||||
if (success.moveAction == MoveAction.moving && currentContext != null && currentOverlayContext != null) {
|
|
||||||
appToast.showToastMessage(
|
|
||||||
currentOverlayContext!,
|
|
||||||
success.emailActionType.getToastMessageMoveToMailboxSuccess(currentContext!, destinationPath: success.destinationPath),
|
|
||||||
actionName: AppLocalizations.of(currentContext!).undo,
|
|
||||||
onActionClick: () {
|
|
||||||
_revertedToOriginalMailbox(MoveToMailboxRequest(
|
|
||||||
{success.destinationMailboxId: [success.emailId]},
|
|
||||||
success.currentMailboxId,
|
|
||||||
MoveAction.undo,
|
|
||||||
success.emailActionType),
|
|
||||||
success.emailIdsWithReadStatus,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
leadingSVGIcon: imagePaths.icFolderMailbox,
|
|
||||||
leadingSVGIconColor: Colors.white,
|
|
||||||
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
|
||||||
textColor: Colors.white,
|
|
||||||
actionIcon: SvgPicture.asset(imagePaths.icUndo)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void _revertedToOriginalMailbox(
|
|
||||||
MoveToMailboxRequest newMoveRequest,
|
|
||||||
Map<EmailId, bool> emailIdsWithReadStatus,
|
|
||||||
) {
|
|
||||||
if (accountId != null && session != null) {
|
|
||||||
_moveToMailbox(
|
|
||||||
currentContext!,
|
|
||||||
session!,
|
|
||||||
accountId!,
|
|
||||||
newMoveRequest,
|
|
||||||
emailIdsWithReadStatus,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void moveToTrash(BuildContext context, PresentationEmail email) {
|
void moveToTrash(BuildContext context, PresentationEmail email) {
|
||||||
if (session != null && accountId != null) {
|
if (session != null && accountId != null) {
|
||||||
final moveActionRequest = emailActionReactor.moveToTrash(
|
final moveActionRequest = emailActionReactor.moveToTrash(
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class EmailAttachmentsStyles {
|
|||||||
static const FontWeight buttonFontWeight = FontWeight.w400;
|
static const FontWeight buttonFontWeight = FontWeight.w400;
|
||||||
static const FontWeight buttonMoreAttachmentsFontWeight = FontWeight.w500;
|
static const FontWeight buttonMoreAttachmentsFontWeight = FontWeight.w500;
|
||||||
|
|
||||||
static const EdgeInsetsGeometry padding = EdgeInsetsDirectional.only(start: 16, end: 16, bottom: 12);
|
static const EdgeInsetsGeometry padding = EdgeInsetsDirectional.only(start: 16, end: 16, bottom: 12, top: 16);
|
||||||
static const EdgeInsetsGeometry buttonPadding = EdgeInsets.symmetric(vertical: 8, horizontal: 12);
|
static const EdgeInsetsGeometry buttonPadding = EdgeInsets.symmetric(vertical: 8, horizontal: 12);
|
||||||
static const EdgeInsetsGeometry mobileButtonPadding = EdgeInsets.symmetric(vertical: 8, horizontal: 3);
|
static const EdgeInsetsGeometry mobileButtonPadding = EdgeInsets.symmetric(vertical: 8, horizontal: 3);
|
||||||
static const EdgeInsetsGeometry moreButtonMargin = EdgeInsetsDirectional.only(bottom: 2, start: 8);
|
static const EdgeInsetsGeometry moreButtonMargin = EdgeInsetsDirectional.only(bottom: 2, start: 8);
|
||||||
|
|||||||
+44
-38
@@ -50,6 +50,7 @@ import 'package:tmail_ui_user/features/email/domain/model/move_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/move_to_mailbox_request.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/state/download_attachment_for_web_state.dart';
|
import 'package:tmail_ui_user/features/email/domain/state/download_attachment_for_web_state.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/state/get_email_content_state.dart';
|
import 'package:tmail_ui_user/features/email/domain/state/get_email_content_state.dart';
|
||||||
|
import 'package:tmail_ui_user/features/email/domain/state/print_email_state.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/download_attachment_for_web_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/download_attachment_for_web_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/get_email_content_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/get_email_content_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
|
||||||
@@ -360,22 +361,26 @@ class EmailActionReactor with MessageDialogActionMixin, PopupContextMenuActionMi
|
|||||||
PresentationEmail presentationEmail, {
|
PresentationEmail presentationEmail, {
|
||||||
required String ownEmailAddress,
|
required String ownEmailAddress,
|
||||||
required EmailLoaded? emailLoaded,
|
required EmailLoaded? emailLoaded,
|
||||||
VoidCallback? onGetEmailContentFailure,
|
|
||||||
Session? session,
|
Session? session,
|
||||||
AccountId? accountId,
|
AccountId? accountId,
|
||||||
String? baseDownloadUrl,
|
String? baseDownloadUrl,
|
||||||
TransformConfiguration? transformConfiguration,
|
TransformConfiguration? transformConfiguration,
|
||||||
}) async* {
|
}) async* {
|
||||||
emailLoaded ??= await _getEmailLoaded(
|
try {
|
||||||
session,
|
emailLoaded ??= await _getEmailLoaded(
|
||||||
accountId,
|
session,
|
||||||
presentationEmail.id,
|
accountId,
|
||||||
baseDownloadUrl,
|
presentationEmail.id,
|
||||||
transformConfiguration,
|
baseDownloadUrl,
|
||||||
);
|
transformConfiguration,
|
||||||
|
);
|
||||||
|
|
||||||
if (emailLoaded == null) {
|
if (emailLoaded == null) {
|
||||||
onGetEmailContentFailure?.call();
|
yield Left(PrintEmailFailure());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
yield Left(PrintEmailFailure(exception: e));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -848,7 +853,7 @@ class EmailActionReactor with MessageDialogActionMixin, PopupContextMenuActionMi
|
|||||||
EmailId? emailId,
|
EmailId? emailId,
|
||||||
String? baseDownloadUrl,
|
String? baseDownloadUrl,
|
||||||
TransformConfiguration? transformConfiguration,
|
TransformConfiguration? transformConfiguration,
|
||||||
) {
|
) async {
|
||||||
if (session == null ||
|
if (session == null ||
|
||||||
accountId == null ||
|
accountId == null ||
|
||||||
emailId == null ||
|
emailId == null ||
|
||||||
@@ -858,33 +863,34 @@ class EmailActionReactor with MessageDialogActionMixin, PopupContextMenuActionMi
|
|||||||
return Future.value(null);
|
return Future.value(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
return _getEmailContentInteractor
|
final result = await _getEmailContentInteractor.execute(
|
||||||
.execute(
|
session,
|
||||||
session,
|
accountId,
|
||||||
accountId,
|
emailId,
|
||||||
emailId,
|
baseDownloadUrl,
|
||||||
baseDownloadUrl,
|
transformConfiguration,
|
||||||
transformConfiguration,
|
).last;
|
||||||
)
|
|
||||||
.last
|
return result.fold(
|
||||||
.then(
|
(failure) {
|
||||||
(value) {
|
if (failure is FeatureFailure) {
|
||||||
return value.fold(
|
throw failure.exception;
|
||||||
(failure) => null,
|
}
|
||||||
(success) => success is GetEmailContentSuccess
|
|
||||||
? EmailLoaded(
|
return null;
|
||||||
htmlContent: success.htmlEmailContent,
|
},
|
||||||
attachments: List.of(success.attachments ?? []),
|
(success) {
|
||||||
inlineImages: List.of(success.inlineImages ?? []),
|
if (success is! GetEmailContentSuccess) {
|
||||||
emailCurrent: success.emailCurrent,
|
|
||||||
)
|
|
||||||
: null,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
onError: (error) {
|
|
||||||
logError('EmailActionReactor::_getEmailLoaded(): error: $error');
|
|
||||||
return null;
|
return null;
|
||||||
},
|
}
|
||||||
);
|
|
||||||
|
return EmailLoaded(
|
||||||
|
htmlContent: success.htmlEmailContent,
|
||||||
|
attachments: List.of(success.attachments ?? []),
|
||||||
|
inlineImages: List.of(success.inlineImages ?? []),
|
||||||
|
emailCurrent: success.emailCurrent,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-1
@@ -46,7 +46,8 @@ class EventBodyContentWidget extends StatelessWidget {
|
|||||||
child: Stack(
|
child: Stack(
|
||||||
children: [
|
children: [
|
||||||
if (PlatformInfo.isWeb)
|
if (PlatformInfo.isWeb)
|
||||||
Padding(
|
Container(
|
||||||
|
constraints: const BoxConstraints(maxHeight: EventDescriptionDetailWidgetStyles.maxHeight),
|
||||||
padding: const EdgeInsetsDirectional.only(end: EventDescriptionDetailWidgetStyles.webContentPadding),
|
padding: const EdgeInsetsDirectional.only(end: EventDescriptionDetailWidgetStyles.webContentPadding),
|
||||||
child: LayoutBuilder(builder: (context, constraints) {
|
child: LayoutBuilder(builder: (context, constraints) {
|
||||||
return Stack(
|
return Stack(
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:core/presentation/utils/theme_utils.dart';
|
import 'package:core/presentation/utils/theme_utils.dart';
|
||||||
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:model/email/presentation_email.dart';
|
import 'package:model/email/presentation_email.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/styles/email_subject_styles.dart';
|
import 'package:tmail_ui_user/features/email/presentation/styles/email_subject_styles.dart';
|
||||||
@@ -19,10 +20,10 @@ class EmailSubjectWidget extends StatelessWidget {
|
|||||||
padding: EmailSubjectStyles.padding,
|
padding: EmailSubjectStyles.padding,
|
||||||
child: Text(
|
child: Text(
|
||||||
presentationEmail.getEmailTitle(),
|
presentationEmail.getEmailTitle(),
|
||||||
maxLines: EmailSubjectStyles.maxLines,
|
|
||||||
style: ThemeUtils.textStyleHeadingH5(color: Colors.black).copyWith(
|
style: ThemeUtils.textStyleHeadingH5(color: Colors.black).copyWith(
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: PlatformInfo.isWeb ? TextOverflow.ellipsis : null,
|
||||||
),
|
),
|
||||||
|
maxLines: EmailSubjectStyles.maxLines,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class MailUnsubscribedBanner extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
if (presentationEmail?.isSubscribed == true && emailUnsubscribe == null) {
|
if (presentationEmail?.isSubscribed == true && emailUnsubscribe == null) {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsetsDirectional.only(bottom: 16, start: 20, end: 20),
|
padding: const EdgeInsetsDirectional.symmetric(vertical: 16, horizontal: 20),
|
||||||
child: Text(
|
child: Text(
|
||||||
AppLocalizations.of(context).mailUnsubscribedMessage(presentationEmail?.firstEmailAddressInFrom ?? ''),
|
AppLocalizations.of(context).mailUnsubscribedMessage(presentationEmail?.firstEmailAddressInFrom ?? ''),
|
||||||
style: ThemeUtils.defaultTextStyleInterFont.copyWith(
|
style: ThemeUtils.defaultTextStyleInterFont.copyWith(
|
||||||
|
|||||||
+5
@@ -1025,6 +1025,11 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _moveToMailboxSuccess(MoveToMailboxSuccess success) {
|
void _moveToMailboxSuccess(MoveToMailboxSuccess success) {
|
||||||
|
dispatchThreadDetailUIAction(EmailMovedAction(
|
||||||
|
emailId: success.emailId,
|
||||||
|
originalMailboxId: success.currentMailboxId,
|
||||||
|
targetMailboxId: success.destinationMailboxId,
|
||||||
|
));
|
||||||
if (success.moveAction == MoveAction.moving && currentContext != null && currentOverlayContext != null) {
|
if (success.moveAction == MoveAction.moving && currentContext != null && currentOverlayContext != null) {
|
||||||
appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
||||||
|
|
||||||
class ThreadDetailUIAction extends UIAction {
|
class ThreadDetailUIAction extends UIAction {
|
||||||
@@ -23,3 +24,18 @@ class UpdatedEmailKeywordsAction extends ThreadDetailUIAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class UpdatedThreadDetailSettingAction extends ThreadDetailUIAction {}
|
class UpdatedThreadDetailSettingAction extends ThreadDetailUIAction {}
|
||||||
|
|
||||||
|
class EmailMovedAction extends ThreadDetailUIAction {
|
||||||
|
EmailMovedAction({
|
||||||
|
required this.emailId,
|
||||||
|
required this.originalMailboxId,
|
||||||
|
required this.targetMailboxId,
|
||||||
|
});
|
||||||
|
|
||||||
|
final EmailId emailId;
|
||||||
|
final MailboxId originalMailboxId;
|
||||||
|
final MailboxId targetMailboxId;
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [emailId, originalMailboxId, targetMailboxId];
|
||||||
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
import 'package:model/email/presentation_email.dart';
|
||||||
|
import 'package:model/extensions/presentation_email_extension.dart';
|
||||||
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_controller.dart';
|
||||||
|
|
||||||
|
extension GetThreadDetailEmailMailboxContains on ThreadDetailController {
|
||||||
|
PresentationMailbox? getThreadDetailEmailMailboxContains(
|
||||||
|
PresentationEmail presentationEmail,
|
||||||
|
) {
|
||||||
|
return presentationEmail.findMailboxContain(
|
||||||
|
mailboxDashBoardController.mapMailboxById,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
+21
-16
@@ -6,26 +6,31 @@ extension GetThreadDetailLoadingView on ThreadDetailController {
|
|||||||
Widget getThreadDetailLoadingView({
|
Widget getThreadDetailLoadingView({
|
||||||
required bool isResponsiveDesktop,
|
required bool isResponsiveDesktop,
|
||||||
required bool isLoading,
|
required bool isLoading,
|
||||||
|
bool isExpanded = true,
|
||||||
}) {
|
}) {
|
||||||
if (!isLoading) return const SizedBox.shrink();
|
if (!isLoading) return const SizedBox.shrink();
|
||||||
|
|
||||||
return Expanded(
|
final child = Container(
|
||||||
child: Container(
|
alignment: Alignment.center,
|
||||||
alignment: Alignment.center,
|
decoration: const BoxDecoration(
|
||||||
decoration: const BoxDecoration(
|
color: Colors.white,
|
||||||
color: Colors.white,
|
borderRadius: BorderRadius.all(Radius.circular(20)),
|
||||||
borderRadius: BorderRadius.all(Radius.circular(20)),
|
),
|
||||||
),
|
margin: isResponsiveDesktop
|
||||||
margin: isResponsiveDesktop
|
? const EdgeInsetsDirectional.only(end: 16)
|
||||||
? const EdgeInsetsDirectional.only(end: 16)
|
: null,
|
||||||
: null,
|
padding: const EdgeInsets.only(top: 16),
|
||||||
padding: const EdgeInsets.only(top: 16),
|
child: const SizedBox(
|
||||||
child: const SizedBox(
|
width: 24,
|
||||||
width: 24,
|
height: 24,
|
||||||
height: 24,
|
child: CupertinoLoadingWidget(),
|
||||||
child: CupertinoLoadingWidget(),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (isExpanded) {
|
||||||
|
return Expanded(child: child);
|
||||||
|
} else {
|
||||||
|
return child;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -3,7 +3,7 @@ import 'package:model/email/email_action_type.dart';
|
|||||||
import 'package:model/extensions/presentation_email_extension.dart';
|
import 'package:model/extensions/presentation_email_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
|
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
|
||||||
import 'package:model/email/email_in_thread_status.dart';
|
import 'package:model/email/email_in_thread_status.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/get_mailbox_contain_extension.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/get_thread_detail_email_mailbox_contains.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/load_more_thread_detail_emails.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/load_more_thread_detail_emails.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/thread_detail_on_email_action_click.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/thread_detail_on_email_action_click.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/thread_detail_open_email_address_detail_action.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/thread_detail_open_email_address_detail_action.dart';
|
||||||
@@ -65,7 +65,7 @@ extension GetThreadDetailEmailViews on ThreadDetailController {
|
|||||||
emailLoaded: null,
|
emailLoaded: null,
|
||||||
onEmailActionClick: threadDetailOnEmailActionClick,
|
onEmailActionClick: threadDetailOnEmailActionClick,
|
||||||
onMoreActionClick: (presentationEmail, position) => emailActionReactor.handleMoreEmailAction(
|
onMoreActionClick: (presentationEmail, position) => emailActionReactor.handleMoreEmailAction(
|
||||||
mailboxContain: mailboxDashBoardController.getMailboxContain(presentationEmail),
|
mailboxContain: getThreadDetailEmailMailboxContains(presentationEmail),
|
||||||
presentationEmail: presentationEmail,
|
presentationEmail: presentationEmail,
|
||||||
position: position,
|
position: position,
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: responsiveUtils,
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import 'package:tmail_ui_user/features/thread_detail/presentation/action/thread_detail_ui_action.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_controller.dart';
|
||||||
|
|
||||||
|
extension HandleEmailMovedAction on ThreadDetailController {
|
||||||
|
void handleEmailMovedAction(EmailMovedAction action) {
|
||||||
|
if (emailIdsPresentation[action.emailId] == null) return;
|
||||||
|
|
||||||
|
emailIdsPresentation[action.emailId] = emailIdsPresentation[action.emailId]
|
||||||
|
?.copyWith(mailboxIds: {action.targetMailboxId: true});
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -51,6 +51,7 @@ extension HandleGetEmailsByIdsSuccess on ThreadDetailController {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (scrollController?.hasClients == false) return;
|
||||||
final currentScrollPosition = scrollController?.position.pixels;
|
final currentScrollPosition = scrollController?.position.pixels;
|
||||||
final maxScrollExtent = scrollController?.position.maxScrollExtent;
|
final maxScrollExtent = scrollController?.position.maxScrollExtent;
|
||||||
final currentBottomScrollPosition = currentScrollPosition != null
|
final currentBottomScrollPosition = currentScrollPosition != null
|
||||||
|
|||||||
+4
-12
@@ -6,12 +6,12 @@ import 'package:model/email/mark_star_action.dart';
|
|||||||
import 'package:model/email/presentation_email.dart';
|
import 'package:model/email/presentation_email.dart';
|
||||||
import 'package:model/email/read_actions.dart';
|
import 'package:model/email/read_actions.dart';
|
||||||
import 'package:model/extensions/email_extension.dart';
|
import 'package:model/extensions/email_extension.dart';
|
||||||
|
import 'package:model/extensions/presentation_email_extension.dart';
|
||||||
import 'package:model/extensions/session_extension.dart';
|
import 'package:model/extensions/session_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
|
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_controller.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_controller.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
extension ThreadDetailOnEmailActionClick on ThreadDetailController {
|
extension ThreadDetailOnEmailActionClick on ThreadDetailController {
|
||||||
@@ -129,7 +129,9 @@ extension ThreadDetailOnEmailActionClick on ThreadDetailController {
|
|||||||
accountId!,
|
accountId!,
|
||||||
presentationEmail,
|
presentationEmail,
|
||||||
mapMailbox: mailboxDashBoardController.mapMailboxById,
|
mapMailbox: mailboxDashBoardController.mapMailboxById,
|
||||||
selectedMailbox: mailboxDashBoardController.selectedMailbox.value,
|
selectedMailbox: presentationEmail.findMailboxContain(
|
||||||
|
mailboxDashBoardController.mapMailboxById,
|
||||||
|
),
|
||||||
isSearchEmailRunning: mailboxDashBoardController.searchController.isSearchEmailRunning,
|
isSearchEmailRunning: mailboxDashBoardController.searchController.isSearchEmailRunning,
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -263,7 +265,6 @@ extension ThreadDetailOnEmailActionClick on ThreadDetailController {
|
|||||||
accountId: accountId,
|
accountId: accountId,
|
||||||
baseDownloadUrl: session?.getDownloadUrl(jmapUrl: dynamicUrlInterceptors.jmapUrl),
|
baseDownloadUrl: session?.getDownloadUrl(jmapUrl: dynamicUrlInterceptors.jmapUrl),
|
||||||
transformConfiguration: TransformConfiguration.forPreviewEmailOnWeb(),
|
transformConfiguration: TransformConfiguration.forPreviewEmailOnWeb(),
|
||||||
onGetEmailContentFailure: _showUnknownErrorToast,
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -367,13 +368,4 @@ extension ThreadDetailOnEmailActionClick on ThreadDetailController {
|
|||||||
emailLoaded: null,
|
emailLoaded: null,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
_showUnknownErrorToast() {
|
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
|
||||||
appToast.showToastErrorMessage(
|
|
||||||
currentOverlayContext!,
|
|
||||||
AppLocalizations.of(currentContext!).unknownError,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -18,6 +18,7 @@ import 'package:model/extensions/keyword_identifier_extension.dart';
|
|||||||
import 'package:model/extensions/session_extension.dart';
|
import 'package:model/extensions/session_extension.dart';
|
||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||||
|
import 'package:tmail_ui_user/features/email/domain/state/print_email_state.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
|
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/model/email_loaded.dart';
|
import 'package:tmail_ui_user/features/email/presentation/model/email_loaded.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/state/download_attachment_for_web_state.dart';
|
import 'package:tmail_ui_user/features/email/domain/state/download_attachment_for_web_state.dart';
|
||||||
@@ -41,6 +42,7 @@ import 'package:tmail_ui_user/features/thread_detail/domain/usecases/get_emails_
|
|||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/action/thread_detail_ui_action.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/action/thread_detail_ui_action.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/domain/usecases/get_thread_detail_status_interactor.dart';
|
import 'package:tmail_ui_user/features/thread_detail/domain/usecases/get_thread_detail_status_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/close_thread_detail_action.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/close_thread_detail_action.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_email_moved_action.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_get_email_ids_by_thread_id_success.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_get_email_ids_by_thread_id_success.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_get_emails_by_ids_success.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_get_emails_by_ids_success.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_get_thread_by_id_failure.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_get_thread_by_id_failure.dart';
|
||||||
@@ -48,6 +50,7 @@ import 'package:tmail_ui_user/features/thread_detail/presentation/extension/hand
|
|||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/initialize_thread_detail_emails.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/initialize_thread_detail_emails.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/refresh_thread_detail_on_setting_changed.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/refresh_thread_detail_on_setting_changed.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/model/thread_detail_setting_status.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/model/thread_detail_setting_status.dart';
|
||||||
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_collapsed_email_download_states.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_collapsed_email_download_states.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/mark_collapsed_email_star_success.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/mark_collapsed_email_star_success.dart';
|
||||||
@@ -186,10 +189,13 @@ class ThreadDetailController extends BaseController {
|
|||||||
}
|
}
|
||||||
} else if (action is UpdatedThreadDetailSettingAction) {
|
} else if (action is UpdatedThreadDetailSettingAction) {
|
||||||
consumeState(_getThreadDetailStatusInteractor.execute());
|
consumeState(_getThreadDetailStatusInteractor.execute());
|
||||||
mailboxDashBoardController.dispatchThreadDetailUIAction(
|
} else if (action is EmailMovedAction) {
|
||||||
ThreadDetailUIAction(),
|
handleEmailMovedAction(action);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
// Reset [threadDetailUIAction] to original value
|
||||||
|
mailboxDashBoardController.dispatchThreadDetailUIAction(
|
||||||
|
ThreadDetailUIAction(),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
ever(mailboxDashBoardController.emailUIAction, (action) {
|
ever(mailboxDashBoardController.emailUIAction, (action) {
|
||||||
if (action is RefreshThreadDetailAction) {
|
if (action is RefreshThreadDetailAction) {
|
||||||
@@ -255,6 +261,15 @@ class ThreadDetailController extends BaseController {
|
|||||||
threadDetailSettingStatus = ThreadDetailSettingStatus.enabled;
|
threadDetailSettingStatus = ThreadDetailSettingStatus.enabled;
|
||||||
refreshThreadDetailOnSettingChanged();
|
refreshThreadDetailOnSettingChanged();
|
||||||
}
|
}
|
||||||
|
if (failure is PrintEmailFailure) {
|
||||||
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
|
appToast.showToastErrorMessage(
|
||||||
|
currentOverlayContext!,
|
||||||
|
AppLocalizations.of(currentContext!).unknownError,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
super.handleFailureViewState(failure);
|
super.handleFailureViewState(failure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,15 +5,16 @@ import 'package:core/presentation/state/success.dart';
|
|||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:model/email/email_in_thread_status.dart';
|
||||||
import 'package:model/extensions/session_extension.dart';
|
import 'package:model/extensions/session_extension.dart';
|
||||||
import 'package:model/email/email_action_type.dart';
|
import 'package:model/email/email_action_type.dart';
|
||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
|
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
|
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_bottom_bar_widget.dart';
|
import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_bottom_bar_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/get_mailbox_contain_extension.dart';
|
|
||||||
import 'package:tmail_ui_user/features/thread_detail/domain/state/get_thread_by_id_state.dart';
|
import 'package:tmail_ui_user/features/thread_detail/domain/state/get_thread_by_id_state.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/close_thread_detail_action.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/close_thread_detail_action.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/get_thread_detail_email_mailbox_contains.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/get_thread_detail_loading_view.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/get_thread_detail_loading_view.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/get_thread_details_email_views.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/get_thread_details_email_views.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/thread_detail_on_email_action_click.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/thread_detail_on_email_action_click.dart';
|
||||||
@@ -43,7 +44,7 @@ class ThreadDetailView extends GetWidget<ThreadDetailController> {
|
|||||||
mailboxContain: _getMailboxContain(),
|
mailboxContain: _getMailboxContain(),
|
||||||
onEmailActionClick: controller.threadDetailOnEmailActionClick,
|
onEmailActionClick: controller.threadDetailOnEmailActionClick,
|
||||||
onMoreActionClick: (presentationEmail, position) => controller.emailActionReactor.handleMoreEmailAction(
|
onMoreActionClick: (presentationEmail, position) => controller.emailActionReactor.handleMoreEmailAction(
|
||||||
mailboxContain: controller.mailboxDashBoardController.getMailboxContain(presentationEmail),
|
mailboxContain: controller.getThreadDetailEmailMailboxContains(presentationEmail),
|
||||||
presentationEmail: presentationEmail,
|
presentationEmail: presentationEmail,
|
||||||
position: position,
|
position: position,
|
||||||
responsiveUtils: controller.responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
@@ -167,11 +168,12 @@ class ThreadDetailView extends GetWidget<ThreadDetailController> {
|
|||||||
return controller.getThreadDetailLoadingView(
|
return controller.getThreadDetailLoadingView(
|
||||||
isResponsiveDesktop: false,
|
isResponsiveDesktop: false,
|
||||||
isLoading: true,
|
isLoading: true,
|
||||||
|
isExpanded: false,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (controller.emailIdsPresentation.length == 1 &&
|
if (controller.emailIdsPresentation.length == 1 &&
|
||||||
controller.emailIdsPresentation.values.firstOrNull != null) {
|
controller.emailIdsPresentation.values.firstOrNull?.emailInThreadStatus == EmailInThreadStatus.expanded) {
|
||||||
final emailId = controller.emailIdsPresentation.values.firstOrNull!.id;
|
final emailId = controller.emailIdsPresentation.values.firstOrNull!.id;
|
||||||
|
|
||||||
return EmailView(
|
return EmailView(
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ import 'package:tmail_ui_user/features/email/domain/usecases/export_attachment_i
|
|||||||
import 'package:tmail_ui_user/features/email/domain/usecases/get_email_content_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/get_email_content_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
|
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/parse_calendar_event_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/parse_calendar_event_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/parse_email_by_blob_id_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/parse_email_by_blob_id_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/usecases/preview_email_from_eml_file_interactor.dart';
|
import 'package:tmail_ui_user/features/email/domain/usecases/preview_email_from_eml_file_interactor.dart';
|
||||||
@@ -81,7 +80,6 @@ const fallbackGenerators = {
|
|||||||
MockSpec<DownloadAttachmentsInteractor>(),
|
MockSpec<DownloadAttachmentsInteractor>(),
|
||||||
MockSpec<DeviceManager>(),
|
MockSpec<DeviceManager>(),
|
||||||
MockSpec<ExportAttachmentInteractor>(),
|
MockSpec<ExportAttachmentInteractor>(),
|
||||||
MockSpec<MoveToMailboxInteractor>(),
|
|
||||||
MockSpec<MarkAsStarEmailInteractor>(),
|
MockSpec<MarkAsStarEmailInteractor>(),
|
||||||
MockSpec<DownloadAttachmentForWebInteractor>(),
|
MockSpec<DownloadAttachmentForWebInteractor>(),
|
||||||
MockSpec<GetAllIdentitiesInteractor>(),
|
MockSpec<GetAllIdentitiesInteractor>(),
|
||||||
@@ -125,7 +123,6 @@ void main() {
|
|||||||
final downloadAttachmentsInteractor = MockDownloadAttachmentsInteractor();
|
final downloadAttachmentsInteractor = MockDownloadAttachmentsInteractor();
|
||||||
final deviceManager = MockDeviceManager();
|
final deviceManager = MockDeviceManager();
|
||||||
final exportAttachmentInteractor = MockExportAttachmentInteractor();
|
final exportAttachmentInteractor = MockExportAttachmentInteractor();
|
||||||
final moveToMailboxInteractor = MockMoveToMailboxInteractor();
|
|
||||||
final markAsStarEmailInteractor = MockMarkAsStarEmailInteractor();
|
final markAsStarEmailInteractor = MockMarkAsStarEmailInteractor();
|
||||||
final downloadAttachmentForWebInteractor =
|
final downloadAttachmentForWebInteractor =
|
||||||
MockDownloadAttachmentForWebInteractor();
|
MockDownloadAttachmentForWebInteractor();
|
||||||
@@ -204,7 +201,6 @@ void main() {
|
|||||||
downloadAttachmentsInteractor,
|
downloadAttachmentsInteractor,
|
||||||
deviceManager,
|
deviceManager,
|
||||||
exportAttachmentInteractor,
|
exportAttachmentInteractor,
|
||||||
moveToMailboxInteractor,
|
|
||||||
markAsStarEmailInteractor,
|
markAsStarEmailInteractor,
|
||||||
downloadAttachmentForWebInteractor,
|
downloadAttachmentForWebInteractor,
|
||||||
getAllIdentitiesInteractor,
|
getAllIdentitiesInteractor,
|
||||||
|
|||||||
Reference in New Issue
Block a user