package Ġcom . s aven ews . view model Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . s aven ews . News Application Ċ import Ġcom . s aven ews . api . API Component Ċ import Ġcom . s aven ews . repository . Ret rofit Repository Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠRet ro ViewModel Factory Ġ: ĠViewModel Provider . Factory Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġretrofit Repository : ĠRet rofit Repository ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel ?> Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġapi Component Ġ: API Component Ġ= Ġ ĠNews Application . api Component ĊĠĠĠĠĠĠĠ Ġapi Component . inject ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( model Class . isAssignableFrom ( Ret ro ViewModel :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRet ro ViewModel ( ret rofit Repository ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Unknown ĠViewModel Ġclass ") ĊĠĠĠ Ġ} Ċ Ċ }