[WIP] DI: implement simple local vm factory provider

This commit is contained in:
Han Yin 2025-04-11 14:40:35 -07:00
parent ca2b7772ce
commit a7ae8b7ce0
1 changed files with 52 additions and 0 deletions

View File

@ -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}")
}
}
}
}