TF-4301 Extract onMoreActionClick callback into dedicated method in ThreadView

This commit is contained in:
dab246
2026-04-16 16:14:38 +07:00
committed by Dat H. Pham
parent 1b62990f28
commit 232987ae0c
@@ -611,7 +611,26 @@ class ThreadView extends GetWidget<ThreadController>
isLabelMailboxOpened: isLabelMailboxOpened, isLabelMailboxOpened: isLabelMailboxOpened,
labels: emailLabels, labels: emailLabels,
emailActionClick: _handleEmailActionClicked, emailActionClick: _handleEmailActionClicked,
onMoreActionClick: (email, position) async { onMoreActionClick: (email, position) => _openMoreActionForEmail(
context: context,
email: email,
position: position,
isLabelAvailable: isLabelAvailable,
listLabels: listLabels,
),
),
);
});
}
Future<void> _openMoreActionForEmail({
required BuildContext context,
required PresentationEmail email,
required RelativeRect? position,
required bool isLabelAvailable,
required List<Label> listLabels,
}) async {
final dashboardController = controller.mailboxDashBoardController;
await openMoreActionContextMenu( await openMoreActionContextMenu(
EmailContextMenuParams( EmailContextMenuParams(
context: context, context: context,
@@ -624,32 +643,24 @@ class ThreadView extends GetWidget<ThreadController>
openPopupMenu: dashboardController.openPopupMenuActionGroup, openPopupMenu: dashboardController.openPopupMenuActionGroup,
onHandleEmailByActionType: controller.handleEmailActionType, onHandleEmailByActionType: controller.handleEmailActionType,
onSelectLabelAction: (label, isSelected) { onSelectLabelAction: (label, isSelected) {
final emailId = presentationEmail.id; final emailId = email.id;
if (emailId == null) { if (emailId == null) {
logWarning('ThreadView::onSelectLabelAction: Email id is null'); logWarning('ThreadView::onSelectLabelAction: Email id is null');
return; return;
} }
dashboardController.toggleLabelToEmail( dashboardController.toggleLabelToEmail(emailId, label, isSelected);
emailId,
label,
isSelected,
);
}, },
onCreateANewLabelAction: () { onCreateANewLabelAction: () {
dashboardController.labelController.handleLabelActionType( dashboardController.labelController.handleLabelActionType(
actionType: LabelActionType.create, actionType: LabelActionType.create,
accountId: dashboardController.accountId.value, accountId: dashboardController.accountId.value,
onLabelActionCallback: (label) => dashboardController onLabelActionCallback: (label) =>
.toggleLabelToEmail(email.id!, label, true), dashboardController.toggleLabelToEmail(email.id!, label, true),
); );
}, },
), ),
); );
} }
),
);
});
}
Widget _buildEmailSwipeBackground(BuildContext context, PresentationEmail presentationEmail) { Widget _buildEmailSwipeBackground(BuildContext context, PresentationEmail presentationEmail) {
return Container( return Container(