package Ġcom . android . github user . platform Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . android . github user . screens . user . User Activity ViewModel Ċ import Ġcom . android . github user . screens . user . User UseCase Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ Ċ /** Ċ Ġ* ĠBase ĠVM ĠFactory Ġfor Ġcreation Ġof Ġdifferent ĠVM 's Ċ Ġ*/ Ċ class ĠBase ViewModel Factory Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġmain Dis path er : ĠCor outine Dispatcher ĊĠĠĠ Ġ, private Ġval Ġio Dispatcher : ĠCor outine Dispatcher ĊĠĠĠ Ġ, private Ġval Ġuse Case : ĠUser UseCase Ċ ) Ġ: ĊĠĠĠ ĠViewModel Provider . Factory Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel > Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( model Class . isAssignableFrom ( User Activity ViewModel :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Activity ViewModel ( main Dis path er , Ġio Dispatcher , use Case ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" ViewModel ĠNot Ġconfigured ") Ġas ĠThrowable ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }