Skip to content

Instantly share code, notes, and snippets.

@DenisBronx
Created August 23, 2022 10:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DenisBronx/bc342dd7c956cfc6e1e971585063dd90 to your computer and use it in GitHub Desktop.
Save DenisBronx/bc342dd7c956cfc6e1e971585063dd90 to your computer and use it in GitHub Desktop.
Avoid Use Case Boilerplate Approach 3
data class SomeModel(val id: String, val name: String)
interface SomeModelRepository {
suspend fun getSomeModels(): Answer<List<SomeModel>, String>
}
typealias GetSomeModelUseCase = suspend () -> Answer<List<SomeModel>, String>
class SomeViewModel(private val getSomeModelUseCase: GetSomeModelUseCase) : ViewModel() {
fun load() {
viewModelScope.launch {
val result = getSomeModelUseCase()
// Do something with the result
}
}
}
fun provideViewModel(someModelRepository: SomeModelRepository): SomeViewModel {
return SomeViewModel(someModelRepository::getSomeModels)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment