diff --git a/lib/features/manage_account/data/network/identity_api.dart b/lib/features/manage_account/data/network/identity_api.dart index 1d1610af9..a1dbb1dc0 100644 --- a/lib/features/manage_account/data/network/identity_api.dart +++ b/lib/features/manage_account/data/network/identity_api.dart @@ -12,6 +12,7 @@ import 'package:jmap_dart_client/jmap/jmap_request.dart'; import 'package:model/identity/identity_request_dto.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_default_identity_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_default_identity_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; @@ -108,13 +109,24 @@ class IdentityAPI { ..addUpdates({ editIdentityRequest.identityId.id : PatchObject(editIdentityRequest.identityRequest.toJson()) }); + + var capabilities = setIdentityMethod.requiredCapabilities; + + if (editIdentityRequest is EditDefaultIdentityRequest) { + for (var identityId in editIdentityRequest.oldDefaultIdentityIds ?? []) { + setIdentityMethod.addUpdates({ + identityId.id: PatchObject(IdentityRequestDto(sortOrder: UnsignedInt(100)).toJson()) + }); + } + capabilities = setIdentityMethod.requiredCapabilitiesSupportSortOrder; + } final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation()); final setIdentityInvocation = requestBuilder.invocation(setIdentityMethod); final response = await (requestBuilder - ..usings(setIdentityMethod.requiredCapabilities)) + ..usings(capabilities)) .build() .execute(); diff --git a/lib/features/manage_account/domain/model/edit_default_identity_request.dart b/lib/features/manage_account/domain/model/edit_default_identity_request.dart new file mode 100644 index 000000000..5db324a18 --- /dev/null +++ b/lib/features/manage_account/domain/model/edit_default_identity_request.dart @@ -0,0 +1,23 @@ + +import 'package:jmap_dart_client/jmap/identities/identity.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; + +class EditDefaultIdentityRequest extends EditIdentityRequest { + + final List? oldDefaultIdentityIds; + + EditDefaultIdentityRequest({ + required super.identityId, + required super.identityRequest, + required super.isDefaultIdentity, + this.oldDefaultIdentityIds + }); + + @override + List get props => [ + super.identityId, + super.identityRequest, + super.isDefaultIdentity, + oldDefaultIdentityIds + ]; +} \ No newline at end of file diff --git a/lib/features/manage_account/domain/model/edit_identity_request.dart b/lib/features/manage_account/domain/model/edit_identity_request.dart index 7c4ebbbab..4309d3960 100644 --- a/lib/features/manage_account/domain/model/edit_identity_request.dart +++ b/lib/features/manage_account/domain/model/edit_identity_request.dart @@ -7,9 +7,18 @@ class EditIdentityRequest with EquatableMixin { final IdentityRequestDto identityRequest; final IdentityId identityId; + final bool isDefaultIdentity; - EditIdentityRequest({required this.identityId, required this.identityRequest}); + EditIdentityRequest({ + required this.identityId, + required this.identityRequest, + this.isDefaultIdentity = false + }); @override - List get props => [identityId, identityRequest]; + List get props => [ + identityId, + identityRequest, + isDefaultIdentity + ]; } \ No newline at end of file