* Add folder info when open mail list from Label (cherry picked from commit de0bb4ee02030ca90126766a8713a6826d791acd) * Add unit test for `hasMailboxLabel` function in BaseEmailItemTile mixin (cherry picked from commit 18f8d1847acccd6f95006b93903f0caa6c0408df) * TF-4292 Add E2E test for test case `Add folder info when open mail list from Label` on mobile (cherry picked from commit 1c209e333510db161522e4449ad7fb2e5d28399f)
This commit is contained in:
+16
-9
@@ -1,4 +1,5 @@
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/presentation/views/button/tmail_button_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -15,6 +16,7 @@ class DesktopListEmailActionHoverWidget extends StatefulWidget {
|
||||
final bool isHovered;
|
||||
final bool canDeletePermanently;
|
||||
final bool isSearchEmailRunning;
|
||||
final bool isLabelMailboxOpened;
|
||||
final PresentationMailbox? mailboxContain;
|
||||
final OnPressEmailActionClick? emailActionClick;
|
||||
final OnMoreActionClick? onMoreActionClick;
|
||||
@@ -25,6 +27,7 @@ class DesktopListEmailActionHoverWidget extends StatefulWidget {
|
||||
required this.isHovered,
|
||||
required this.canDeletePermanently,
|
||||
required this.isSearchEmailRunning,
|
||||
required this.isLabelMailboxOpened,
|
||||
required this.mailboxContain,
|
||||
required this.emailActionClick,
|
||||
required this.onMoreActionClick,
|
||||
@@ -37,8 +40,6 @@ class DesktopListEmailActionHoverWidget extends StatefulWidget {
|
||||
|
||||
class _DesktopListEmailActionHoverWidgetState
|
||||
extends State<DesktopListEmailActionHoverWidget> with BaseEmailItemTile {
|
||||
final _imagePaths = Get.find<ImagePaths>();
|
||||
|
||||
bool _popupMenuVisible = false;
|
||||
|
||||
@override
|
||||
@@ -46,7 +47,7 @@ class _DesktopListEmailActionHoverWidgetState
|
||||
final listActionWidget = [
|
||||
if (widget.isHovered) ...[
|
||||
TMailButtonWidget.fromIcon(
|
||||
icon: _imagePaths.icOpenInNewTab,
|
||||
icon: imagePaths.icOpenInNewTab,
|
||||
iconColor: ItemEmailTileStyles.actionIconHoverColor,
|
||||
iconSize: _getIconSize(),
|
||||
padding: _getPaddingIcon(),
|
||||
@@ -60,8 +61,8 @@ class _DesktopListEmailActionHoverWidgetState
|
||||
if (!widget.presentationEmail.isDraft)
|
||||
TMailButtonWidget.fromIcon(
|
||||
icon: widget.presentationEmail.hasRead
|
||||
? _imagePaths.icUnread
|
||||
: _imagePaths.icRead,
|
||||
? imagePaths.icUnread
|
||||
: imagePaths.icRead,
|
||||
iconColor: ItemEmailTileStyles.actionIconHoverColor,
|
||||
iconSize: _getIconSize(),
|
||||
padding: _getPaddingIcon(),
|
||||
@@ -80,7 +81,7 @@ class _DesktopListEmailActionHoverWidgetState
|
||||
if (widget.mailboxContain != null &&
|
||||
widget.mailboxContain?.isDrafts == false) ...[
|
||||
TMailButtonWidget.fromIcon(
|
||||
icon: _imagePaths.icMove,
|
||||
icon: imagePaths.icMove,
|
||||
iconColor: ItemEmailTileStyles.actionIconHoverColor,
|
||||
iconSize: _getIconSize(),
|
||||
padding: _getPaddingIcon(),
|
||||
@@ -94,7 +95,7 @@ class _DesktopListEmailActionHoverWidgetState
|
||||
),
|
||||
],
|
||||
TMailButtonWidget.fromIcon(
|
||||
icon: _imagePaths.icDeleteComposer,
|
||||
icon: imagePaths.icDeleteComposer,
|
||||
iconColor: ItemEmailTileStyles.actionIconHoverColor,
|
||||
iconSize: _getIconSize(),
|
||||
padding: _getPaddingIcon(),
|
||||
@@ -113,7 +114,7 @@ class _DesktopListEmailActionHoverWidgetState
|
||||
],
|
||||
if (_shouldShowPopupMenu) ...[
|
||||
TMailButtonWidget.fromIcon(
|
||||
icon: _imagePaths.icMoreVertical,
|
||||
icon: imagePaths.icMoreVertical,
|
||||
iconColor: ItemEmailTileStyles.actionIconHoverColor,
|
||||
iconSize: _getIconSize(),
|
||||
padding: _getPaddingIcon(),
|
||||
@@ -134,7 +135,7 @@ class _DesktopListEmailActionHoverWidgetState
|
||||
] else ...[
|
||||
buildMailboxContain(
|
||||
context,
|
||||
widget.isSearchEmailRunning,
|
||||
widget.isSearchEmailRunning || widget.isLabelMailboxOpened,
|
||||
widget.presentationEmail,
|
||||
),
|
||||
if (widget.presentationEmail.hasAttachment == true)
|
||||
@@ -173,4 +174,10 @@ class _DesktopListEmailActionHoverWidgetState
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
ImagePaths get imagePaths => Get.find<ImagePaths>();
|
||||
|
||||
@override
|
||||
ResponsiveUtils get responsiveUtils => Get.find<ResponsiveUtils>();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:labels/model/label.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
@@ -24,6 +27,7 @@ class EmailTileBuilder extends StatelessWidget with BaseEmailItemTile {
|
||||
final bool isSenderImportantFlagEnabled;
|
||||
final bool isAINeedsActionEnabled;
|
||||
final bool autoWrapTagsByMaxWidth;
|
||||
final bool isLabelMailboxOpened;
|
||||
final List<Label>? labels;
|
||||
final OnPressEmailActionClick? emailActionClick;
|
||||
final OnMoreActionClick? onMoreActionClick;
|
||||
@@ -39,6 +43,7 @@ class EmailTileBuilder extends StatelessWidget with BaseEmailItemTile {
|
||||
this.isSenderImportantFlagEnabled = true,
|
||||
this.isAINeedsActionEnabled = true,
|
||||
this.autoWrapTagsByMaxWidth = false,
|
||||
this.isLabelMailboxOpened = false,
|
||||
this.mailboxContain,
|
||||
this.padding,
|
||||
this.isDrag = false,
|
||||
@@ -120,7 +125,7 @@ class EmailTileBuilder extends StatelessWidget with BaseEmailItemTile {
|
||||
searchQuery)),
|
||||
buildMailboxContain(
|
||||
context,
|
||||
isSearchEmailRunning,
|
||||
isSearchEmailRunning || isLabelMailboxOpened,
|
||||
presentationEmail),
|
||||
if (presentationEmail.hasStarred)
|
||||
Padding(
|
||||
@@ -229,4 +234,10 @@ class EmailTileBuilder extends StatelessWidget with BaseEmailItemTile {
|
||||
|
||||
bool get _shouldShowAIAction =>
|
||||
isAINeedsActionEnabled && presentationEmail.hasNeedAction;
|
||||
|
||||
@override
|
||||
ImagePaths get imagePaths => Get.find<ImagePaths>();
|
||||
|
||||
@override
|
||||
ResponsiveUtils get responsiveUtils => Get.find<ResponsiveUtils>();
|
||||
}
|
||||
@@ -1,9 +1,12 @@
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/presentation/utils/theme_utils.dart';
|
||||
import 'package:core/presentation/views/button/icon_button_web.dart';
|
||||
import 'package:core/presentation/views/button/tmail_button_widget.dart';
|
||||
import 'package:core/presentation/views/responsive/responsive_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:labels/model/label.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
@@ -31,6 +34,7 @@ class EmailTileBuilder extends StatefulWidget {
|
||||
final bool isSenderImportantFlagEnabled;
|
||||
final bool isAINeedsActionEnabled;
|
||||
final bool autoWrapTagsByMaxWidth;
|
||||
final bool isLabelMailboxOpened;
|
||||
final List<Label>? labels;
|
||||
final OnPressEmailActionClick? emailActionClick;
|
||||
final OnMoreActionClick? onMoreActionClick;
|
||||
@@ -45,6 +49,7 @@ class EmailTileBuilder extends StatefulWidget {
|
||||
this.isSearchEmailRunning = false,
|
||||
this.isSenderImportantFlagEnabled = true,
|
||||
this.autoWrapTagsByMaxWidth = false,
|
||||
this.isLabelMailboxOpened = false,
|
||||
this.mailboxContain,
|
||||
this.padding,
|
||||
this.isDrag = false,
|
||||
@@ -160,7 +165,7 @@ class _EmailTileBuilderState extends State<EmailTileBuilder> with BaseEmailItem
|
||||
),
|
||||
buildMailboxContain(
|
||||
context,
|
||||
widget.isSearchEmailRunning,
|
||||
widget.isSearchEmailRunning || widget.isLabelMailboxOpened,
|
||||
widget.presentationEmail
|
||||
),
|
||||
if (widget.presentationEmail.hasStarred)
|
||||
@@ -185,6 +190,7 @@ class _EmailTileBuilderState extends State<EmailTileBuilder> with BaseEmailItem
|
||||
selectAllMode: widget.selectAllMode,
|
||||
canDeletePermanently: canDeletePermanently,
|
||||
isSearchEmailRunning: widget.isSearchEmailRunning,
|
||||
isLabelMailboxOpened: widget.isLabelMailboxOpened,
|
||||
isShowingEmailContent: widget.isShowingEmailContent,
|
||||
isDrag: widget.isDrag,
|
||||
isSenderImportantFlagEnabled: widget.isSenderImportantFlagEnabled,
|
||||
@@ -324,6 +330,7 @@ class _EmailTileBuilderState extends State<EmailTileBuilder> with BaseEmailItem
|
||||
isHovered: value,
|
||||
canDeletePermanently: canDeletePermanently,
|
||||
isSearchEmailRunning: widget.isSearchEmailRunning,
|
||||
isLabelMailboxOpened: widget.isLabelMailboxOpened,
|
||||
mailboxContain: widget.mailboxContain,
|
||||
emailActionClick: widget.emailActionClick,
|
||||
onMoreActionClick: widget.onMoreActionClick,
|
||||
@@ -621,4 +628,10 @@ class _EmailTileBuilderState extends State<EmailTileBuilder> with BaseEmailItem
|
||||
_hoverNotifier.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
ImagePaths get imagePaths => Get.find<ImagePaths>();
|
||||
|
||||
@override
|
||||
ResponsiveUtils get responsiveUtils => Get.find<ResponsiveUtils>();
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/presentation/views/button/tmail_button_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -22,6 +23,7 @@ class WebTabletBodyEmailItemWidget extends StatefulWidget {
|
||||
final bool canDeletePermanently;
|
||||
final bool isSearchEmailRunning;
|
||||
final bool isShowingEmailContent;
|
||||
final bool isLabelMailboxOpened;
|
||||
final bool isShowDateTimeView;
|
||||
final bool isDrag;
|
||||
final bool isSenderImportantFlagEnabled;
|
||||
@@ -40,6 +42,7 @@ class WebTabletBodyEmailItemWidget extends StatefulWidget {
|
||||
required this.selectAllMode,
|
||||
required this.canDeletePermanently,
|
||||
required this.isSearchEmailRunning,
|
||||
required this.isLabelMailboxOpened,
|
||||
required this.isShowingEmailContent,
|
||||
required this.isDrag,
|
||||
required this.isSenderImportantFlagEnabled,
|
||||
@@ -61,8 +64,6 @@ class WebTabletBodyEmailItemWidget extends StatefulWidget {
|
||||
|
||||
class _WebTabletBodyEmailItemWidgetState
|
||||
extends State<WebTabletBodyEmailItemWidget> with BaseEmailItemTile {
|
||||
final _imagePaths = Get.find<ImagePaths>();
|
||||
|
||||
bool _isHover = false;
|
||||
bool _popupMenuVisible = false;
|
||||
|
||||
@@ -152,7 +153,7 @@ class _WebTabletBodyEmailItemWidgetState
|
||||
),
|
||||
buildMailboxContain(
|
||||
context,
|
||||
widget.isSearchEmailRunning,
|
||||
widget.isSearchEmailRunning || widget.isLabelMailboxOpened,
|
||||
widget.presentationEmail,
|
||||
),
|
||||
if (widget.presentationEmail.hasStarred)
|
||||
@@ -184,7 +185,7 @@ class _WebTabletBodyEmailItemWidgetState
|
||||
children: [
|
||||
if (_isHover) ...[
|
||||
TMailButtonWidget.fromIcon(
|
||||
icon: _imagePaths.icOpenInNewTab,
|
||||
icon: imagePaths.icOpenInNewTab,
|
||||
iconColor: ItemEmailTileStyles.actionIconHoverColor,
|
||||
iconSize: _getIconSize(),
|
||||
padding: _getPaddingIcon(),
|
||||
@@ -200,8 +201,8 @@ class _WebTabletBodyEmailItemWidgetState
|
||||
if (!widget.presentationEmail.isDraft)
|
||||
TMailButtonWidget.fromIcon(
|
||||
icon: widget.presentationEmail.hasRead
|
||||
? _imagePaths.icUnread
|
||||
: _imagePaths.icRead,
|
||||
? imagePaths.icUnread
|
||||
: imagePaths.icRead,
|
||||
iconColor: ItemEmailTileStyles.actionIconHoverColor,
|
||||
iconSize: _getIconSize(),
|
||||
padding: _getPaddingIcon(),
|
||||
@@ -220,7 +221,7 @@ class _WebTabletBodyEmailItemWidgetState
|
||||
if (widget.mailboxContain != null &&
|
||||
widget.mailboxContain?.isDrafts == false) ...[
|
||||
TMailButtonWidget.fromIcon(
|
||||
icon: _imagePaths.icMove,
|
||||
icon: imagePaths.icMove,
|
||||
iconColor: ItemEmailTileStyles.actionIconHoverColor,
|
||||
iconSize: _getIconSize(),
|
||||
padding: _getPaddingIcon(),
|
||||
@@ -234,7 +235,7 @@ class _WebTabletBodyEmailItemWidgetState
|
||||
),
|
||||
],
|
||||
TMailButtonWidget.fromIcon(
|
||||
icon: _imagePaths.icDeleteComposer,
|
||||
icon: imagePaths.icDeleteComposer,
|
||||
iconColor: ItemEmailTileStyles.actionIconHoverColor,
|
||||
iconSize: _getIconSize(),
|
||||
padding: _getPaddingIcon(),
|
||||
@@ -253,7 +254,7 @@ class _WebTabletBodyEmailItemWidgetState
|
||||
],
|
||||
if (_shouldShowPopupMenu)
|
||||
TMailButtonWidget.fromIcon(
|
||||
icon: _imagePaths.icMoreVertical,
|
||||
icon: imagePaths.icMoreVertical,
|
||||
iconColor: ItemEmailTileStyles.actionIconHoverColor,
|
||||
iconSize: _getIconSize(),
|
||||
padding: _getPaddingIcon(),
|
||||
@@ -464,4 +465,10 @@ class _WebTabletBodyEmailItemWidgetState
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
ImagePaths get imagePaths => Get.find<ImagePaths>();
|
||||
|
||||
@override
|
||||
ResponsiveUtils get responsiveUtils => Get.find<ResponsiveUtils>();
|
||||
}
|
||||
Reference in New Issue
Block a user