package Ġcom . github . ek ame kas . b aha . core . di Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Provider Ċ Ċ /** Ċ Ġ* ĠClass Ġto Ġprovide Ġview Ġmodel Ġto Ġinjected Ġcomponent Ċ Ġ*/ Ċ class ĠViewModel Factory Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcre ators : Ġ@ Jvm Suppress W ild cards ĠMap < Class < out ĠViewModel >, ĠProvider < ViewModel >> Ċ ): ĠViewModel Provider . Factory Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel ?> Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcreator : ĠProvider < out ĠViewModel >? Ġ= Ġcre ators [ model Class ] ĊĠĠĠĠĠĠĠ Ġif ( creator Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor (( key , Ġvalue ) Ġin Ġcre ators ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( model Class . isAssignableFrom ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreator Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrequire NotNull ( creator ) Ġ{ Ġ" Unknown Ġview Ġmodel Ġclass Ġ$ model Class " Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreator . get () Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }