TF-3385 Update mailbox name
This commit is contained in:
@@ -553,4 +553,19 @@ abstract class BaseMailboxController extends BaseController {
|
||||
mailboxNode = personalMailboxTree.value.findNodeOnFirstLevel((node) => node.item.name?.name.toLowerCase() == name);
|
||||
return mailboxNode;
|
||||
}
|
||||
|
||||
void updateMailboxNameById(MailboxId mailboxId, MailboxName mailboxName) {
|
||||
final mailboxTrees = [
|
||||
defaultMailboxTree,
|
||||
personalMailboxTree,
|
||||
teamMailboxesTree,
|
||||
];
|
||||
|
||||
for (var mailboxTree in mailboxTrees) {
|
||||
if (mailboxTree.value.updateMailboxNameById(mailboxId, mailboxName)) {
|
||||
mailboxTree.refresh();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,17 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/rename_mailbox_request.dart';
|
||||
|
||||
class LoadingRenameMailbox extends UIState {}
|
||||
|
||||
class RenameMailboxSuccess extends UIState {}
|
||||
class RenameMailboxSuccess extends UIState {
|
||||
RenameMailboxSuccess({required this.request});
|
||||
|
||||
final RenameMailboxRequest request;
|
||||
|
||||
@override
|
||||
List<Object> get props => [request];
|
||||
}
|
||||
|
||||
class RenameMailboxFailure extends FeatureFailure {
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ class RenameMailboxInteractor {
|
||||
yield Right<Failure, Success>(LoadingRenameMailbox());
|
||||
final result = await _mailboxRepository.renameMailbox(session, accountId, request);
|
||||
if (result) {
|
||||
yield Right<Failure, Success>(RenameMailboxSuccess());
|
||||
yield Right<Failure, Success>(RenameMailboxSuccess(request: request));
|
||||
} else {
|
||||
yield Left<Failure, Success>(RenameMailboxFailure(null));
|
||||
}
|
||||
|
||||
@@ -167,6 +167,8 @@ class MailboxController extends BaseMailboxController
|
||||
_deleteMultipleMailboxSuccess(success.listMailboxIdDeleted, success.currentMailboxState);
|
||||
} else if (success is DeleteMultipleMailboxHasSomeSuccess) {
|
||||
_deleteMultipleMailboxSuccess(success.listMailboxIdDeleted, success.currentMailboxState);
|
||||
} else if (success is RenameMailboxSuccess) {
|
||||
_renameMailboxSuccess(success);
|
||||
} else if (success is MoveMailboxSuccess) {
|
||||
_moveMailboxSuccess(success);
|
||||
} else if (success is SubscribeMailboxSuccess) {
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'dart:collection';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/mailbox/expand_mode.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
@@ -83,6 +84,27 @@ class MailboxTree with EquatableMixin {
|
||||
}
|
||||
}
|
||||
|
||||
bool updateMailboxNameById(MailboxId mailboxId, MailboxName mailboxName) {
|
||||
final matchedNode = findNode((node) => node.item.id == mailboxId);
|
||||
if (matchedNode != null) {
|
||||
matchedNode.item = matchedNode.item.copyWith(name: mailboxName);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void updateMailboxUnreadCountById(MailboxId mailboxId, int unreadCount) {
|
||||
final matchedNode = findNode((node) => node.item.id == mailboxId);
|
||||
if (matchedNode != null) {
|
||||
final currentUnreadCount = matchedNode.item.unreadEmails?.value.value ?? 0;
|
||||
final updatedUnreadCount = currentUnreadCount + unreadCount;
|
||||
if (updatedUnreadCount < 0) return;
|
||||
matchedNode.item = matchedNode.item.copyWith(
|
||||
unreadEmails: UnreadEmails(UnsignedInt(updatedUnreadCount)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String? getNodePath(MailboxId mailboxId) {
|
||||
final matchedNode = findNode((node) => node.item.id == mailboxId);
|
||||
if (matchedNode == null) {
|
||||
|
||||
@@ -147,6 +147,8 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
||||
searchMailboxAction();
|
||||
} else if (success is SearchMailboxSuccess) {
|
||||
_handleSearchMailboxSuccess(success);
|
||||
} else if (success is RenameMailboxSuccess) {
|
||||
updateMailboxNameById(success.request.mailboxId, success.request.newName);
|
||||
} else if (success is MoveMailboxSuccess) {
|
||||
_moveMailboxSuccess(success);
|
||||
} else if (success is DeleteMultipleMailboxAllSuccess) {
|
||||
|
||||
Reference in New Issue
Block a user