TF-3385 Create abstract group for update mailbox actions

This commit is contained in:
DatDang
2025-01-03 15:06:37 +07:00
committed by Dat H. Pham
parent 4bf4113c88
commit 1ce0600c43
5 changed files with 99 additions and 38 deletions
@@ -0,0 +1,18 @@
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:tmail_ui_user/features/base/action/update_mailbox_properties_action/update_mailbox_properties_action.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree.dart';
class UpdateMailboxNameAction extends UpdateMailboxPropertiesAction {
const UpdateMailboxNameAction({
required super.mailboxTrees,
required super.mailboxId,
required this.mailboxName,
});
final MailboxName mailboxName;
@override
bool updateProperty(MailboxTree mailboxTree) {
return mailboxTree.updateMailboxNameById(mailboxId, mailboxName);
}
}
@@ -0,0 +1,24 @@
import 'package:get/get_rx/get_rx.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree.dart';
abstract class UpdateMailboxPropertiesAction {
const UpdateMailboxPropertiesAction({
required this.mailboxTrees,
required this.mailboxId,
});
final List<Rx<MailboxTree>> mailboxTrees;
final MailboxId mailboxId;
bool updateProperty(MailboxTree mailboxTree);
void execute() {
for (var mailboxTree in mailboxTrees) {
if (updateProperty(mailboxTree.value)) {
mailboxTree.refresh();
break;
}
}
}
}
@@ -0,0 +1,20 @@
import 'package:tmail_ui_user/features/base/action/update_mailbox_properties_action/update_mailbox_properties_action.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree.dart';
class UpdateMailboxTotalEmailsCountAction extends UpdateMailboxPropertiesAction {
const UpdateMailboxTotalEmailsCountAction({
required super.mailboxTrees,
required super.mailboxId,
required this.totalEmailsCountChanged,
});
final int totalEmailsCountChanged;
@override
bool updateProperty(MailboxTree mailboxTree) {
return mailboxTree.updateMailboxTotalEmailsCountById(
mailboxId,
totalEmailsCountChanged,
);
}
}
@@ -0,0 +1,17 @@
import 'package:tmail_ui_user/features/base/action/update_mailbox_properties_action/update_mailbox_properties_action.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree.dart';
class UpdateMailboxUnreadCountAction extends UpdateMailboxPropertiesAction {
const UpdateMailboxUnreadCountAction({
required super.mailboxTrees,
required super.mailboxId,
required this.unreadChanges,
});
final int unreadChanges;
@override
bool updateProperty(MailboxTree mailboxTree) {
return mailboxTree.updateMailboxUnreadCountById(mailboxId, unreadChanges);
}
}