TF-4068 Change profile (set identity as default) in setting

This commit is contained in:
dab246
2025-09-29 18:10:44 +07:00
committed by Dat H. Pham
parent e04b88f87c
commit 038aba0af3
14 changed files with 313 additions and 123 deletions
@@ -10,6 +10,7 @@ class EditDefaultIdentityRequest extends EditIdentityRequest {
required super.identityId,
required super.identityRequest,
required super.isDefaultIdentity,
required super.isSetAsDefault,
this.oldDefaultIdentityIds,
super.publicAssetsInIdentityArguments
});
@@ -10,19 +10,33 @@ class EditIdentityRequest with EquatableMixin {
final IdentityId identityId;
final bool isDefaultIdentity;
final PublicAssetsInIdentityArguments? publicAssetsInIdentityArguments;
final bool isSetAsDefault;
EditIdentityRequest({
required this.identityId,
required this.identityRequest,
this.isDefaultIdentity = false,
this.isSetAsDefault = false,
this.publicAssetsInIdentityArguments
});
factory EditIdentityRequest.fromIdentityWithoutPublicAssets(
Identity identity,
) {
return EditIdentityRequest(
identityId: identity.id!,
identityRequest: identity.toIdentityRequest(),
isDefaultIdentity: true,
isSetAsDefault: true,
);
}
@override
List<Object?> get props => [
identityId,
identityRequest,
isDefaultIdentity,
publicAssetsInIdentityArguments
publicAssetsInIdentityArguments,
isSetAsDefault,
];
}
@@ -2,12 +2,19 @@ import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/edit_identity_state.dart';
class EditDefaultIdentityLoading extends UIState {}
class EditDefaultIdentityLoading extends LoadingState {
final bool isSetAsDefault;
EditDefaultIdentityLoading({this.isSetAsDefault = false});
@override
List<Object?> get props => [isSetAsDefault];
}
class EditDefaultIdentitySuccess extends EditIdentitySuccess {
EditDefaultIdentitySuccess(
super.identityId,
{super.publicAssetsInIdentityArguments});
{super.publicAssetsInIdentityArguments, super.isSetAsDefault = false});
}
class EditDefaultIdentityFailure extends FeatureFailure {
@@ -8,13 +8,20 @@ class EditIdentityLoading extends UIState {}
class EditIdentitySuccess extends UIState {
final IdentityId identityId;
final PublicAssetsInIdentityArguments? publicAssetsInIdentityArguments;
final bool isSetAsDefault;
EditIdentitySuccess(
this.identityId,
{this.publicAssetsInIdentityArguments});
this.identityId, {
this.publicAssetsInIdentityArguments,
this.isSetAsDefault = false,
});
@override
List<Object?> get props => [identityId, publicAssetsInIdentityArguments];
List<Object?> get props => [
identityId,
publicAssetsInIdentityArguments,
isSetAsDefault,
];
}
class EditIdentityFailure extends FeatureFailure {
@@ -27,7 +27,11 @@ class EditDefaultIdentityInteractor {
EditIdentityRequest editIdentityRequest
) async* {
try {
yield Right(EditDefaultIdentityLoading());
yield Right(
EditDefaultIdentityLoading(
isSetAsDefault: editIdentityRequest.isSetAsDefault,
),
);
final defaultIdentities = await _getDefaultIdentities(session, accountId);
_removeEditIdentityFromDefaultIdentities(defaultIdentities, editIdentityRequest.identityId);
@@ -36,6 +40,7 @@ class EditDefaultIdentityInteractor {
identityId: editIdentityRequest.identityId,
identityRequest: editIdentityRequest.identityRequest,
isDefaultIdentity: editIdentityRequest.isDefaultIdentity,
isSetAsDefault: editIdentityRequest.isSetAsDefault,
publicAssetsInIdentityArguments: editIdentityRequest.publicAssetsInIdentityArguments,
oldDefaultIdentityIds: defaultIdentities
?.map((identity) => identity.id!)
@@ -45,7 +50,9 @@ class EditDefaultIdentityInteractor {
yield result
? Right(EditDefaultIdentitySuccess(
editDefaultRequest.identityId,
publicAssetsInIdentityArguments: editDefaultRequest.publicAssetsInIdentityArguments))
publicAssetsInIdentityArguments: editDefaultRequest.publicAssetsInIdentityArguments,
isSetAsDefault: editDefaultRequest.isSetAsDefault,
))
: Left(EditDefaultIdentityFailure(null));
} catch (exception) {
yield Left(EditDefaultIdentityFailure(exception));