feat: Re-use AddLabelToEmailMixin for logic add label to email in EmailView
This commit is contained in:
+40
-1
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user