package com.amazon.ivs.broadcast.common import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import com.amazon.ivs.broadcast.App inline fun lazyViewModel( noinline owner: (() -> App), noinline creator: (() -> T)? = null ) = lazy { if (creator == null) ViewModelProvider(owner())[T::class.java] else ViewModelProvider(owner(), BaseViewModelFactory(creator))[T::class.java] } class BaseViewModelFactory(val creator: () -> T) : ViewModelProvider.Factory { override fun create(modelClass: Class): T { @Suppress("UNCHECKED_CAST") return creator() as T } }