package Ġdog . snow . android re cruit test . view model Ċ Ċ import Ġandroidx . h ilt . Ass isted Ċ import Ġandroidx . h ilt . lifecycle . ViewModel Inject Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Saved State Handle Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġdog . snow . android re cruit test . repository . Album Repository Ċ import Ġdog . snow . android re cruit test . repository . Photo Repository Ċ import Ġdog . snow . android re cruit test . repository . UserRepository Ċ import Ġdog . snow . android re cruit test . repository . cache . model . Album Ċ import Ġdog . snow . android re cruit test . repository . cache . model . Photo Ċ import Ġdog . snow . android re cruit test . ui . model . ListItem Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ Ċ class ĠList ViewModel Ċ @ ViewModel Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġphoto Repository : ĠPhoto Repository , ĊĠĠĠ Ġprivate Ġval Ġalbum Repository : ĠAlbum Repository , ĊĠĠĠ Ġ@ Ass isted Ġprivate Ġval Ġsaved State Handle Ġ: ĠSaved State Handle Ċ ) Ġ: ĠViewModel () Ċ { ĊĠĠĠ Ġval Ġitems Ġ= ĠMutable LiveData < List < ListItem >>() ĊĠĠĠ Ġval Ġfilter String Ġ= ĠMutable LiveData < String >(" ") ĊĠĠĠ Ġval Ġdisplayed Items Count Ġ= ĠMutable LiveData ( 0 ) ĊĊĠĠĠ Ġfun Ġretrieve Data (){ ĊĠĠĠĠĠĠĠ Ġitems . value Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphotos Ġ= Ġwith Context ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Repository . getAll From Cache () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalbum s Ġ= Ġwith Context ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Repository . getAll From Cache () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Items Ġ= Ġmutable ListOf < ListItem >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphotos . forEach Ġ{ Ġphoto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalbum Ġ= Ġalbum s . first Ġ{ Ġ_ album Ġ-> Ġ_ album . id Ġ== Ġphoto . album Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Items . add ( ListItem ( photo . id , Ġphoto . title , Ġalbum . title , Ġphoto . thumbnail Url )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . value Ġ= Ġtmp Items ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget First ItemId () Ġ: ĠInt ? { ĊĠĠĠĠĠĠĠ Ġvar Ġphoto Ġ: ĠPhoto ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphotos Ġ= Ġwith Context ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Repository . getAll From Cache () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Ġ= Ġphotos . first () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġphoto ?. id ĊĠĠĠ Ġ} Ċ }