Se7eN
05/29/2021, 4:25 PM@HiltViewModel
class MyViewModel @Inject constructor(
private val repository: MyRepository
) : ViewModel()
class MyRepository(
private val api: MyApi,
private val coroutineScope: CoroutineScope
)
Module:
@InstallIn(ViewModelComponent::class)
@Module
object RepositoryModule {
@Provides
fun provideMyRepository(
api: MyApi,
viewModel: MyViewModel
): MyRepository {
return MyRepository(api, viewModel.viewModelScope)
}
}
Javier
05/29/2021, 4:48 PMJavier
05/29/2021, 4:49 PMDaniel
05/30/2021, 11:54 AMSe7eN
05/30/2021, 12:15 PMSe7eN
05/30/2021, 12:15 PMJavier
05/30/2021, 12:15 PMJavier
05/30/2021, 12:16 PMJavier
05/30/2021, 12:16 PMsuspend myFancySuspendFun() = withContext(<http://Dispatchers.IO|Dispatchers.IO>) { ... }
Se7eN
05/30/2021, 12:16 PMflow { }.stateIn(scope, ...)
Javier
05/30/2021, 12:17 PMSe7eN
05/30/2021, 12:18 PMJavier
05/30/2021, 12:19 PMJavier
05/30/2021, 12:19 PMSe7eN
05/30/2021, 12:20 PMFlow<Resource>
for loading, success and error statessolidogen
05/31/2021, 6:29 AMsolidogen
05/31/2021, 6:29 AM@Provides
@Singleton
@GlobalScope
fun provideGlobalScope(): CoroutineScope = MainScope()
solidogen
05/31/2021, 6:30 AM@Qualifier
@Retention(AnnotationRetention.RUNTIME)
@Target(
AnnotationTarget.CLASS,
AnnotationTarget.FIELD,
AnnotationTarget.FUNCTION,
AnnotationTarget.VALUE_PARAMETER
)
annotation class GlobalScope
solidogen
05/31/2021, 6:30 AM