Skip to content

Commit

Permalink
chore: Add UseCases
Browse files Browse the repository at this point in the history
  • Loading branch information
matiascalvo committed Apr 12, 2022
1 parent 001adf9 commit bf404d9
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.github.kittinunf.result.onFailure
import com.github.kittinunf.result.onSuccess
import com.matias.domain.repositories.GithubRepository
import com.matias.domain.usecases.GetRepoUseCase
import com.matias.kotlinrepositories.ui.extensions.getScreenStatusDependingOnError
import com.matias.kotlinrepositories.ui.screens.ScreenStatus
import dagger.hilt.android.lifecycle.HiltViewModel
Expand All @@ -17,7 +17,7 @@ import kotlinx.coroutines.launch
@HiltViewModel
class DetailsScreenViewModel @Inject constructor(
savedStateHandle: SavedStateHandle,
private val repository: GithubRepository,
private val getRepoUseCase: GetRepoUseCase,
) : ViewModel() {
private val owner: String = savedStateHandle.get("owner")!!
private val name: String = savedStateHandle.get("name")!!
Expand All @@ -28,7 +28,7 @@ class DetailsScreenViewModel @Inject constructor(
init {
viewModelScope.launch {
_state.value = DetailsScreenState(screenStatus = ScreenStatus.IDLE)
repository.getKotlinRepo(owner, name)
getRepoUseCase(owner, name)
.onSuccess { repo ->
_state.value = DetailsScreenState(
screenStatus = ScreenStatus.IDLE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ package com.matias.kotlinrepositories.ui.screens.home
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.paging.cachedIn
import com.matias.domain.repositories.GithubRepository
import com.matias.domain.usecases.GetPagedKotlinReposUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
import kotlinx.coroutines.FlowPreview

@OptIn(FlowPreview::class)
@HiltViewModel
class HomeViewModel @Inject constructor(
repo: GithubRepository,
getReposUseCase: GetPagedKotlinReposUseCase,
) : ViewModel() {

val items = repo.getKotlinRepos().cachedIn(viewModelScope)
val items = getReposUseCase().cachedIn(viewModelScope)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import androidx.lifecycle.viewModelScope
import androidx.paging.PagingData
import androidx.paging.cachedIn
import com.matias.domain.model.Repo
import com.matias.domain.repositories.GithubRepository
import com.matias.domain.usecases.SearchReposUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
import javax.inject.Named
Expand All @@ -25,7 +25,7 @@ import kotlinx.coroutines.flow.update
@OptIn(FlowPreview::class)
@HiltViewModel
class SearchViewModel @Inject constructor(
private val repo: GithubRepository,
private val searchReposUseCase: SearchReposUseCase,
@Named("debounceMs") private val debounceMs: Long,
) : ViewModel() {

Expand All @@ -39,7 +39,7 @@ class SearchViewModel @Inject constructor(
.debounce { if (it == "") 0L else debounceMs }
.flatMapLatest { query ->
_state.update { it.copy(isDebouncing = false) }
repo.searchKotlinRepos(query = query)
searchReposUseCase(query = query)
}.cachedIn(viewModelScope)

fun onSearchUpdated(value: String) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.matias.domain.usecases

import com.matias.domain.repositories.GithubRepository
import javax.inject.Inject

class GetPagedKotlinReposUseCase @Inject constructor(
private val repo: GithubRepository
) {
operator fun invoke() = repo.getKotlinRepos()
}
11 changes: 11 additions & 0 deletions domain/src/main/java/com/matias/domain/usecases/GetRepoUseCase.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.matias.domain.usecases

import com.matias.domain.repositories.GithubRepository
import javax.inject.Inject

class GetRepoUseCase @Inject constructor(
private val repository: GithubRepository,
) {
suspend operator fun invoke(owner: String, name: String) =
repository.getKotlinRepo(owner, name)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.matias.domain.usecases

import com.matias.domain.repositories.GithubRepository
import javax.inject.Inject

class SearchReposUseCase @Inject constructor(
private val repo: GithubRepository
) {

operator fun invoke(query: String) = repo.searchKotlinRepos(query)
}

0 comments on commit bf404d9

Please sign in to comment.