package Ġcom . mart dev . android . my gallery . utils Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . mart dev . android . domain . use case . UseCase Ċ import Ġcom . mart dev . android . domain . phot om odel . Photo Ċ import Ġcom . mart dev . android . domain . vide om odel . Video Ċ import Ġcom . mart dev . android . my gallery . view model . Photo ViewModel Ċ import Ġcom . mart dev . android . my gallery . view model . Video ViewModel Ċ Ċ class ĠViewModel Factory ( ĊĠĠĠ Ġprivate Ġval Ġphoto UseCase : ĠUse Case < Photo >, ĊĠĠĠ Ġprivate Ġval Ġvideo UseCase : ĠUse Case < Video > Ċ ) Ġ: ĠViewModel Provider . Factory { ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel ?> Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Class . isAssignableFrom ( Photo ViewModel :: class . java ) Ġ-> ĠPhoto ViewModel ( photo UseCase ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Class . isAssignableFrom ( Video ViewModel :: class . java ) Ġ-> ĠVideo ViewModel ( video UseCase ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unknown Ġmodel Ġclass : Ġ$ model Class ") ĊĠĠĠĠĠĠĠ Ġ} Ġas ĠT ĊĠĠĠ Ġ} Ċ }