TF-1328 Implement archiveMessage in thread and singleEmail
(cherry picked from commit 83b45fdb3f3138e59b7882a8fdb77e522e753f3e)
This commit is contained in:
@@ -287,4 +287,8 @@ mixin EmailActionController {
|
||||
void openEmailInNewTabAction(BuildContext context, PresentationEmail email) {
|
||||
AppUtils.launchLink(email.routeWebAsString);
|
||||
}
|
||||
|
||||
void archiveMessage(BuildContext context, PresentationEmail email) {
|
||||
mailboxDashBoardController.archiveMessage(context, email);
|
||||
}
|
||||
}
|
||||
@@ -1183,11 +1183,13 @@ class ThreadController extends BaseController with EmailActionController {
|
||||
if (direction == DismissDirection.startToEnd) {
|
||||
ReadActions readActions = !email.hasRead ? ReadActions.markAsRead : ReadActions.markAsUnread;
|
||||
markAsEmailRead(email, readActions, MarkReadAction.swipeOnThread);
|
||||
} else if (direction == DismissDirection.endToStart) {
|
||||
archiveMessage(context, email);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
DismissDirection getSwipeDirection(bool isWebDesktop, SelectMode selectMode) {
|
||||
DismissDirection getSwipeDirection(bool isWebDesktop, SelectMode selectMode, PresentationEmail email) {
|
||||
if (isWebDesktop) {
|
||||
return DismissDirection.none;
|
||||
}
|
||||
@@ -1196,9 +1198,13 @@ class ThreadController extends BaseController with EmailActionController {
|
||||
return DismissDirection.none;
|
||||
}
|
||||
|
||||
return DismissDirection.startToEnd;
|
||||
return isInArchiveMailbox(email)
|
||||
? DismissDirection.startToEnd
|
||||
: DismissDirection.horizontal;
|
||||
}
|
||||
|
||||
bool isInArchiveMailbox(PresentationEmail email) => email.mailboxContain?.isArchive == true;
|
||||
|
||||
void scrollToTop() {
|
||||
if (listEmailController.hasClients) {
|
||||
listEmailController.animateTo(0, duration: const Duration(milliseconds: 500), curve: Curves.fastOutSlowIn);
|
||||
|
||||
@@ -495,33 +495,33 @@ 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,
|
||||
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),
|
||||
child: EmailTileBuilder(
|
||||
@@ -730,13 +730,13 @@ class ThreadView extends GetWidget<ThreadController>
|
||||
AppLocalizations.of(context).archiveMessage,
|
||||
email,
|
||||
iconLeftPadding: controller.responsiveUtils.isMobile(context)
|
||||
? const EdgeInsets.only(left: 12, right: 16)
|
||||
: const EdgeInsets.only(right: 12),
|
||||
? const EdgeInsetsDirectional.only(start: 12, end: 16)
|
||||
: const EdgeInsetsDirectional.only(start: 12),
|
||||
iconRightPadding: controller.responsiveUtils.isMobile(context)
|
||||
? const EdgeInsets.only(right: 12)
|
||||
? const EdgeInsetsDirectional.only(start: 12)
|
||||
: EdgeInsets.zero
|
||||
)
|
||||
..onActionClick((email) => controller.archiveMessage(email))
|
||||
..onActionClick((email) => controller.archiveMessage(context, email))
|
||||
).build();
|
||||
}
|
||||
|
||||
@@ -821,7 +821,7 @@ class ThreadView extends GetWidget<ThreadController>
|
||||
),
|
||||
onCallbackAction: () {
|
||||
popBack();
|
||||
controller.archiveMessage(email);
|
||||
controller.archiveMessage(context, email);
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user