Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class GetTasksUseCase @Inject constructor(
- private val tasksRepository: ITasksRepository,
- ioDispatcher: CoroutineDispatcher
- ) : UseCase<GetTasksUseCase.Params, List<Task>>(ioDispatcher) {
- override suspend fun execute(parameters: GetTasksUseCase.Params): Result<List<Task>> {
- val tasksResult = tasksRepository.getTasks(parameters.forceUpdate)
- // Filter tasks
- if (tasksResult is Success && parameters.currentFiltering != ALL_TASKS) {
- val tasks = tasksResult.data
- val tasksToShow = mutableListOf<Task>()
- for (task in tasks) {
- when (parameters.currentFiltering) {
- ACTIVE_TASKS -> if (task.isActive) {
- tasksToShow.add(task)
- }
- COMPLETED_TASKS -> if (task.isCompleted) {
- tasksToShow.add(task)
- }
- else -> NotImplementedError()
- }
- }
- return Success(tasksToShow)
- }
- return tasksResult
- }
- data class Params(
- val forceUpdate: Boolean,
- val currentFiltering: TasksFilterType = ALL_TASKS
- )
- }
- class TasksViewModel @Inject constructor(
- private val getTasksUseCase: GetTasksUseCase,
- private val completeTaskUseCase: CompleteTaskUseCase
- ) : ViewModel() {
- ......
- fun loadTasks(forceUpdate: Boolean) {
- _dataLoading.value = true
- viewModelScope.launch {
- val tasksResult =
- getTasksUseCase(GetTasksUseCase.Params(forceUpdate, _currentFiltering))
- if (tasksResult is Success) {
- isDataLoadingError.value = false
- Timber.e("loadTasks: ${tasksResult.data}")
- _items.value = tasksResult.data
- } else {
- isDataLoadingError.value = false
- _items.value = emptyList()
- showSnackbarMessage(R.string.loading_tasks_error)
- }
- _dataLoading.value = false
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement