TF-1328 Add archiveMessage to thread_view
(cherry picked from commit a88525e120223d89ad7a6f39af8d50c0196bb853)
This commit is contained in:
@@ -451,7 +451,11 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
|
|
||||||
return Dismissible(
|
return Dismissible(
|
||||||
key: ValueKey<EmailId?>(presentationEmail.id),
|
key: ValueKey<EmailId?>(presentationEmail.id),
|
||||||
direction: controller.getSwipeDirection(controller.responsiveUtils.isWebDesktop(context), selectModeAll),
|
direction: controller.getSwipeDirection(
|
||||||
|
controller.responsiveUtils.isWebDesktop(context),
|
||||||
|
selectModeAll,
|
||||||
|
presentationEmail
|
||||||
|
),
|
||||||
background: Container(
|
background: Container(
|
||||||
color: AppColor.colorItemRecipientSelected,
|
color: AppColor.colorItemRecipientSelected,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
@@ -489,6 +493,36 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
secondaryBackground: controller.isInArchiveMailbox(presentationEmail) == false
|
||||||
|
? Container(
|
||||||
|
color: AppColor.colorItemRecipientSelected,
|
||||||
|
padding: const EdgeInsetsDirectional.only(end: 16),
|
||||||
|
child: Align(
|
||||||
|
alignment: AlignmentDirectional.centerEnd,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
const Spacer(),
|
||||||
|
CircleAvatar(
|
||||||
|
backgroundColor: AppColor.colorSpamReportBannerBackground,
|
||||||
|
radius: 24,
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
controller.imagePaths.icMailboxArchived,
|
||||||
|
fit: BoxFit.fill,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
const SizedBox(width: 11),
|
||||||
|
Text(
|
||||||
|
AppLocalizations.of(context).archiveMessage,
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 15,
|
||||||
|
color: AppColor.primaryColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: null,
|
||||||
confirmDismiss: (direction) => controller.swipeEmailAction(context, presentationEmail, direction),
|
confirmDismiss: (direction) => controller.swipeEmailAction(context, presentationEmail, direction),
|
||||||
child: EmailTileBuilder(
|
child: EmailTileBuilder(
|
||||||
presentationEmail: presentationEmail,
|
presentationEmail: presentationEmail,
|
||||||
@@ -621,6 +655,8 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
_openInNewTabContextMenuItemAction(context, email),
|
_openInNewTabContextMenuItemAction(context, email),
|
||||||
if (mailboxContain?.isDrafts == false)
|
if (mailboxContain?.isDrafts == false)
|
||||||
_markAsEmailSpamOrUnSpamContextMenuItemAction(context, email, mailboxContain),
|
_markAsEmailSpamOrUnSpamContextMenuItemAction(context, email, mailboxContain),
|
||||||
|
if (mailboxContain?.isArchive == false)
|
||||||
|
_archiveMessageContextMenuItemAction(context, email),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -680,13 +716,39 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
).build();
|
).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget _archiveMessageContextMenuItemAction(BuildContext context, PresentationEmail email) {
|
||||||
|
return (
|
||||||
|
EmailActionCupertinoActionSheetActionBuilder(
|
||||||
|
const Key('archive_message_action'),
|
||||||
|
SvgPicture.asset(
|
||||||
|
controller.imagePaths.icMailboxArchived,
|
||||||
|
width: 24,
|
||||||
|
height: 24,
|
||||||
|
fit: BoxFit.fill,
|
||||||
|
colorFilter: AppColor.colorTextButton.asFilter()
|
||||||
|
),
|
||||||
|
AppLocalizations.of(context).archiveMessage,
|
||||||
|
email,
|
||||||
|
iconLeftPadding: controller.responsiveUtils.isMobile(context)
|
||||||
|
? const EdgeInsets.only(left: 12, right: 16)
|
||||||
|
: const EdgeInsets.only(right: 12),
|
||||||
|
iconRightPadding: controller.responsiveUtils.isMobile(context)
|
||||||
|
? const EdgeInsets.only(right: 12)
|
||||||
|
: EdgeInsets.zero
|
||||||
|
)
|
||||||
|
..onActionClick((email) => controller.archiveMessage(email))
|
||||||
|
).build();
|
||||||
|
}
|
||||||
|
|
||||||
List<PopupMenuEntry> _popupMenuActionTile(BuildContext context, PresentationEmail email) {
|
List<PopupMenuEntry> _popupMenuActionTile(BuildContext context, PresentationEmail email) {
|
||||||
final mailboxContain = email.mailboxContain;
|
final mailboxContain = email.mailboxContain;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
_buildOpenInNewTabPopupMenuItem(context, email, mailboxContain),
|
_buildOpenInNewTabPopupMenuItem(context, email, mailboxContain),
|
||||||
if (mailboxContain?.isDrafts == false)
|
if (mailboxContain?.isDrafts == false)
|
||||||
_buildMarkAsSpamPopupMenuItem(context, email, mailboxContain)
|
_buildMarkAsSpamPopupMenuItem(context, email, mailboxContain),
|
||||||
|
if (mailboxContain?.isArchive == false)
|
||||||
|
_buildArchiveMessagePopupMenuItem(context, email),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -742,6 +804,29 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PopupMenuEntry _buildArchiveMessagePopupMenuItem(
|
||||||
|
BuildContext context,
|
||||||
|
PresentationEmail email
|
||||||
|
) {
|
||||||
|
return PopupMenuItem(
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
child: popupItem(
|
||||||
|
controller.imagePaths.icMailboxArchived,
|
||||||
|
AppLocalizations.of(context).archiveMessage,
|
||||||
|
colorIcon: AppColor.colorTextButton,
|
||||||
|
styleName: const TextStyle(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize: 16,
|
||||||
|
color: Colors.black
|
||||||
|
),
|
||||||
|
onCallbackAction: () {
|
||||||
|
popBack();
|
||||||
|
controller.archiveMessage(email);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Widget _buildMarkAsMailboxReadLoading(BuildContext context) {
|
Widget _buildMarkAsMailboxReadLoading(BuildContext context) {
|
||||||
return Obx(() {
|
return Obx(() {
|
||||||
final viewState = controller.mailboxDashBoardController.viewStateMarkAsReadMailbox.value;
|
final viewState = controller.mailboxDashBoardController.viewStateMarkAsReadMailbox.value;
|
||||||
|
|||||||
Reference in New Issue
Block a user