package Ġcom . decimal ab . simp let ask . base Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . decimal ab . simp let ask . data . repository . Login Repository Ċ import Ġcom . decimal ab . simp let ask . data . repository . SignUp Repository Ċ import Ġcom . decimal ab . simp let ask . view . ui . auth . login . Login ViewModel Ċ import Ġcom . decimal ab . simp let ask . view . ui . auth . signup . SignUp ViewModel Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSh ak il ĠAh med ĠSh aj Ġon Ġ 2 3 , September , 2 0 2 0 . Ċ Ġ* Ġsh ak il ah med sh aj @ gmail . com Ċ Ġ*/ Ċ class ĠBase ViewModel Factory Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġclass ĠViewModel Factory ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrepository : ĠBase Repository ĊĠĠĠ Ġ) Ġ: ĠViewModel Provider . New Instance Factory () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel ?> Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Class . isAssignableFrom ( Login ViewModel :: class . java ) Ġ-> ĠLogin ViewModel ( repository Ġas ĠLogin Repository ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Class . isAssignableFrom ( SignUp ViewModel :: class . java ) Ġ-> ĠSign Up ViewModel ( repository Ġas ĠSign Up Repository ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" ViewModel Class ĠNot ĠFound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ