TF-4195 refactor: extract helpers for updating email label in memory
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user