Made CommunitiesBloc state object one class, instead of multiple, to make searching and pagination easier.

This commit is contained in:
Faris Armoush
2025-06-16 16:47:47 +03:00
parent 6af96fadbd
commit 0260523121
2 changed files with 30 additions and 27 deletions

View File

@ -14,7 +14,7 @@ class CommunitiesBloc extends Bloc<CommunitiesEvent, CommunitiesState> {
CommunitiesBloc({
required CommunitiesService communitiesService,
}) : _communitiesService = communitiesService,
super(CommunitiesInitial()) {
super(const CommunitiesState()) {
on<LoadCommunities>(_onGetCommunity);
}
@ -23,13 +23,28 @@ class CommunitiesBloc extends Bloc<CommunitiesEvent, CommunitiesState> {
Emitter<CommunitiesState> emit,
) async {
try {
emit(CommunitiesLoading());
emit(const CommunitiesState(status: CommunitiesStatus.loading));
final communities = await _communitiesService.getCommunity(event.param);
emit(CommunitiesLoaded(communities));
emit(
CommunitiesState(
status: CommunitiesStatus.success,
communities: communities,
),
);
} on APIException catch (e) {
emit(CommunitiesFailure(e.message));
emit(
CommunitiesState(
status: CommunitiesStatus.failure,
errorMessage: e.message,
),
);
} catch (e) {
emit(CommunitiesFailure(e.toString()));
emit(
CommunitiesState(
status: CommunitiesStatus.failure,
errorMessage: e.toString(),
),
);
}
}
}

View File

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