TF-4195 refactor: extract helpers for updating email label in memory

This commit is contained in:
dab246
2026-01-06 12:45:26 +07:00
committed by Dat H. Pham
parent 94fd6f8071
commit 5def8f442c
@@ -123,15 +123,52 @@ extension HandleLabelForEmailExtension on SingleEmailController {
required KeyWordIdentifier labelKeyword,
required bool isMobileThreadDisabled,
}) {
if (isMobileThreadDisabled) {
final selectedEmail = mailboxDashBoardController.selectedEmail.value;
if (selectedEmail?.id == emailId) {
mailboxDashBoardController.selectedEmail.value?.keywords
?.addKeyword(labelKeyword);
_updateLabelOnSelectedEmailIfNeeded(
emailId: emailId,
labelKeyword: labelKeyword,
isMobileThreadDisabled: isMobileThreadDisabled,
);
_updateLabelOnThreadIfNeeded(
emailId: emailId,
labelKeyword: labelKeyword,
isMobileThreadDisabled: isMobileThreadDisabled,
);
_updateLabelOnCurrentEmailLoaded(
emailId: emailId,
labelKeyword: labelKeyword,
);
_notifyLabelUpdated(
emailId: emailId,
labelKeyword: labelKeyword,
);
}
} else {
void _updateLabelOnSelectedEmailIfNeeded({
required EmailId emailId,
required KeyWordIdentifier labelKeyword,
required bool isMobileThreadDisabled,
}) {
if (!isMobileThreadDisabled) return;
final selectedEmail = mailboxDashBoardController.selectedEmail.value;
if (selectedEmail?.id != emailId) return;
selectedEmail?.keywords?.addKeyword(labelKeyword);
}
void _updateLabelOnThreadIfNeeded({
required EmailId emailId,
required KeyWordIdentifier labelKeyword,
required bool isMobileThreadDisabled,
}) {
if (isMobileThreadDisabled) return;
final controller = threadDetailController;
if (controller != null) {
if (controller == null) return;
controller.emailIdsPresentation.value =
controller.emailIdsPresentation.toggleEmailKeywordById(
emailId: emailId,
@@ -146,10 +183,15 @@ extension HandleLabelForEmailExtension on SingleEmailController {
remove: false,
);
}
}
void _updateLabelOnCurrentEmailLoaded({
required EmailId emailId,
required KeyWordIdentifier labelKeyword,
}) {
final emailLoaded = currentEmailLoaded.value;
if (emailLoaded != null && emailLoaded.emailCurrent?.id == emailId) {
if (emailLoaded == null) return;
if (emailLoaded.emailCurrent?.id != emailId) return;
currentEmailLoaded.value = emailLoaded.toggleEmailKeyword(
emailId: emailId,
keyword: labelKeyword,
@@ -157,6 +199,10 @@ extension HandleLabelForEmailExtension on SingleEmailController {
);
}
void _notifyLabelUpdated({
required EmailId emailId,
required KeyWordIdentifier labelKeyword,
}) {
mailboxDashBoardController.updateEmailFlagByEmailIds(
[emailId],
isLabelAdded: true,