TF-3517 Add integration test for case Save draft without Reply-To & reopen it
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -10,6 +10,7 @@ import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/app_
|
|||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_composer_widget.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_composer_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_suggestion_item_widget.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_suggestion_item_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/subject_composer_widget.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/subject_composer_widget.dart';
|
||||||
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
import '../base/core_robot.dart';
|
import '../base/core_robot.dart';
|
||||||
import '../extensions/patrol_finder_extension.dart';
|
import '../extensions/patrol_finder_extension.dart';
|
||||||
@@ -17,9 +18,12 @@ import '../extensions/patrol_finder_extension.dart';
|
|||||||
class ComposerRobot extends CoreRobot {
|
class ComposerRobot extends CoreRobot {
|
||||||
ComposerRobot(super.$);
|
ComposerRobot(super.$);
|
||||||
|
|
||||||
Future<void> addRecipient(String email) async {
|
Future<void> addRecipientIntoField({
|
||||||
|
required PrefixEmailAddress prefixEmailAddress,
|
||||||
|
required String email,
|
||||||
|
}) async {
|
||||||
final finder = $(RecipientComposerWidget)
|
final finder = $(RecipientComposerWidget)
|
||||||
.which<RecipientComposerWidget>((widget) => widget.prefix == PrefixEmailAddress.to);
|
.which<RecipientComposerWidget>((widget) => widget.prefix == prefixEmailAddress);
|
||||||
final isTextFieldFocused = finder
|
final isTextFieldFocused = finder
|
||||||
.which<RecipientComposerWidget>((view) => view.focusNode?.hasFocus ?? false)
|
.which<RecipientComposerWidget>((view) => view.focusNode?.hasFocus ?? false)
|
||||||
.exists;
|
.exists;
|
||||||
@@ -58,10 +62,10 @@ class ComposerRobot extends CoreRobot {
|
|||||||
await composerController!.htmlEditorApi!.insertHtml('$content <br><br>');
|
await composerController!.htmlEditorApi!.insertHtml('$content <br><br>');
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> sendEmail() async {
|
Future<void> sendEmail(ImagePaths imagePaths) async {
|
||||||
await $(AppBarComposerWidget)
|
await $(AppBarComposerWidget)
|
||||||
.$(TMailButtonWidget)
|
.$(TMailButtonWidget)
|
||||||
.which<TMailButtonWidget>((widget) => widget.icon == ImagePaths().icSendMobile)
|
.which<TMailButtonWidget>((widget) => widget.icon == imagePaths.icSendMobile)
|
||||||
.tap();
|
.tap();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,4 +74,15 @@ class ComposerRobot extends CoreRobot {
|
|||||||
await $.native.grantPermissionWhenInUse();
|
await $.native.grantPermissionWhenInUse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> tapCloseComposer(ImagePaths imagePaths) async {
|
||||||
|
await $(AppBarComposerWidget)
|
||||||
|
.$(TMailButtonWidget)
|
||||||
|
.which<TMailButtonWidget>((widget) => widget.icon == imagePaths.icCancel)
|
||||||
|
.tap();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> tapSaveButtonOnSaveDraftConfirmDialog(AppLocalizations appLocalizations) async {
|
||||||
|
await $(find.text(appLocalizations.save)).tap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
|
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/label_mailbox_item_widget.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_item_widget.dart';
|
||||||
|
|
||||||
import '../base/core_robot.dart';
|
import '../base/core_robot.dart';
|
||||||
|
|
||||||
class MailboxMenuRobot extends CoreRobot {
|
class MailboxMenuRobot extends CoreRobot {
|
||||||
@@ -7,4 +11,11 @@ class MailboxMenuRobot extends CoreRobot {
|
|||||||
Future<void> openAppGrid() async {
|
Future<void> openAppGrid() async {
|
||||||
await $(#toggle_app_grid_button).tap();
|
await $(#toggle_app_grid_button).tap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> openFolderByName(String name) async {
|
||||||
|
await $(MailboxItemWidget)
|
||||||
|
.$(LabelMailboxItemWidget)
|
||||||
|
.$(find.text(name))
|
||||||
|
.tap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+104
@@ -0,0 +1,104 @@
|
|||||||
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:model/email/prefix_email_address.dart';
|
||||||
|
import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart';
|
||||||
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_composer_widget.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/label_mailbox_item_widget.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_item_widget.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart';
|
||||||
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
|
import '../base/base_test_scenario.dart';
|
||||||
|
import '../robots/composer_robot.dart';
|
||||||
|
import '../robots/mailbox_menu_robot.dart';
|
||||||
|
import '../robots/thread_robot.dart';
|
||||||
|
|
||||||
|
class SaveDraftThenCloseComposerAndOpenDraftScenario extends BaseTestScenario {
|
||||||
|
|
||||||
|
const SaveDraftThenCloseComposerAndOpenDraftScenario(super.$);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> runTestLogic() async {
|
||||||
|
const email = String.fromEnvironment('BASIC_AUTH_EMAIL');
|
||||||
|
const subject = 'Save draft email without Reply-To';
|
||||||
|
|
||||||
|
final threadRobot = ThreadRobot($);
|
||||||
|
final composerRobot = ComposerRobot($);
|
||||||
|
final mailboxMenuRobot = MailboxMenuRobot($);
|
||||||
|
final appLocalizations = AppLocalizations();
|
||||||
|
final imagePaths = ImagePaths();
|
||||||
|
|
||||||
|
await threadRobot.openComposer();
|
||||||
|
await _expectComposerViewVisible();
|
||||||
|
|
||||||
|
await composerRobot.grantContactPermission();
|
||||||
|
|
||||||
|
await composerRobot.addRecipientIntoField(
|
||||||
|
prefixEmailAddress: PrefixEmailAddress.to,
|
||||||
|
email: email,
|
||||||
|
);
|
||||||
|
|
||||||
|
await composerRobot.addSubject(subject);
|
||||||
|
|
||||||
|
await composerRobot.tapCloseComposer(imagePaths);
|
||||||
|
await $.pump(const Duration(seconds: 2));
|
||||||
|
await _expectSaveDraftConfirmDialogVisible();
|
||||||
|
|
||||||
|
await composerRobot.tapSaveButtonOnSaveDraftConfirmDialog(appLocalizations);
|
||||||
|
await _expectSaveDraftEmailSuccessToast(appLocalizations);
|
||||||
|
|
||||||
|
await $.pump(const Duration(seconds: 2));
|
||||||
|
|
||||||
|
await threadRobot.openMailbox();
|
||||||
|
await _expectMailboxViewVisible();
|
||||||
|
await _expectDraftFolderVisible(appLocalizations);
|
||||||
|
|
||||||
|
await mailboxMenuRobot.openFolderByName(appLocalizations.draftsMailboxDisplayName);
|
||||||
|
await $.pump(const Duration(seconds: 2));
|
||||||
|
await _expectDraftEmailWithSubjectVisible(subject);
|
||||||
|
|
||||||
|
await threadRobot.openEmailWithSubject(subject);
|
||||||
|
await _expectComposerViewVisible();
|
||||||
|
|
||||||
|
await composerRobot.grantContactPermission();
|
||||||
|
await _expectMobileEditorViewVisible();
|
||||||
|
|
||||||
|
await _expectReplyToFiledInvisible();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _expectComposerViewVisible() => expectViewVisible($(ComposerView));
|
||||||
|
|
||||||
|
Future<void> _expectSaveDraftEmailSuccessToast(AppLocalizations appLocalizations) async {
|
||||||
|
await expectViewVisible($(find.text(appLocalizations.drafts_saved)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _expectSaveDraftConfirmDialogVisible() async {
|
||||||
|
await expectViewVisible($(#confirm_dialog_action));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _expectMailboxViewVisible() => expectViewVisible($(MailboxView));
|
||||||
|
|
||||||
|
Future<void> _expectDraftFolderVisible(AppLocalizations appLocalizations) =>
|
||||||
|
expectViewVisible(
|
||||||
|
$(MailboxItemWidget)
|
||||||
|
.$(LabelMailboxItemWidget)
|
||||||
|
.$(find.text(appLocalizations.draftsMailboxDisplayName))
|
||||||
|
);
|
||||||
|
|
||||||
|
Future<void> _expectDraftEmailWithSubjectVisible(String subject) async {
|
||||||
|
await expectViewVisible($(EmailTileBuilder).$(find.text(subject)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _expectMobileEditorViewVisible() async {
|
||||||
|
await expectViewVisible($(#mobile_editor));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _expectReplyToFiledInvisible() async {
|
||||||
|
expect(
|
||||||
|
$(RecipientComposerWidget)
|
||||||
|
.which<RecipientComposerWidget>((view) => view.prefix == PrefixEmailAddress.replyTo),
|
||||||
|
findsNothing,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
|
import 'package:core/core.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:model/email/prefix_email_address.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
@@ -18,17 +20,24 @@ class SendEmailScenario extends BaseTestScenario {
|
|||||||
|
|
||||||
final threadRobot = ThreadRobot($);
|
final threadRobot = ThreadRobot($);
|
||||||
final composerRobot = ComposerRobot($);
|
final composerRobot = ComposerRobot($);
|
||||||
|
final imagePaths = ImagePaths();
|
||||||
|
|
||||||
await threadRobot.openComposer();
|
await threadRobot.openComposer();
|
||||||
await _expectComposerViewVisible();
|
await _expectComposerViewVisible();
|
||||||
|
|
||||||
await composerRobot.grantContactPermission();
|
await composerRobot.grantContactPermission();
|
||||||
|
|
||||||
await composerRobot.addRecipient(email);
|
await composerRobot.addRecipientIntoField(
|
||||||
await composerRobot.addRecipient(additionalRecipient);
|
prefixEmailAddress: PrefixEmailAddress.to,
|
||||||
|
email: email,
|
||||||
|
);
|
||||||
|
await composerRobot.addRecipientIntoField(
|
||||||
|
prefixEmailAddress: PrefixEmailAddress.to,
|
||||||
|
email: additionalRecipient,
|
||||||
|
);
|
||||||
await composerRobot.addSubject(subject);
|
await composerRobot.addSubject(subject);
|
||||||
await composerRobot.addContent(content);
|
await composerRobot.addContent(content);
|
||||||
await composerRobot.sendEmail();
|
await composerRobot.sendEmail(imagePaths);
|
||||||
|
|
||||||
await _expectSendEmailSuccessToast();
|
await _expectSendEmailSuccessToast();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
import '../../base/test_base.dart';
|
||||||
|
import '../../scenarios/save_draft_then_close_composer_and_open_draft_scenario.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
TestBase().runPatrolTest(
|
||||||
|
description: 'Should not see email address in `Reply-To` field when save draft email without `Reply-To` then open draft email',
|
||||||
|
scenarioBuilder: ($) => SaveDraftThenCloseComposerAndOpenDraftScenario($),
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -13,6 +13,7 @@ mixin MessageDialogActionMixin {
|
|||||||
String message,
|
String message,
|
||||||
String actionName,
|
String actionName,
|
||||||
{
|
{
|
||||||
|
Key key = const Key('confirm_dialog_action'),
|
||||||
Function? onConfirmAction,
|
Function? onConfirmAction,
|
||||||
Function? onCancelAction,
|
Function? onCancelAction,
|
||||||
OnCloseButtonAction? onCloseButtonAction,
|
OnCloseButtonAction? onCloseButtonAction,
|
||||||
@@ -56,7 +57,7 @@ mixin MessageDialogActionMixin {
|
|||||||
titleActionButtonMaxLines: titleActionButtonMaxLines,
|
titleActionButtonMaxLines: titleActionButtonMaxLines,
|
||||||
isArrangeActionButtonsVertical: isArrangeActionButtonsVertical
|
isArrangeActionButtonsVertical: isArrangeActionButtonsVertical
|
||||||
)
|
)
|
||||||
..key(const Key('confirm_dialog_action'))
|
..key(key)
|
||||||
..title(title ?? '')
|
..title(title ?? '')
|
||||||
..content(message)
|
..content(message)
|
||||||
..addIcon(icon)
|
..addIcon(icon)
|
||||||
@@ -108,7 +109,7 @@ mixin MessageDialogActionMixin {
|
|||||||
titleActionButtonMaxLines: titleActionButtonMaxLines,
|
titleActionButtonMaxLines: titleActionButtonMaxLines,
|
||||||
isArrangeActionButtonsVertical: isArrangeActionButtonsVertical
|
isArrangeActionButtonsVertical: isArrangeActionButtonsVertical
|
||||||
)
|
)
|
||||||
..key(const Key('confirm_dialog_action'))
|
..key(key)
|
||||||
..title(title ?? '')
|
..title(title ?? '')
|
||||||
..content(message)
|
..content(message)
|
||||||
..addIcon(icon)
|
..addIcon(icon)
|
||||||
@@ -186,7 +187,7 @@ mixin MessageDialogActionMixin {
|
|||||||
titleActionButtonMaxLines: titleActionButtonMaxLines,
|
titleActionButtonMaxLines: titleActionButtonMaxLines,
|
||||||
isArrangeActionButtonsVertical: isArrangeActionButtonsVertical
|
isArrangeActionButtonsVertical: isArrangeActionButtonsVertical
|
||||||
)
|
)
|
||||||
..key(const Key('confirm_dialog_action'))
|
..key(key)
|
||||||
..title(title ?? '')
|
..title(title ?? '')
|
||||||
..content(message)
|
..content(message)
|
||||||
..addIcon(icon)
|
..addIcon(icon)
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import 'package:tmail_ui_user/features/base/styles/popup_item_widget_style.dart'
|
|||||||
|
|
||||||
class PopupItemWidget extends StatelessWidget {
|
class PopupItemWidget extends StatelessWidget {
|
||||||
|
|
||||||
final String _iconAction;
|
final String iconAction;
|
||||||
final String _nameAction;
|
final String nameAction;
|
||||||
final Color? colorIcon;
|
final Color? colorIcon;
|
||||||
final double? iconSize;
|
final double? iconSize;
|
||||||
final TextStyle? styleName;
|
final TextStyle? styleName;
|
||||||
@@ -16,20 +16,18 @@ class PopupItemWidget extends StatelessWidget {
|
|||||||
final EdgeInsetsGeometry? padding;
|
final EdgeInsetsGeometry? padding;
|
||||||
final VoidCallback? onCallbackAction;
|
final VoidCallback? onCallbackAction;
|
||||||
|
|
||||||
const PopupItemWidget(
|
const PopupItemWidget({
|
||||||
this._iconAction,
|
Key? key,
|
||||||
this._nameAction,
|
required this.iconAction,
|
||||||
{
|
required this.nameAction,
|
||||||
Key? key,
|
this.colorIcon,
|
||||||
this.colorIcon,
|
this.iconSize,
|
||||||
this.iconSize,
|
this.styleName,
|
||||||
this.styleName,
|
this.isSelected,
|
||||||
this.isSelected,
|
this.padding,
|
||||||
this.padding,
|
this.selectedIcon,
|
||||||
this.selectedIcon,
|
this.onCallbackAction,
|
||||||
this.onCallbackAction
|
}) : super(key: key);
|
||||||
}
|
|
||||||
) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -44,7 +42,7 @@ class PopupItemWidget extends StatelessWidget {
|
|||||||
padding: padding,
|
padding: padding,
|
||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_iconAction,
|
iconAction,
|
||||||
width: iconSize ?? PopupItemWidgetStyle.iconSize,
|
width: iconSize ?? PopupItemWidgetStyle.iconSize,
|
||||||
height: iconSize ?? PopupItemWidgetStyle.iconSize,
|
height: iconSize ?? PopupItemWidgetStyle.iconSize,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
@@ -52,7 +50,7 @@ class PopupItemWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
const SizedBox(width: PopupItemWidgetStyle.space),
|
const SizedBox(width: PopupItemWidgetStyle.space),
|
||||||
Expanded(child: Text(
|
Expanded(child: Text(
|
||||||
_nameAction,
|
nameAction,
|
||||||
style: styleName ?? PopupItemWidgetStyle.labelTextStyle
|
style: styleName ?? PopupItemWidgetStyle.labelTextStyle
|
||||||
)),
|
)),
|
||||||
if (isSelected == true && selectedIcon != null)
|
if (isSelected == true && selectedIcon != null)
|
||||||
|
|||||||
@@ -496,8 +496,8 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
controller.imagePaths.icReadReceipt,
|
iconAction: controller.imagePaths.icReadReceipt,
|
||||||
AppLocalizations.of(context).requestReadReceipt,
|
nameAction: AppLocalizations.of(context).requestReadReceipt,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
padding: ComposerStyle.popupItemPadding,
|
padding: ComposerStyle.popupItemPadding,
|
||||||
colorIcon: ComposerStyle.popupItemIconColor,
|
colorIcon: ComposerStyle.popupItemIconColor,
|
||||||
@@ -512,8 +512,8 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
controller.imagePaths.icSaveToDraft,
|
iconAction: controller.imagePaths.icSaveToDraft,
|
||||||
AppLocalizations.of(context).saveAsDraft,
|
nameAction: AppLocalizations.of(context).saveAsDraft,
|
||||||
colorIcon: ComposerStyle.popupItemIconColor,
|
colorIcon: ComposerStyle.popupItemIconColor,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
padding: ComposerStyle.popupItemPadding,
|
padding: ComposerStyle.popupItemPadding,
|
||||||
@@ -526,8 +526,8 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
controller.imagePaths.icDeleteMailbox,
|
iconAction: controller.imagePaths.icDeleteMailbox,
|
||||||
AppLocalizations.of(context).delete,
|
nameAction: AppLocalizations.of(context).delete,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
padding: ComposerStyle.popupItemPadding,
|
padding: ComposerStyle.popupItemPadding,
|
||||||
onCallbackAction: () {
|
onCallbackAction: () {
|
||||||
|
|||||||
@@ -104,8 +104,8 @@ class BottomBarComposerWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
listButtonAction: [
|
listButtonAction: [
|
||||||
PopupItemWidget(
|
PopupItemWidget(
|
||||||
imagePaths.icStyleCodeView,
|
iconAction: imagePaths.icStyleCodeView,
|
||||||
AppLocalizations.of(context).embedCode,
|
nameAction: AppLocalizations.of(context).embedCode,
|
||||||
styleName: BottomBarComposerWidgetStyle.popupItemTextStyle,
|
styleName: BottomBarComposerWidgetStyle.popupItemTextStyle,
|
||||||
colorIcon: BottomBarComposerWidgetStyle.iconColor,
|
colorIcon: BottomBarComposerWidgetStyle.iconColor,
|
||||||
padding: BottomBarComposerWidgetStyle.popupItemPadding,
|
padding: BottomBarComposerWidgetStyle.popupItemPadding,
|
||||||
@@ -117,8 +117,8 @@ class BottomBarComposerWidget extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
PopupItemWidget(
|
PopupItemWidget(
|
||||||
imagePaths.icReadReceipt,
|
iconAction: imagePaths.icReadReceipt,
|
||||||
AppLocalizations.of(context).requestReadReceipt,
|
nameAction: AppLocalizations.of(context).requestReadReceipt,
|
||||||
styleName: BottomBarComposerWidgetStyle.popupItemTextStyle,
|
styleName: BottomBarComposerWidgetStyle.popupItemTextStyle,
|
||||||
padding: BottomBarComposerWidgetStyle.popupItemPadding,
|
padding: BottomBarComposerWidgetStyle.popupItemPadding,
|
||||||
colorIcon: BottomBarComposerWidgetStyle.iconColor,
|
colorIcon: BottomBarComposerWidgetStyle.iconColor,
|
||||||
@@ -131,8 +131,8 @@ class BottomBarComposerWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
if (_isPrintEnabled)
|
if (_isPrintEnabled)
|
||||||
PopupItemWidget(
|
PopupItemWidget(
|
||||||
imagePaths.icPrinter,
|
iconAction: imagePaths.icPrinter,
|
||||||
AppLocalizations.of(context).print,
|
nameAction: AppLocalizations.of(context).print,
|
||||||
colorIcon: BottomBarComposerWidgetStyle.iconColor,
|
colorIcon: BottomBarComposerWidgetStyle.iconColor,
|
||||||
styleName: BottomBarComposerWidgetStyle.popupItemTextStyle,
|
styleName: BottomBarComposerWidgetStyle.popupItemTextStyle,
|
||||||
padding: BottomBarComposerWidgetStyle.popupItemPadding,
|
padding: BottomBarComposerWidgetStyle.popupItemPadding,
|
||||||
|
|||||||
+10
-10
@@ -121,8 +121,8 @@ class MobileResponsiveAppBarComposerWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
listButtonAction: [
|
listButtonAction: [
|
||||||
PopupItemWidget(
|
PopupItemWidget(
|
||||||
imagePaths.icStyleCodeView,
|
iconAction: imagePaths.icStyleCodeView,
|
||||||
AppLocalizations.of(context).embedCode,
|
nameAction: AppLocalizations.of(context).embedCode,
|
||||||
styleName: MobileAppBarComposerWidgetStyle.popupItemTextStyle,
|
styleName: MobileAppBarComposerWidgetStyle.popupItemTextStyle,
|
||||||
colorIcon: MobileAppBarComposerWidgetStyle.iconColor,
|
colorIcon: MobileAppBarComposerWidgetStyle.iconColor,
|
||||||
padding: MobileAppBarComposerWidgetStyle.popupItemPadding,
|
padding: MobileAppBarComposerWidgetStyle.popupItemPadding,
|
||||||
@@ -134,8 +134,8 @@ class MobileResponsiveAppBarComposerWidget extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
PopupItemWidget(
|
PopupItemWidget(
|
||||||
imagePaths.icReadReceipt,
|
iconAction: imagePaths.icReadReceipt,
|
||||||
AppLocalizations.of(context).requestReadReceipt,
|
nameAction: AppLocalizations.of(context).requestReadReceipt,
|
||||||
styleName: MobileAppBarComposerWidgetStyle.popupItemTextStyle,
|
styleName: MobileAppBarComposerWidgetStyle.popupItemTextStyle,
|
||||||
padding: MobileAppBarComposerWidgetStyle.popupItemPadding,
|
padding: MobileAppBarComposerWidgetStyle.popupItemPadding,
|
||||||
colorIcon: MobileAppBarComposerWidgetStyle.popupItemIconColor,
|
colorIcon: MobileAppBarComposerWidgetStyle.popupItemIconColor,
|
||||||
@@ -148,8 +148,8 @@ class MobileResponsiveAppBarComposerWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
if (_isPrintEnabled)
|
if (_isPrintEnabled)
|
||||||
PopupItemWidget(
|
PopupItemWidget(
|
||||||
imagePaths.icPrinter,
|
iconAction: imagePaths.icPrinter,
|
||||||
AppLocalizations.of(context).print,
|
nameAction: AppLocalizations.of(context).print,
|
||||||
colorIcon: MobileAppBarComposerWidgetStyle.popupItemIconColor,
|
colorIcon: MobileAppBarComposerWidgetStyle.popupItemIconColor,
|
||||||
styleName: MobileAppBarComposerWidgetStyle.popupItemTextStyle,
|
styleName: MobileAppBarComposerWidgetStyle.popupItemTextStyle,
|
||||||
padding: MobileAppBarComposerWidgetStyle.popupItemPadding,
|
padding: MobileAppBarComposerWidgetStyle.popupItemPadding,
|
||||||
@@ -159,8 +159,8 @@ class MobileResponsiveAppBarComposerWidget extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
PopupItemWidget(
|
PopupItemWidget(
|
||||||
imagePaths.icSaveToDraft,
|
iconAction: imagePaths.icSaveToDraft,
|
||||||
AppLocalizations.of(context).saveAsDraft,
|
nameAction: AppLocalizations.of(context).saveAsDraft,
|
||||||
colorIcon: MobileAppBarComposerWidgetStyle.popupItemIconColor,
|
colorIcon: MobileAppBarComposerWidgetStyle.popupItemIconColor,
|
||||||
styleName: MobileAppBarComposerWidgetStyle.popupItemTextStyle,
|
styleName: MobileAppBarComposerWidgetStyle.popupItemTextStyle,
|
||||||
padding: MobileAppBarComposerWidgetStyle.popupItemPadding,
|
padding: MobileAppBarComposerWidgetStyle.popupItemPadding,
|
||||||
@@ -170,8 +170,8 @@ class MobileResponsiveAppBarComposerWidget extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
PopupItemWidget(
|
PopupItemWidget(
|
||||||
imagePaths.icDeleteMailbox,
|
iconAction: imagePaths.icDeleteMailbox,
|
||||||
AppLocalizations.of(context).delete,
|
nameAction: AppLocalizations.of(context).delete,
|
||||||
colorIcon: MobileAppBarComposerWidgetStyle.popupItemIconColor,
|
colorIcon: MobileAppBarComposerWidgetStyle.popupItemIconColor,
|
||||||
styleName: MobileAppBarComposerWidgetStyle.popupItemTextStyle,
|
styleName: MobileAppBarComposerWidgetStyle.popupItemTextStyle,
|
||||||
padding: MobileAppBarComposerWidgetStyle.popupItemPadding,
|
padding: MobileAppBarComposerWidgetStyle.popupItemPadding,
|
||||||
|
|||||||
@@ -565,8 +565,8 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
key: Key('${action.name}_action'),
|
key: Key('${action.name}_action'),
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
action.getIcon(controller.imagePaths),
|
iconAction: action.getIcon(controller.imagePaths),
|
||||||
action.getTitle(context),
|
nameAction: action.getTitle(context),
|
||||||
colorIcon: AppColor.colorTextButton,
|
colorIcon: AppColor.colorTextButton,
|
||||||
padding: const EdgeInsetsDirectional.only(start: 12),
|
padding: const EdgeInsetsDirectional.only(start: 12),
|
||||||
styleName: const TextStyle(
|
styleName: const TextStyle(
|
||||||
|
|||||||
@@ -315,8 +315,8 @@ mixin MailboxWidgetMixin {
|
|||||||
child: Opacity(
|
child: Opacity(
|
||||||
opacity: contextMenuItem.isActivated ? 1.0 : 0.3,
|
opacity: contextMenuItem.isActivated ? 1.0 : 0.3,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
contextMenuItem.action.getContextMenuIcon(imagePaths),
|
iconAction: contextMenuItem.action.getContextMenuIcon(imagePaths),
|
||||||
contextMenuItem.action.getTitleContextMenu(context),
|
nameAction: contextMenuItem.action.getTitleContextMenu(context),
|
||||||
colorIcon: contextMenuItem.action.getColorContextMenuIcon(),
|
colorIcon: contextMenuItem.action.getColorContextMenuIcon(),
|
||||||
padding: const EdgeInsetsDirectional.only(start: 12),
|
padding: const EdgeInsetsDirectional.only(start: 12),
|
||||||
iconSize: 24,
|
iconSize: 24,
|
||||||
|
|||||||
Reference in New Issue
Block a user