TasksBloc constructor

TasksBloc({
  1. required GetTasksUseCase getTasksUseCase,
  2. required UpdateTaskUseCase updateTaskUseCase,
  3. required DeleteTaskUseCase deleteTaskUseCase,
})

Implementation

TasksBloc({
  required this.getTasksUseCase,
  required this.updateTaskUseCase,
  required this.deleteTaskUseCase,
}) : super(TasksInitial()) {
  on<FetchTasksEvent>((event, emit) async {
    emit(TasksLoading());
    final result =
        await getTasksUseCase.call(TasksParams(event.projectId ?? ''));

    result.fold(
      (failure) => emit(TasksError(failure.message)),
      (tasks) {
        emit(TasksLoaded(tasks, sectionResult));
      },
    );
  });

  on<UpdateFetchTasksEvent>((event, emit) async {
    final result =
        await getTasksUseCase.call(TasksParams(event.projectId ?? ''));

    result.fold(
      (failure) => emit(TasksError(failure.message)),
      (tasks) => emit(TasksLoaded(tasks, sectionResult)),
    );
  });

  on<UpdateTaskEvent>((event, emit) async {
    int tempDuration = event.task.duration == null || event.task.duration == 0
        ? 1
        : event.task.duration! ~/ 60;
    event.task.duration = tempDuration == 0 ? 1 : tempDuration;
    final result = await updateTaskUseCase.call(UpdateTaskParams(
      id: event.taskId ?? '',
      taskData: event.task,
    ));
    result.fold(
      (failure) => emit(TasksError(failure.message)),
      (task) {
        add(UpdateFetchTasksEvent(event.task.projectId));
      },
    );
  });

  on<DeleteEvent>((event, emit) async {
    final result = await deleteTaskUseCase.call(event.taskId ?? '');
    result.fold(
      (failure) => emit(TasksError(failure.message)),
      (task) {
        add(UpdateFetchTasksEvent(event.projectId));
      },
    );
  });
}