Fixed creating community

This commit is contained in:
hannathkadher
2024-10-09 11:48:25 +04:00
parent f285189e42
commit 5d440a2b9e
3 changed files with 36 additions and 16 deletions

View File

@ -14,6 +14,7 @@ class SpaceManagementBloc
on<LoadCommunityAndSpacesEvent>(_onLoadCommunityAndSpaces);
on<CreateSpaceEvent>(_onCreateSpace);
on<UpdateSpacePositionEvent>(_onUpdateSpacePosition);
on<CreateCommunityEvent>(_onCreateCommunity);
}
void _onLoadCommunityAndSpaces(
@ -72,18 +73,24 @@ class SpaceManagementBloc
CreateCommunityEvent event,
Emitter<SpaceManagementState> emit,
) async {
final previousState = state;
emit(SpaceManagementLoading());
try {
CommunityModel? community = await _api.createCommunity(
CommunityModel? newCommunity = await _api.createCommunity(
event.name,
event.description,
event.regionId,
);
if (community != null) {
List<CommunityModel> updatedCommunities = List.from((state as SpaceManagementLoaded).communities)
..add(community); // Add the newly created community to the list
if (newCommunity != null) {
if (previousState is SpaceManagementLoaded) {
final updatedCommunities =
List<CommunityModel>.from(previousState.communities)
..add(newCommunity);
emit(SpaceManagementLoaded(communities: updatedCommunities));
}
} else {
emit(const SpaceManagementError('Error creating community'));
}

View File

@ -1,7 +1,8 @@
import 'package:flutter/material.dart';
class CreateCommunityDialog extends StatefulWidget {
final Function(String) onCreateCommunity;
final Function(String name, String description, String regionId)
onCreateCommunity;
const CreateCommunityDialog({super.key, required this.onCreateCommunity});
@ -109,7 +110,11 @@ class CreateCommunityDialogState extends State<CreateCommunityDialog> {
child: ElevatedButton(
onPressed: () {
if (enteredName.isNotEmpty) {
widget.onCreateCommunity(enteredName);
widget.onCreateCommunity(
enteredName,
"",
"42dc377a-1a39-4df9-b85a-b3817af88525",
);
Navigator.of(context).pop();
}
},

View File

@ -1,6 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/svg.dart';
import 'package:syncrow_web/common/search_bar.dart';
import 'package:syncrow_web/pages/spaces_management/bloc/space_management_bloc.dart';
import 'package:syncrow_web/pages/spaces_management/bloc/space_management_event.dart';
import 'package:syncrow_web/pages/spaces_management/model/community_model.dart';
import 'package:syncrow_web/pages/spaces_management/model/space_model.dart';
import 'package:syncrow_web/pages/spaces_management/widgets/community_tile.dart';
@ -30,14 +33,19 @@ class _SidebarWidgetState extends State<SidebarWidget> {
super.initState();
}
void _showCreateCommunityDialog() {
void _showCreateCommunityDialog(BuildContext parentContext) {
showDialog(
context: context,
context: parentContext,
builder: (context) => CreateCommunityDialog(
onCreateCommunity: (String communityName) {
setState(() {
// You can update the community list here when a new community is added
});
onCreateCommunity:
(String communityName, String description, String regionId) {
parentContext.read<SpaceManagementBloc>().add(
CreateCommunityEvent(
name: communityName,
description: description,
regionId: regionId,
),
);
},
),
);
@ -122,7 +130,7 @@ class _SidebarWidgetState extends State<SidebarWidget> {
style: Theme.of(context).textTheme.titleMedium,
),
GestureDetector(
onTap: _showCreateCommunityDialog,
onTap: () => _showCreateCommunityDialog(context),
child: Container(
width: 30,
height: 30,