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) {
|
void closeView(BuildContext context) {
|
||||||
isCompressingInlineImage.value = false;
|
isCompressingInlineImage.value = false;
|
||||||
clearFocusEditor(context);
|
clearFocusEditor(context);
|
||||||
|
publicAssetController?.discardChanges();
|
||||||
popBack();
|
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/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/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/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/model/public_asset_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/public_asset/presentation/public_asset_controller.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';
|
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/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/identity_creator_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/identity_creator/presentation/utils/identity_creator_constants.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/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/extensions/platform_file_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/upload/domain/state/attachment_upload_state.dart';
|
import 'package:tmail_ui_user/features/upload/domain/state/attachment_upload_state.dart';
|
||||||
@@ -33,11 +34,13 @@ class PublicAssetController extends BaseController {
|
|||||||
PublicAssetController(
|
PublicAssetController(
|
||||||
this._uploadAttachmentInteractor,
|
this._uploadAttachmentInteractor,
|
||||||
this._createPublicAssetInteractor,
|
this._createPublicAssetInteractor,
|
||||||
|
this._deletePublicAssetsInteractor,
|
||||||
{required this.arguments}
|
{required this.arguments}
|
||||||
);
|
);
|
||||||
|
|
||||||
final UploadAttachmentInteractor _uploadAttachmentInteractor;
|
final UploadAttachmentInteractor _uploadAttachmentInteractor;
|
||||||
final CreatePublicAssetInteractor _createPublicAssetInteractor;
|
final CreatePublicAssetInteractor _createPublicAssetInteractor;
|
||||||
|
final DeletePublicAssetsInteractor _deletePublicAssetsInteractor;
|
||||||
final PublicAssetArguments? arguments;
|
final PublicAssetArguments? arguments;
|
||||||
|
|
||||||
List<PublicAssetId> preExistingPublicAssetIds = [];
|
List<PublicAssetId> preExistingPublicAssetIds = [];
|
||||||
|
|||||||
Reference in New Issue
Block a user