import 'package:flutter_bloc/flutter_bloc.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/bloc/space_management_event.dart'; import 'package:syncrow_web/pages/spaces_management/bloc/space_management_state.dart'; import 'package:syncrow_web/services/space_mana_api.dart'; class SpaceManagementBloc extends Bloc { final CommunitySpaceManagementApi _api; SpaceManagementBloc(this._api) : super(SpaceManagementInitial()) { on(_onLoadCommunityAndSpaces); on(_onCreateSpace); on(_onUpdateSpacePosition); } void _onLoadCommunityAndSpaces( LoadCommunityAndSpacesEvent event, Emitter emit, ) async { emit(SpaceManagementLoading()); try { // Fetch all communities List communities = await _api.fetchCommunities(); Map> communitySpaces = {}; for (CommunityModel community in communities) { // Fetch spaces hierarchy for each community List spaces = await _api.getSpaceHierarchy(community.uuid); community.spaces = spaces; communitySpaces[community.uuid] = spaces; } emit(SpaceManagementLoaded(communitySpaces: communitySpaces)); } catch (e) { emit(SpaceManagementError('Error loading communities and spaces: $e')); } } void _onCreateSpace( CreateSpaceEvent event, Emitter emit, ) { // Handle space creation logic // You can emit a new state here based on your needs emit(SpaceCreationSuccess()); } void _onUpdateSpacePosition( UpdateSpacePositionEvent event, Emitter emit, ) { // Handle space position update logic } }