From 9f75ce817ef0068c6cca98c0324a4e611d07c4fe Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Tue, 25 Feb 2025 21:31:40 +0400 Subject: [PATCH] added space model delete to bloc and api --- .../space_model/bloc/space_model_bloc.dart | 30 ++++++++++++++++--- .../space_model/bloc/space_model_event.dart | 9 ++++++ lib/services/space_model_mang_api.dart | 13 ++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/lib/pages/spaces_management/space_model/bloc/space_model_bloc.dart b/lib/pages/spaces_management/space_model/bloc/space_model_bloc.dart index facfe64f..16ba41c0 100644 --- a/lib/pages/spaces_management/space_model/bloc/space_model_bloc.dart +++ b/lib/pages/spaces_management/space_model/bloc/space_model_bloc.dart @@ -4,9 +4,6 @@ import 'package:syncrow_web/pages/spaces_management/space_model/bloc/space_model import 'package:syncrow_web/pages/spaces_management/space_model/bloc/space_model_state.dart'; import 'package:syncrow_web/pages/spaces_management/space_model/models/space_template_model.dart'; import 'package:syncrow_web/services/space_model_mang_api.dart'; -import 'package:syncrow_web/utils/constants/strings_manager.dart'; -import 'package:syncrow_web/utils/constants/temp_const.dart'; -import 'package:syncrow_web/utils/helpers/shared_preferences_helper.dart'; class SpaceModelBloc extends Bloc { final SpaceModelManagementApi api; @@ -17,6 +14,7 @@ class SpaceModelBloc extends Bloc { }) : super(SpaceModelLoaded(spaceModels: initialSpaceModels)) { on(_onCreateSpaceModel); on(_onUpdateSpaceModel); + on(_onDeleteSpaceModel); } Future _onCreateSpaceModel( @@ -50,7 +48,7 @@ class SpaceModelBloc extends Bloc { final projectUuid = await ProjectManager.getProjectUUID() ?? ''; final newSpaceModel = - await api.getSpaceModel(event.spaceModelUuid ?? '', projectUuid); + await api.getSpaceModel(event.spaceModelUuid, projectUuid); if (newSpaceModel != null) { final updatedSpaceModels = currentState.spaceModels.map((model) { return model.uuid == event.spaceModelUuid ? newSpaceModel : model; @@ -62,4 +60,28 @@ class SpaceModelBloc extends Bloc { } } } + + Future _onDeleteSpaceModel( + DeleteSpaceModel event, Emitter emit) async { + final currentState = state; + + if (currentState is SpaceModelLoaded) { + try { + final projectUuid = await ProjectManager.getProjectUUID() ?? ''; + + final deletedSuccessfully = + await api.deleteSpaceModel(event.spaceModelUuid, projectUuid); + + if (deletedSuccessfully) { + final updatedSpaceModels = currentState.spaceModels + .where((model) => model.uuid != event.spaceModelUuid) + .toList(); + + emit(SpaceModelLoaded(spaceModels: updatedSpaceModels)); + } + } catch (e) { + emit(SpaceModelError(message: e.toString())); + } + } + } } diff --git a/lib/pages/spaces_management/space_model/bloc/space_model_event.dart b/lib/pages/spaces_management/space_model/bloc/space_model_event.dart index 8f71e611..33856427 100644 --- a/lib/pages/spaces_management/space_model/bloc/space_model_event.dart +++ b/lib/pages/spaces_management/space_model/bloc/space_model_event.dart @@ -34,3 +34,12 @@ class UpdateSpaceModel extends SpaceModelEvent { @override List get props => [spaceModelUuid]; } + +class DeleteSpaceModel extends SpaceModelEvent { + final String spaceModelUuid; + + DeleteSpaceModel({required this.spaceModelUuid}); + + @override + List get props => [spaceModelUuid]; +} diff --git a/lib/services/space_model_mang_api.dart b/lib/services/space_model_mang_api.dart index d9e295e0..15764083 100644 --- a/lib/services/space_model_mang_api.dart +++ b/lib/services/space_model_mang_api.dart @@ -60,4 +60,17 @@ class SpaceModelManagementApi { ); return response; } + + Future deleteSpaceModel(String spaceModelUuid, String projectId) async { + final response = await HTTPService().delete( + path: ApiEndpoints.getSpaceModel + .replaceAll('{projectId}', projectId) + .replaceAll('{spaceModelUuid}', spaceModelUuid), + showServerMessage: true, + expectedResponseModel: (json) { + return json['success'] ?? false; + }, + ); + return response; + } }