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 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); );
_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; final controller = threadDetailController;
if (controller != null) { if (controller == null) return;
controller.emailIdsPresentation.value = controller.emailIdsPresentation.value =
controller.emailIdsPresentation.toggleEmailKeywordById( controller.emailIdsPresentation.toggleEmailKeywordById(
emailId: emailId, emailId: emailId,
@@ -146,10 +183,15 @@ extension HandleLabelForEmailExtension on SingleEmailController {
remove: false, 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;
if (emailLoaded.emailCurrent?.id != emailId) return;
currentEmailLoaded.value = emailLoaded.toggleEmailKeyword( currentEmailLoaded.value = emailLoaded.toggleEmailKeyword(
emailId: emailId, emailId: emailId,
keyword: labelKeyword, keyword: labelKeyword,
@@ -157,6 +199,10 @@ extension HandleLabelForEmailExtension on SingleEmailController {
); );
} }
void _notifyLabelUpdated({
required EmailId emailId,
required KeyWordIdentifier labelKeyword,
}) {
mailboxDashBoardController.updateEmailFlagByEmailIds( mailboxDashBoardController.updateEmailFlagByEmailIds(
[emailId], [emailId],
isLabelAdded: true, isLabelAdded: true,