TF-3002 [WEB] Remove BuildContext in dashboard action

This commit is contained in:
dab246
2024-09-16 13:14:25 +07:00
committed by Dat H. Pham
parent e1357b1a79
commit f7ff775a10
15 changed files with 113 additions and 193 deletions
@@ -111,7 +111,6 @@ mixin EmailActionController {
}
void moveToMailbox(
BuildContext context,
PresentationEmail email,
{PresentationMailbox? mailboxContain}
) async {
@@ -130,12 +129,10 @@ mixin EmailActionController {
: await push(AppRoutes.destinationPicker, arguments: arguments);
if (destinationMailbox != null &&
context.mounted &&
destinationMailbox is PresentationMailbox &&
mailboxDashBoardController.sessionCurrent != null
) {
_dispatchMoveToAction(
context,
accountId,
mailboxDashBoardController.sessionCurrent!,
email,
@@ -146,7 +143,6 @@ mixin EmailActionController {
}
void _dispatchMoveToAction(
BuildContext context,
AccountId accountId,
Session session,
PresentationEmail emailSelected,
@@ -245,12 +241,10 @@ mixin EmailActionController {
}
void moveSelectedMultipleEmailToMailbox(
BuildContext context,
List<PresentationEmail> listEmails,
PresentationMailbox mailboxCurrent
) {
mailboxDashBoardController.moveSelectedMultipleEmailToMailbox(
context,
listEmails,
mailboxCurrent);
}
@@ -284,7 +278,7 @@ mixin EmailActionController {
onCancelSelectionEmail: onCancelSelectionEmail);
}
void openEmailInNewTabAction(BuildContext context, PresentationEmail email) {
void openEmailInNewTabAction(PresentationEmail email) {
AppUtils.launchLink(email.routeWebAsString);
}
@@ -287,10 +287,10 @@ class ThreadController extends BaseController with EmailActionController {
cancelSelectEmail();
mailboxDashBoardController.clearDashBoardAction();
} else if (action is FilterMessageAction) {
filterMessagesAction(action.context, action.option);
filterMessagesAction(action.option);
mailboxDashBoardController.clearDashBoardAction();
} else if (action is HandleEmailActionTypeAction) {
pressEmailSelectionAction(action.context, action.emailAction, action.listEmailSelected);
pressEmailSelectionAction(action.emailAction, action.listEmailSelected);
mailboxDashBoardController.clearDashBoardAction();
} else if (action is OpenEmailDetailedFromSuggestionQuickSearchAction) {
final mailboxContain = action.presentationEmail.findMailboxContain(mailboxDashBoardController.mapMailboxById);
@@ -299,7 +299,6 @@ class ThreadController extends BaseController with EmailActionController {
EmailActionType.preview,
newEmail,
mailboxContain: mailboxContain,
context: action.context,
);
mailboxDashBoardController.clearDashBoardAction();
} else if (action is StartSearchEmailAction) {
@@ -307,8 +306,8 @@ class ThreadController extends BaseController with EmailActionController {
_replaceBrowserHistory();
_searchEmail();
mailboxDashBoardController.clearDashBoardAction();
} else if (action is EmptyTrashAction) {
deleteSelectionEmailsPermanently(action.context, DeleteActionType.all);
} else if (action is EmptyTrashAction && currentContext != null) {
deleteSelectionEmailsPermanently(currentContext!, DeleteActionType.all);
mailboxDashBoardController.clearDashBoardAction();
} else if (action is OpenEmailInsideMailboxFromLocationBar) {
_getEmailByIdFromLocationBar(
@@ -720,7 +719,7 @@ class ThreadController extends BaseController with EmailActionController {
}
}
void selectEmail(BuildContext context, PresentationEmail presentationEmailSelected) {
void selectEmail(PresentationEmail presentationEmailSelected) {
final emailsInCurrentMailbox = mailboxDashBoardController.emailsInCurrentMailbox;
if (_rangeSelectionMode && latestEmailSelectedOrUnselected.value != null && latestEmailSelectedOrUnselected.value?.id != presentationEmailSelected.id) {
@@ -780,7 +779,7 @@ class ThreadController extends BaseController with EmailActionController {
popBack();
}
void filterMessagesAction(BuildContext context, FilterMessageOption filterOption) {
void filterMessagesAction(FilterMessageOption filterOption) {
popBack();
final newFilterOption = mailboxDashBoardController.filterMessageOption.value == filterOption
@@ -789,11 +788,12 @@ class ThreadController extends BaseController with EmailActionController {
mailboxDashBoardController.filterMessageOption.value = newFilterOption;
appToast.showToastMessage(
context,
newFilterOption.getMessageToast(context),
leadingSVGIcon: newFilterOption.getIconToast(imagePaths),
);
if (currentContext != null && currentOverlayContext != null) {
appToast.showToastMessage(
currentOverlayContext!,
newFilterOption.getMessageToast(currentContext!),
leadingSVGIcon: newFilterOption.getIconToast(imagePaths));
}
if (searchController.isSearchEmailRunning) {
_searchEmail();
@@ -947,7 +947,10 @@ class ThreadController extends BaseController with EmailActionController {
}
}
void pressEmailSelectionAction(BuildContext context, EmailActionType actionType, List<PresentationEmail> selectionEmail) {
void pressEmailSelectionAction(
EmailActionType actionType,
List<PresentationEmail> selectionEmail
) {
switch(actionType) {
case EmailActionType.markAsRead:
cancelSelectEmail();
@@ -971,7 +974,7 @@ class ThreadController extends BaseController with EmailActionController {
? selectionEmail.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById)
: selectedMailbox;
if (mailboxContainCurrent != null) {
moveSelectedMultipleEmailToMailbox(context, selectionEmail, mailboxContainCurrent);
moveSelectedMultipleEmailToMailbox(selectionEmail, mailboxContainCurrent);
}
break;
case EmailActionType.moveToTrash:
@@ -987,9 +990,9 @@ class ThreadController extends BaseController with EmailActionController {
final mailboxContainCurrent = searchController.isSearchEmailRunning
? selectionEmail.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById)
: selectedMailbox;
if (mailboxContainCurrent != null) {
if (mailboxContainCurrent != null && currentContext != null) {
deleteSelectionEmailsPermanently(
context,
currentContext!,
DeleteActionType.multiple,
listEmails: selectionEmail,
mailboxCurrent: mailboxContainCurrent,
@@ -1019,7 +1022,6 @@ class ThreadController extends BaseController with EmailActionController {
PresentationEmail selectedEmail,
{
PresentationMailbox? mailboxContain,
BuildContext? context,
}
) {
switch(actionType) {
@@ -1031,7 +1033,7 @@ class ThreadController extends BaseController with EmailActionController {
}
break;
case EmailActionType.selection:
selectEmail(context!, selectedEmail);
selectEmail(selectedEmail);
break;
case EmailActionType.markAsRead:
markAsEmailRead(selectedEmail, ReadActions.markAsRead, MarkReadAction.tap);
@@ -1046,13 +1048,15 @@ class ThreadController extends BaseController with EmailActionController {
markAsStarEmail(selectedEmail, MarkStarAction.unMarkStar);
break;
case EmailActionType.moveToMailbox:
moveToMailbox(context!, selectedEmail, mailboxContain: mailboxContain);
moveToMailbox(selectedEmail, mailboxContain: mailboxContain);
break;
case EmailActionType.moveToTrash:
moveToTrash(selectedEmail, mailboxContain: mailboxContain);
break;
case EmailActionType.deletePermanently:
deleteEmailPermanently(context!, selectedEmail);
if (currentContext != null) {
deleteEmailPermanently(currentContext!, selectedEmail);
}
break;
case EmailActionType.moveToSpam:
popBack();
@@ -1063,7 +1067,7 @@ class ThreadController extends BaseController with EmailActionController {
unSpam(selectedEmail);
break;
case EmailActionType.openInNewTab:
openEmailInNewTabAction(context!, selectedEmail);
openEmailInNewTabAction(selectedEmail);
break;
default:
break;
@@ -74,13 +74,7 @@ class ThreadView extends GetWidget<ThreadController>
filterOption: controller.mailboxDashBoardController.filterMessageOption.value,
openMailboxAction: controller.openMailboxLeftMenu,
cancelEditThreadAction: controller.cancelSelectEmail,
emailSelectionAction: (actionType, selectionEmail) {
return controller.pressEmailSelectionAction(
context,
actionType,
selectionEmail
);
},
emailSelectionAction: controller.pressEmailSelectionAction,
onContextMenuFilterEmailAction: controller.responsiveUtils.isScreenWithShortestSide(context)
? (filterOption) => controller.openContextMenuAction(
context,
@@ -94,7 +88,7 @@ class ThreadView extends GetWidget<ThreadController>
popupMenuFilterEmailActionTile(
context,
filterOption,
(option) => controller.filterMessagesAction(context, option)
controller.filterMessagesAction
)
)
: null
@@ -245,12 +239,7 @@ class ThreadView extends GetWidget<ThreadController>
controller.responsiveUtils,
listEmailSelected,
controller.mailboxDashBoardController.selectedMailbox.value,
onPressEmailSelectionActionClick: (actionType, selectionEmail) =>
controller.pressEmailSelectionAction(
context,
actionType,
selectionEmail
)
onPressEmailSelectionActionClick: controller.pressEmailSelectionAction
);
} else {
return const SizedBox.shrink();
@@ -341,7 +330,7 @@ class ThreadView extends GetWidget<ThreadController>
width: 20,
height: 20,
fit: BoxFit.fill))
..onActionClick((option) => controller.filterMessagesAction(context, option)))
..onActionClick(controller.filterMessagesAction))
.build()).toList();
}
@@ -598,22 +587,20 @@ class ThreadView extends GetWidget<ThreadController>
searchQuery: controller.searchQuery,
mailboxContain: presentationEmail.mailboxContain,
isSearchEmailRunning: controller.searchController.isSearchEmailRunning,
emailActionClick: (action, email) => _handleEmailActionClicked(context, email, action),
emailActionClick: _handleEmailActionClicked,
onMoreActionClick: (email, position) => _handleEmailContextMenuAction(context, email, position),
),
);
}
void _handleEmailActionClicked(
BuildContext context,
PresentationEmail presentationEmail,
EmailActionType actionType
EmailActionType actionType,
PresentationEmail presentationEmail
) {
controller.handleEmailActionType(
actionType,
presentationEmail,
mailboxContain: presentationEmail.mailboxContain,
context: context
);
}
@@ -736,7 +723,6 @@ class ThreadView extends GetWidget<ThreadController>
mailboxContain?.isSpam == true ? EmailActionType.unSpam : EmailActionType.moveToSpam,
email,
mailboxContain: mailboxContain,
context: context,
))
).build();
}
@@ -760,7 +746,7 @@ class ThreadView extends GetWidget<ThreadController>
: EdgeInsets.zero)
..onActionClick((email) {
popBack();
controller.openEmailInNewTabAction(context, email);
controller.openEmailInNewTabAction(email);
})
).build();
}
@@ -823,7 +809,6 @@ class ThreadView extends GetWidget<ThreadController>
mailboxContain?.isSpam == true ? EmailActionType.unSpam : EmailActionType.moveToSpam,
email,
mailboxContain: mailboxContain,
context: context
)
)
);
@@ -847,7 +832,7 @@ class ThreadView extends GetWidget<ThreadController>
),
onCallbackAction: () {
popBack();
controller.openEmailInNewTabAction(context, email);
controller.openEmailInNewTabAction(email);
}
)
);