TF-3042 Delete newly created PublicAsset when discard identity changes

This commit is contained in:
DatDang
2024-08-07 16:01:13 +07:00
committed by Dat H. Pham
parent c42a913d82
commit 3b87d591e0
5 changed files with 48 additions and 0 deletions
@@ -470,6 +470,7 @@ class IdentityCreatorController extends BaseController {
void closeView(BuildContext context) {
isCompressingInlineImage.value = false;
clearFocusEditor(context);
publicAssetController?.discardChanges();
popBack();
}
@@ -0,0 +1,10 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class DeletingPublicAssetsState extends LoadingState {}
class DeletePublicAssetsSuccessState extends UIState {}
class DeletePublicAssetsFailureState extends FeatureFailure {
DeletePublicAssetsFailureState({super.exception});
}
@@ -0,0 +1,33 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:tmail_ui_user/features/public_asset/domain/repository/public_asset_repository.dart';
import 'package:tmail_ui_user/features/public_asset/domain/state/delete_public_assets_state.dart';
import 'package:tmail_ui_user/features/public_asset/presentation/public_asset_controller.dart';
class DeletePublicAssetsInteractor {
DeletePublicAssetsInteractor(this._publicAssetRepository);
final PublicAssetRepository _publicAssetRepository;
Stream<Either<Failure, Success>> execute(
Session session,
AccountId accountId,
{required List<PublicAssetId> publicAssetIds}
) async* {
try {
yield Right(DeletingPublicAssetsState());
await _publicAssetRepository.deletePublicAssets(
session,
accountId,
publicAssetIds: publicAssetIds);
yield Right(DeletePublicAssetsSuccessState());
} catch (exception) {
logError('DeletePublicAssetsInteractor::execute():error: $exception');
yield Left(DeletePublicAssetsFailureState(exception: exception));
}
}
}
@@ -18,6 +18,7 @@ import 'package:tmail_ui_user/features/public_asset/data/datasource_impl/remote_
import 'package:tmail_ui_user/features/public_asset/data/network/public_asset_api.dart';
import 'package:tmail_ui_user/features/public_asset/data/repository/public_asset_repository_impl.dart';
import 'package:tmail_ui_user/features/public_asset/domain/repository/public_asset_repository.dart';
import 'package:tmail_ui_user/features/public_asset/domain/usecase/delete_public_assets_interactor.dart';
import 'package:tmail_ui_user/features/public_asset/presentation/model/public_asset_arguments.dart';
import 'package:tmail_ui_user/features/public_asset/presentation/public_asset_controller.dart';
import 'package:tmail_ui_user/features/upload/data/datasource/attachment_upload_datasource.dart';
@@ -22,6 +22,7 @@ import 'package:tmail_ui_user/features/public_asset/domain/state/create_public_a
import 'package:tmail_ui_user/features/public_asset/domain/usecase/create_public_asset_interactor.dart';
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_controller.dart';
import 'package:tmail_ui_user/features/identity_creator/presentation/utils/identity_creator_constants.dart';
import 'package:tmail_ui_user/features/public_asset/domain/usecase/delete_public_assets_interactor.dart';
import 'package:tmail_ui_user/features/public_asset/presentation/model/public_asset_arguments.dart';
import 'package:tmail_ui_user/features/upload/domain/extensions/platform_file_extension.dart';
import 'package:tmail_ui_user/features/upload/domain/state/attachment_upload_state.dart';
@@ -33,11 +34,13 @@ class PublicAssetController extends BaseController {
PublicAssetController(
this._uploadAttachmentInteractor,
this._createPublicAssetInteractor,
this._deletePublicAssetsInteractor,
{required this.arguments}
);
final UploadAttachmentInteractor _uploadAttachmentInteractor;
final CreatePublicAssetInteractor _createPublicAssetInteractor;
final DeletePublicAssetsInteractor _deletePublicAssetsInteractor;
final PublicAssetArguments? arguments;
List<PublicAssetId> preExistingPublicAssetIds = [];