Coverage Summary for Class: ViewModelFactory (com.stslex93.notes.core.ui.base)
Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
ViewModelFactory |
0%
(0/1)
|
0%
(0/2)
|
0%
(0/16)
|
0%
(0/11)
|
0%
(0/92)
|
package com.stslex93.notes.core.ui.base
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import javax.inject.Inject
import javax.inject.Provider
class ViewModelFactory @Inject constructor(
private val viewModelMap: Map<Class<out ViewModel>, @JvmSuppressWildcards Provider<ViewModel>>
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(
modelClass: Class<T>
): T = viewModelMap
.getOrElse(modelClass) {
viewModelMap.firstNotNullOfOrNull { entry ->
entry.takeIf {
modelClass.isAssignableFrom(it.key)
}?.value
}
}
?.get() as? T?
?: throw IllegalArgumentException("Unknown model class $modelClass")
}