Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. class GetTasksUseCase @Inject constructor(
  2. private val tasksRepository: ITasksRepository,
  3. ioDispatcher: CoroutineDispatcher
  4. ) : UseCase<GetTasksUseCase.Params, List<Task>>(ioDispatcher) {
  5. override suspend fun execute(parameters: GetTasksUseCase.Params): Result<List<Task>> {
  6. val tasksResult = tasksRepository.getTasks(parameters.forceUpdate)
  7.  
  8. // Filter tasks
  9. if (tasksResult is Success && parameters.currentFiltering != ALL_TASKS) {
  10. val tasks = tasksResult.data
  11. val tasksToShow = mutableListOf<Task>()
  12.  
  13. for (task in tasks) {
  14. when (parameters.currentFiltering) {
  15. ACTIVE_TASKS -> if (task.isActive) {
  16. tasksToShow.add(task)
  17. }
  18. COMPLETED_TASKS -> if (task.isCompleted) {
  19. tasksToShow.add(task)
  20. }
  21. else -> NotImplementedError()
  22. }
  23. }
  24. return Success(tasksToShow)
  25. }
  26. return tasksResult
  27. }
  28. data class Params(
  29. val forceUpdate: Boolean,
  30. val currentFiltering: TasksFilterType = ALL_TASKS
  31. )
  32. }
  33. class TasksViewModel @Inject constructor(
  34. private val getTasksUseCase: GetTasksUseCase,
  35. private val completeTaskUseCase: CompleteTaskUseCase
  36. ) : ViewModel() {
  37. ......
  38.  
  39. fun loadTasks(forceUpdate: Boolean) {
  40. _dataLoading.value = true
  41. viewModelScope.launch {
  42. val tasksResult =
  43. getTasksUseCase(GetTasksUseCase.Params(forceUpdate, _currentFiltering))
  44. if (tasksResult is Success) {
  45. isDataLoadingError.value = false
  46. Timber.e("loadTasks: ${tasksResult.data}")
  47. _items.value = tasksResult.data
  48. } else {
  49. isDataLoadingError.value = false
  50. _items.value = emptyList()
  51. showSnackbarMessage(R.string.loading_tasks_error)
  52. }
  53. _dataLoading.value = false
  54. }
  55. }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement