mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-16 01:56:24 +00:00
Created communities blocs, services, models, and params.
This commit is contained in:
@ -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()));
|
||||
}
|
||||
}
|
||||
}
|
@ -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];
|
||||
}
|
@ -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];
|
||||
}
|
Reference in New Issue
Block a user