TF-3715 Thread Detail create resuable actions
TF-3715 Thread Detail refactor actions for expanded email view TF-3715 Thread Detail apply actions for collapsed email view TF-3715 Thread Detail fix unit tests TF-3715 Thread Detail add await for _getEmailContent in composer TF-3715 Thread Detail remove unused emailLoaded in ThreadDetailAppBar TF-3715 Thread Detail hide print action when isMobile TF-3715 Thread Detail allow mark as read in EmailActionReactor TF-3715 Thread Detail fix loadMoreThreadDetailEmails unit test TF-3715 Thread Detail fix action small tap region TF-3715 Thread Detail fix cannot permanent delete email TF-3715 Thread Detail prevent close when move email TF-3715 Thread Detail fix refresh when mark star selected collapsed email TF-3715 Thread Detail update print action display logic TF-3715 Thread Detail fix duplicate mark star in app bar TF-3715 Thread Detail create new transformer for reply forward empty content email TF-3715 Thread Detail fix email not load after open multiple times TF-3715 Thread Detail fix close when move expanded email TF-3715 Thread Detail fix duplicate and missing actions TF-3715 Thread Detail restore editAsNewEmail action to _getEmailContent in setupEmailContent TF-3715 Thread Detail update print action name TF-3715 Thread Detail handle move and delete email with 1 item in thread detail TF-3715 Thread Detail fix tap outside to close context menu TF-3715 Thread Detail fix create rule and compose from recipient info TF-3715 Thread Detail handle move and delete email with 1 item in thread detail TF-3715 Thread Detail Fix cannot create email rule TF-3715 Thread Detail Fix crash composer TF-3715 Thread Detail Fix cannot unsubscribe TF-3715 Thread Detail Fix duplicate actions on single email TF-3715 Thread Detail Fix refresh view when reply/forward TF-3715 Thread Detail Revert old logic to _getEmailContent TF-3715 Thread Detail Update specific cases for UpdatedEmailKeywordsAction TF-3715 Thread Detail Fix concurrent modification during iteration TF-3715 Thread Detail Fix unsubscribe for all thread detail emails TF-3715 Thread Detail Remove unnecessary Future in reactor TF-3715 Thread Detail Remove dependency from SingleEmailController TF-3715 Thread Detail Apply individual list post and unsubscribe header TF-3715 Thread Detail Fix unsubscribe collapsed email TF-3715 Thread Detail Conditionally inject rule filter interactor
This commit is contained in:
@@ -31,7 +31,6 @@ class EmailViewAppBarWidget extends StatelessWidget {
|
||||
final BoxDecoration? appBarDecoration;
|
||||
final EmailLoaded? emailLoaded;
|
||||
final bool isInsideThreadDetailView;
|
||||
final double? height;
|
||||
final EdgeInsetsGeometry? iconPadding;
|
||||
final EdgeInsetsGeometry? iconMargin;
|
||||
final EdgeInsetsGeometry? padding;
|
||||
@@ -49,7 +48,6 @@ class EmailViewAppBarWidget extends StatelessWidget {
|
||||
this.supportBackAction = true,
|
||||
this.appBarDecoration,
|
||||
this.isInsideThreadDetailView = false,
|
||||
this.height,
|
||||
this.iconPadding,
|
||||
this.iconMargin,
|
||||
this.padding,
|
||||
@@ -59,9 +57,9 @@ class EmailViewAppBarWidget extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
final child = LayoutBuilder(builder: (context, constraints) {
|
||||
return Container(
|
||||
height: height ?? (PlatformInfo.isIOS
|
||||
height: PlatformInfo.isIOS
|
||||
? EmailViewAppBarWidgetStyles.heightIOS(context, _responsiveUtils)
|
||||
: EmailViewAppBarWidgetStyles.height),
|
||||
: EmailViewAppBarWidgetStyles.height,
|
||||
padding: padding ?? (PlatformInfo.isIOS
|
||||
? EmailViewAppBarWidgetStyles.paddingIOS(context, _responsiveUtils)
|
||||
: EmailViewAppBarWidgetStyles.padding),
|
||||
@@ -248,7 +246,8 @@ class EmailViewAppBarWidget extends StatelessWidget {
|
||||
}) {
|
||||
if (!isInsideThreadDetailView) {
|
||||
return [
|
||||
_getPrintButton(appLocalizations),
|
||||
if (PlatformInfo.isWeb && PlatformInfo.isCanvasKit)
|
||||
_getPrintButton(appLocalizations),
|
||||
_getMoveEmailButton(appLocalizations),
|
||||
_getMarkStarButton(appLocalizations),
|
||||
_getDeleteButton(appLocalizations),
|
||||
|
||||
+29
-14
@@ -5,15 +5,19 @@ import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/presentation/utils/theme_utils.dart';
|
||||
import 'package:core/presentation/views/button/tmail_button_widget.dart';
|
||||
import 'package:core/presentation/views/image/avatar_builder.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
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/base/widget/email_avatar_builder.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/email_loaded.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/email_unsubscribe.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/smime_signature_status.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/styles/email_view_app_bar_widget_styles.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/email_receiver_widget.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/email_sender_builder.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_app_bar_widget.dart';
|
||||
@@ -36,6 +40,7 @@ class InformationSenderAndReceiverBuilder extends StatelessWidget {
|
||||
final bool showRecipients;
|
||||
final VoidCallback? onToggleThreadDetailCollapseExpand;
|
||||
final OnTapAvatarActionClick? onTapAvatarActionClick;
|
||||
final PresentationMailbox? mailboxContain;
|
||||
|
||||
const InformationSenderAndReceiverBuilder({
|
||||
Key? key,
|
||||
@@ -53,6 +58,7 @@ class InformationSenderAndReceiverBuilder extends StatelessWidget {
|
||||
this.showRecipients = true,
|
||||
this.onToggleThreadDetailCollapseExpand,
|
||||
this.onTapAvatarActionClick,
|
||||
this.mailboxContain,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
@@ -127,21 +133,30 @@ class InformationSenderAndReceiverBuilder extends StatelessWidget {
|
||||
padding: const EdgeInsetsDirectional.only(start: 16, top: 2),
|
||||
),
|
||||
if (isInsideThreadDetailView)
|
||||
EmailViewAppBarWidget(
|
||||
key: const Key('email_view_app_bar_widget'),
|
||||
presentationEmail: emailSelected,
|
||||
isSearchActivated: false,
|
||||
onBackAction: () {},
|
||||
onEmailActionClick: onEmailActionClick,
|
||||
onMoreActionClick: onMoreActionClick,
|
||||
supportBackAction: false,
|
||||
appBarDecoration: const BoxDecoration(),
|
||||
emailLoaded: emailLoaded,
|
||||
isInsideThreadDetailView: isInsideThreadDetailView,
|
||||
SizedBox(
|
||||
height: IconUtils.defaultIconSize,
|
||||
iconPadding: EdgeInsets.zero,
|
||||
iconMargin: const EdgeInsetsDirectional.only(start: 16),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8),
|
||||
child: OverflowBox(
|
||||
maxHeight: PlatformInfo.isIOS
|
||||
? EmailViewAppBarWidgetStyles.heightIOS(context, responsiveUtils)
|
||||
: EmailViewAppBarWidgetStyles.height,
|
||||
fit: OverflowBoxFit.deferToChild,
|
||||
child: EmailViewAppBarWidget(
|
||||
key: const Key('email_view_app_bar_widget'),
|
||||
presentationEmail: emailSelected,
|
||||
mailboxContain: mailboxContain,
|
||||
isSearchActivated: false,
|
||||
onBackAction: () {},
|
||||
onEmailActionClick: onEmailActionClick,
|
||||
onMoreActionClick: onMoreActionClick,
|
||||
supportBackAction: false,
|
||||
appBarDecoration: const BoxDecoration(),
|
||||
emailLoaded: emailLoaded,
|
||||
isInsideThreadDetailView: isInsideThreadDetailView,
|
||||
iconPadding: const EdgeInsets.all(8),
|
||||
iconMargin: EdgeInsets.zero,
|
||||
padding: EdgeInsets.zero,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user