TF-3002 [WEB] Allow select All folder from destination picker when search

This commit is contained in:
dab246
2024-10-02 00:03:49 +07:00
committed by Dat H. Pham
parent f7ff775a10
commit 1041470f2d
3 changed files with 45 additions and 33 deletions
@@ -481,8 +481,12 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
color: Colors.transparent, color: Colors.transparent,
child: InkWell( child: InkWell(
onTap: () { onTap: () {
controller.selectMailboxAction(PresentationMailbox.unifiedMailbox); if (mailboxIdSelected != null
controller.dispatchSelectMailboxDestination(context); && mailboxIdSelected != PresentationMailbox.unifiedMailbox.id
) {
controller.selectMailboxAction(PresentationMailbox.unifiedMailbox);
controller.dispatchSelectMailboxDestination(context);
}
}, },
customBorder: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(8))), customBorder: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(8))),
hoverColor: AppColor.colorMailboxHovered, hoverColor: AppColor.colorMailboxHovered,
@@ -511,15 +515,16 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
), ),
)), )),
const SizedBox(width: 8), const SizedBox(width: 8),
if (actions == MailboxActions.select && (mailboxIdSelected == null || if (_validateDisplaySelectedIcon(
mailboxIdSelected == PresentationMailbox.unifiedMailbox.id)) actions: actions,
mailboxIdSelected: mailboxIdSelected
))
Padding( Padding(
padding: EdgeInsets.only( padding: const EdgeInsetsDirectional.only(end: 30.0),
right: AppUtils.isDirectionRTL(context) ? 0 : 30.0,
left: AppUtils.isDirectionRTL(context) ? 30 : 0.0,
),
child: SvgPicture.asset( child: SvgPicture.asset(
controller.imagePaths.icFilterSelected, actions == MailboxActions.create
? controller.imagePaths.icSelectedSB
: controller.imagePaths.icFilterSelected,
width: 20, width: 20,
height: 20, height: 20,
fit: BoxFit.fill fit: BoxFit.fill
@@ -532,6 +537,14 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
); );
} }
bool _validateDisplaySelectedIcon({
MailboxActions? actions,
MailboxId? mailboxIdSelected
}) {
return (actions == MailboxActions.select || actions == MailboxActions.create)
&& (mailboxIdSelected == null || mailboxIdSelected == PresentationMailbox.unifiedMailbox.id);
}
void _handleOpenMailboxNodeClick(MailboxNode mailboxNode) { void _handleOpenMailboxNodeClick(MailboxNode mailboxNode) {
PresentationMailbox presentationMailbox; PresentationMailbox presentationMailbox;
final path = controller.findNodePath(mailboxNode.item.id) final path = controller.findNodePath(mailboxNode.item.id)
@@ -1718,19 +1718,17 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
if (destinationMailbox is! PresentationMailbox) return; if (destinationMailbox is! PresentationMailbox) return;
if (destinationMailbox != PresentationMailbox.unifiedMailbox && searchController.updateFilterEmail(
mailboxIdSelected != destinationMailbox.id) { mailboxOption: destinationMailbox.id == PresentationMailbox.unifiedMailbox.id
? const None()
: Some(destinationMailbox),
beforeOption: const None(),
positionOption: searchController.sortOrderFiltered.value.isScrollByPosition()
? const Some(0)
: const None()
);
searchController.updateFilterEmail( dispatchAction(StartSearchEmailAction());
mailboxOption: Some(destinationMailbox),
beforeOption: const None(),
positionOption: searchController.sortOrderFiltered.value.isScrollByPosition()
? const Some(0)
: const None()
);
dispatchAction(StartSearchEmailAction());
}
} }
void selectReceiveTimeQuickSearchFilter(BuildContext context, EmailReceiveTimeType receiveTime) { void selectReceiveTimeQuickSearchFilter(BuildContext context, EmailReceiveTimeType receiveTime) {
@@ -600,19 +600,20 @@ class SearchEmailController extends BaseController
? await DialogRouter.pushGeneralDialog(routeName: AppRoutes.destinationPicker, arguments: arguments) ? await DialogRouter.pushGeneralDialog(routeName: AppRoutes.destinationPicker, arguments: arguments)
: await push(AppRoutes.destinationPicker, arguments: arguments); : await push(AppRoutes.destinationPicker, arguments: arguments);
if (destinationMailbox is PresentationMailbox) { if (destinationMailbox is! PresentationMailbox) return;
final mailboxSelected = destinationMailbox == PresentationMailbox.unifiedMailbox ? null : destinationMailbox;
if (mailboxSelected != null && mailbox?.id != mailboxSelected.id) {
_updateSimpleSearchFilter(
mailboxOption: Some(mailboxSelected),
beforeOption: const None(),
positionOption: emailSortOrderType.value.isScrollByPosition() ? const Some(0) : const None()
);
if (context.mounted) { _updateSimpleSearchFilter(
_searchEmailAction(context); mailboxOption: destinationMailbox.id == PresentationMailbox.unifiedMailbox.id
} ? const None()
} : Some(destinationMailbox),
beforeOption: const None(),
positionOption: emailSortOrderType.value.isScrollByPosition()
? const Some(0)
: const None()
);
if (context.mounted) {
_searchEmailAction(context);
} }
} }