TF-1328 Implement archiveMessage in thread and singleEmail

(cherry picked from commit 83b45fdb3f3138e59b7882a8fdb77e522e753f3e)
This commit is contained in:
hieubt
2023-12-26 12:19:11 +07:00
committed by Dat H. Pham
parent 92ea5865aa
commit 53922c19d2
6 changed files with 71 additions and 54 deletions
@@ -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);
}
)
);