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