[WIP] DI: implement simple local vm factory provider
This commit is contained in:
parent
ca2b7772ce
commit
a7ae8b7ce0
|
|
@ -0,0 +1,52 @@
|
||||||
|
package com.example.llama.revamp.util
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import com.example.llama.revamp.data.preferences.UserPreferences
|
||||||
|
import com.example.llama.revamp.engine.InferenceEngine
|
||||||
|
import com.example.llama.revamp.monitoring.PerformanceMonitor
|
||||||
|
import com.example.llama.revamp.viewmodel.MainViewModel
|
||||||
|
import com.example.llama.revamp.viewmodel.PerformanceViewModel
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility class to provide ViewModel factories.
|
||||||
|
*
|
||||||
|
* TODO-han.yin: Replace with Hilt
|
||||||
|
*/
|
||||||
|
object ViewModelFactoryProvider {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a factory for PerformanceViewModel.
|
||||||
|
*/
|
||||||
|
fun getPerformanceViewModelFactory(
|
||||||
|
performanceMonitor: PerformanceMonitor,
|
||||||
|
userPreferences: UserPreferences
|
||||||
|
): ViewModelProvider.Factory {
|
||||||
|
return object : ViewModelProvider.Factory {
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
override fun <T : ViewModel> create(modelClass: Class<T>): T {
|
||||||
|
if (modelClass.isAssignableFrom(PerformanceViewModel::class.java)) {
|
||||||
|
return PerformanceViewModel(performanceMonitor, userPreferences) as T
|
||||||
|
}
|
||||||
|
throw IllegalArgumentException("Unknown ViewModel class: ${modelClass.name}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a factory for MainViewModel.
|
||||||
|
*/
|
||||||
|
fun getMainViewModelFactory(
|
||||||
|
inferenceEngine: InferenceEngine
|
||||||
|
): ViewModelProvider.Factory {
|
||||||
|
return object : ViewModelProvider.Factory {
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
override fun <T : ViewModel> create(modelClass: Class<T>): T {
|
||||||
|
if (modelClass.isAssignableFrom(MainViewModel::class.java)) {
|
||||||
|
return MainViewModel(inferenceEngine) as T
|
||||||
|
}
|
||||||
|
throw IllegalArgumentException("Unknown ViewModel class: ${modelClass.name}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue