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,40 +123,86 @@ extension HandleLabelForEmailExtension on SingleEmailController {
required KeyWordIdentifier labelKeyword, required KeyWordIdentifier labelKeyword,
required bool isMobileThreadDisabled, required bool isMobileThreadDisabled,
}) { }) {
if (isMobileThreadDisabled) { _updateLabelOnSelectedEmailIfNeeded(
final selectedEmail = mailboxDashBoardController.selectedEmail.value; emailId: emailId,
if (selectedEmail?.id == emailId) { labelKeyword: labelKeyword,
mailboxDashBoardController.selectedEmail.value?.keywords isMobileThreadDisabled: isMobileThreadDisabled,
?.addKeyword(labelKeyword); );
}
} else {
final controller = threadDetailController;
if (controller != null) {
controller.emailIdsPresentation.value =
controller.emailIdsPresentation.toggleEmailKeywordById(
emailId: emailId,
keyword: labelKeyword,
remove: false,
);
controller.emailsInThreadDetailInfo.value = _updateLabelOnThreadIfNeeded(
controller.emailsInThreadDetailInfo.toggleEmailKeywordById( emailId: emailId,
emailId: emailId, labelKeyword: labelKeyword,
keyword: labelKeyword, isMobileThreadDisabled: isMobileThreadDisabled,
remove: false, );
);
}
}
_updateLabelOnCurrentEmailLoaded(
emailId: emailId,
labelKeyword: labelKeyword,
);
_notifyLabelUpdated(
emailId: emailId,
labelKeyword: labelKeyword,
);
}
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) return;
controller.emailIdsPresentation.value =
controller.emailIdsPresentation.toggleEmailKeywordById(
emailId: emailId,
keyword: labelKeyword,
remove: false,
);
controller.emailsInThreadDetailInfo.value =
controller.emailsInThreadDetailInfo.toggleEmailKeywordById(
emailId: emailId,
keyword: labelKeyword,
remove: false,
);
}
void _updateLabelOnCurrentEmailLoaded({
required EmailId emailId,
required KeyWordIdentifier labelKeyword,
}) {
final emailLoaded = currentEmailLoaded.value; final emailLoaded = currentEmailLoaded.value;
if (emailLoaded != null && emailLoaded.emailCurrent?.id == emailId) { if (emailLoaded == null) return;
currentEmailLoaded.value = emailLoaded.toggleEmailKeyword( if (emailLoaded.emailCurrent?.id != emailId) return;
emailId: emailId,
keyword: labelKeyword,
remove: false,
);
}
currentEmailLoaded.value = emailLoaded.toggleEmailKeyword(
emailId: emailId,
keyword: labelKeyword,
remove: false,
);
}
void _notifyLabelUpdated({
required EmailId emailId,
required KeyWordIdentifier labelKeyword,
}) {
mailboxDashBoardController.updateEmailFlagByEmailIds( mailboxDashBoardController.updateEmailFlagByEmailIds(
[emailId], [emailId],
isLabelAdded: true, isLabelAdded: true,