TF-1074 Handle go to path /destination_picker

This commit is contained in:
dab246
2022-10-24 23:39:05 +07:00
committed by Dat H. Pham
parent d3124f055b
commit daddeb78dc
17 changed files with 601 additions and 170 deletions
@@ -134,18 +134,34 @@ class AdvancedFilterController extends BaseController {
);
}
void selectedMailBox() async {
final destinationMailbox = await push(
AppRoutes.destinationPicker,
arguments: DestinationPickerArguments(
_mailboxDashBoardController.accountId.value!,
MailboxActions.select,
mailboxIdSelected: searchController.searchEmailFilter.value.mailbox?.id));
void selectedMailBox(BuildContext context) async {
final accountId = _mailboxDashBoardController.accountId.value;
if (accountId != null) {
final arguments = DestinationPickerArguments(
accountId,
MailboxActions.select,
mailboxIdSelected: searchController.searchEmailFilter.value.mailbox?.id);
if (destinationMailbox is PresentationMailbox) {
searchController.updateFilterEmail(mailbox: destinationMailbox);
mailBoxFilterInputController.text =
StringConvert.writeNullToEmpty(destinationMailbox.name?.name);
if (BuildUtils.isWeb) {
showDialogDestinationPicker(
context: context,
arguments: arguments,
onSelectedMailbox: (destinationMailbox) {
searchController.updateFilterEmail(mailbox: destinationMailbox);
mailBoxFilterInputController.text =
StringConvert.writeNullToEmpty(destinationMailbox.name?.name);
});
} else {
final destinationMailbox = await push(
AppRoutes.destinationPicker,
arguments: arguments);
if (destinationMailbox is PresentationMailbox) {
searchController.updateFilterEmail(mailbox: destinationMailbox);
mailBoxFilterInputController.text =
StringConvert.writeNullToEmpty(destinationMailbox.name?.name);
}
}
}
}
@@ -611,13 +611,27 @@ class MailboxDashBoardController extends ReloadableController {
}
void moveSelectedMultipleEmailToMailbox(
BuildContext context,
List<PresentationEmail> listEmails,
PresentationMailbox mailboxCurrent
PresentationMailbox currentMailbox
) async {
if (accountId.value != null) {
final destinationMailbox = await push(
AppRoutes.destinationPicker,
arguments: DestinationPickerArguments(accountId.value!, MailboxActions.moveEmail));
final arguments = DestinationPickerArguments(accountId.value!, MailboxActions.moveEmail);
if (BuildUtils.isWeb) {
showDialogDestinationPicker(
context: context,
arguments: arguments,
onSelectedMailbox: (destinationMailbox) {
_dispatchMoveToMultipleAction(
accountId.value!,
listEmails.listEmailIds,
currentMailbox, destinationMailbox);
});
} else {
final destinationMailbox = await push(
AppRoutes.destinationPicker,
arguments: arguments);
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
if (destinationMailbox.isTrash) {
@@ -644,6 +658,44 @@ class MailboxDashBoardController extends ReloadableController {
destinationPath: destinationMailbox.mailboxPath));
}
}
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
_dispatchMoveToMultipleAction(
accountId.value!,
listEmails.listEmailIds,
currentMailbox, destinationMailbox);
}
}
}
}
void _dispatchMoveToMultipleAction(
AccountId accountId,
List<EmailId> listEmailIds,
PresentationMailbox currentMailbox,
PresentationMailbox destinationMailbox
) {
if (destinationMailbox.isTrash) {
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
listEmailIds,
currentMailbox.id,
destinationMailbox.id,
MoveAction.moving,
EmailActionType.moveToTrash));
} else if (destinationMailbox.isSpam) {
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
listEmailIds,
currentMailbox.id,
destinationMailbox.id,
MoveAction.moving,
EmailActionType.moveToSpam));
} else {
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
listEmailIds,
currentMailbox.id,
destinationMailbox.id,
MoveAction.moving,
EmailActionType.moveToMailbox,
destinationPath: destinationMailbox.mailboxPath));
}
}