From f285189e42c4c46d4cd1404664aabaf801f8beb3 Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Wed, 9 Oct 2024 11:04:56 +0400 Subject: [PATCH] added bloc for create community --- .../bloc/space_management_bloc.dart | 24 +++++++++++++++++++ .../bloc/space_management_event.dart | 16 +++++++++++++ .../bloc/space_management_state.dart | 4 +--- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/lib/pages/spaces_management/bloc/space_management_bloc.dart b/lib/pages/spaces_management/bloc/space_management_bloc.dart index f8093208..f3ad73dc 100644 --- a/lib/pages/spaces_management/bloc/space_management_bloc.dart +++ b/lib/pages/spaces_management/bloc/space_management_bloc.dart @@ -67,4 +67,28 @@ class SpaceManagementBloc ) { // Handle space position update logic } + + void _onCreateCommunity( + CreateCommunityEvent event, + Emitter emit, + ) async { + try { + CommunityModel? community = await _api.createCommunity( + event.name, + event.description, + event.regionId, + ); + + if (community != null) { + List updatedCommunities = List.from((state as SpaceManagementLoaded).communities) + ..add(community); // Add the newly created community to the list + + emit(SpaceManagementLoaded(communities: updatedCommunities)); + } else { + emit(const SpaceManagementError('Error creating community')); + } + } catch (e) { + emit(SpaceManagementError('Error creating community: $e')); + } + } } diff --git a/lib/pages/spaces_management/bloc/space_management_event.dart b/lib/pages/spaces_management/bloc/space_management_event.dart index 048cc1ce..295c3ef9 100644 --- a/lib/pages/spaces_management/bloc/space_management_event.dart +++ b/lib/pages/spaces_management/bloc/space_management_event.dart @@ -44,3 +44,19 @@ class UpdateSpacePositionEvent extends SpaceManagementEvent { @override List get props => [index, newPosition]; } + + +class CreateCommunityEvent extends SpaceManagementEvent { + final String name; + final String description; + final String regionId; + + CreateCommunityEvent({ + required this.name, + required this.description, + required this.regionId, + }); + + @override + List get props => [name, description, regionId]; +} diff --git a/lib/pages/spaces_management/bloc/space_management_state.dart b/lib/pages/spaces_management/bloc/space_management_state.dart index 3f8c4af8..87a98ef2 100644 --- a/lib/pages/spaces_management/bloc/space_management_state.dart +++ b/lib/pages/spaces_management/bloc/space_management_state.dart @@ -1,6 +1,5 @@ import 'package:equatable/equatable.dart'; import 'package:syncrow_web/pages/spaces_management/model/community_model.dart'; -import 'package:syncrow_web/pages/spaces_management/model/space_model.dart'; abstract class SpaceManagementState extends Equatable { const SpaceManagementState(); @@ -16,8 +15,7 @@ class SpaceManagementLoading extends SpaceManagementState {} class SpaceManagementLoaded extends SpaceManagementState { final List communities; - - const SpaceManagementLoaded({ required this.communities}); + const SpaceManagementLoaded({required this.communities}); @override List get props => [communities];