TF-3042 Delete newly created PublicAsset when discard identity changes
This commit is contained in:
@@ -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 = [];
|
||||
|
||||
Reference in New Issue
Block a user