feat: Re-use AddLabelToEmailMixin for logic add label to email in EmailView

This commit is contained in:
dab246
2026-02-05 13:03:18 +07:00
committed by Dat H. Pham
parent f4ae94d47b
commit 432c482155
14 changed files with 443 additions and 263 deletions
@@ -1,8 +1,12 @@
import 'package:core/utils/app_logger.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
extension HandleLogicLabelExtension on MailboxDashBoardController {
extension HandleLogicLabelExtension on MailboxDashBoardController {
bool get isLabelCapabilitySupported {
final accountId = this.accountId.value;
final session = sessionCurrent;
@@ -35,4 +39,39 @@ extension HandleLogicLabelExtension on MailboxDashBoardController {
isLabelAvailable: isLabelAvailable,
);
}
void syncLabelForEmail(
EmailId emailId,
KeyWordIdentifier labelKeyword,
bool shouldRemove,
) {
_syncLabelForEmailList(emailId, labelKeyword, shouldRemove);
_refreshLabelSettingEnabled();
if (isEmailOpened) {
dispatchEmailUIAction(
SyncUpdateLabelForEmailOnMemory(
emailId: emailId,
labelKeyword: labelKeyword,
shouldRemove: shouldRemove,
),
);
}
}
void _syncLabelForEmailList(
EmailId emailId,
KeyWordIdentifier labelKeyword,
bool shouldRemove,
) {
updateEmailFlagByEmailIds(
[emailId],
isLabelAdded: !shouldRemove,
labelKeyword: labelKeyword,
);
}
void _refreshLabelSettingEnabled() {
labelController.isLabelSettingEnabled.refresh();
}
}