Created communities blocs, services, models, and params.

This commit is contained in:
Faris Armoush
2025-06-16 15:20:44 +03:00
parent 4d9145a953
commit b0aea94b91
8 changed files with 168 additions and 0 deletions

View File

@ -0,0 +1,35 @@
import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/space_management_v2/modules/communities/domain/models/community_model.dart';
import 'package:syncrow_web/pages/space_management_v2/modules/communities/domain/params/load_communities_param.dart';
import 'package:syncrow_web/pages/space_management_v2/modules/communities/domain/services/communities_service.dart';
import 'package:syncrow_web/services/api/api_exception.dart';
part 'communities_event.dart';
part 'communities_state.dart';
class CommunitiesBloc extends Bloc<CommunitiesEvent, CommunitiesState> {
final CommunitiesService _communitiesService;
CommunitiesBloc({
required CommunitiesService communitiesService,
}) : _communitiesService = communitiesService,
super(CommunitiesInitial()) {
on<LoadCommunities>(_onGetCommunity);
}
Future<void> _onGetCommunity(
LoadCommunities event,
Emitter<CommunitiesState> emit,
) async {
try {
emit(CommunitiesLoading());
final communities = await _communitiesService.getCommunity(event.param);
emit(CommunitiesLoaded(communities));
} on APIException catch (e) {
emit(CommunitiesFailure(e.message));
} catch (e) {
emit(CommunitiesFailure(e.toString()));
}
}
}

View File

@ -0,0 +1,17 @@
part of 'communities_bloc.dart';
sealed class CommunitiesEvent extends Equatable {
const CommunitiesEvent();
@override
List<Object?> get props => [];
}
class LoadCommunities extends CommunitiesEvent {
const LoadCommunities(this.param);
final LoadCommunitiesParam param;
@override
List<Object?> get props => [param];
}

View File

@ -0,0 +1,30 @@
part of 'communities_bloc.dart';
sealed class CommunitiesState extends Equatable {
const CommunitiesState();
@override
List<Object?> get props => [];
}
final class CommunitiesInitial extends CommunitiesState {}
final class CommunitiesLoading extends CommunitiesState {}
final class CommunitiesLoaded extends CommunitiesState {
final List<CommunityModel> communities;
const CommunitiesLoaded(this.communities);
@override
List<Object?> get props => [communities];
}
final class CommunitiesFailure extends CommunitiesState {
final String message;
const CommunitiesFailure(this.message);
@override
List<Object?> get props => [message];
}