ProjectsBloc constructor
Implementation
ProjectsBloc({
required this.getProjectsUseCase,
required this.createProjectUseCase,
required this.deleteUseCase,
}) : super(ProjectsInitial()) {
on<FetchProjectsEvent>((event, emit) async {
emit(ProjectsLoading());
final result = await getProjectsUseCase(NoParams());
result.fold(
(failure) => emit(ProjectsError('Failed to load projects')),
(projects) => emit(ProjectsLoaded(projects)),
);
});
on<DeleteProjectEvent>((event, emit) async {
emit(ProjectsLoading());
final result = await deleteUseCase(event.id);
result.fold(
(failure) => emit(ProjectsError('Failed to delete project')),
(projects) => emit(DeleteProjectState()),
);
});
on<CreateProjectEvent>((event, emit) async {
emit(ProjectsLoading());
final either = await createProjectUseCase(event.name);
either.fold(
(failure) {
if (failure.message.contains('403')) {
emit(ProjectsError(
'Maximum number of projects per user limit reached'));
} else {
emit(ProjectsError(failure.message));
}
},
(project) {
emit(ProjectCreateSuccess(project));
},
);
});
}