/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . example . android dev challenge . view model Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . example . android dev challenge . api . data . C ats Model Item Ċ import Ġcom . example . android dev challenge . api . data . C ats Repository Ċ import Ġcom . example . android dev challenge . api . data . Resource Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠC ats ViewModel ( app : ĠApplication ) Ġ: ĠAndroid ViewModel ( app ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" C ats ViewModel " ĊĊĠĠĠ Ġval Ġcats Data : ĠMutable LiveData < Resource < List < C ats Model Item >>> Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġcats Repository Ġ= ĠC ats Repository ( app ) ĊĠĠĠ Ġfun ĠgetC ats () Ġ= ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcats Data . post Value ( Resource . loading ( data Ġ= Ġnull )) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" getC ats : Ġloading ") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" getC ats : Ġsuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcats Data . post Value ( Resource . success ( cats Repository . getC ats ())) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" getC ats : Ġexception Ġ: Ġ${ exception . localized Message }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcats Data . post Value ( Resource . error ( null , Ġexception . localized Message )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Cat ( id : ĠString ?): ĠC ats Model Item ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcats Data . value ?. data ?. first OrNull Ġ{ Ġit . id Ġ== Ġid Ġ} ĊĠĠĠ Ġ} Ċ } Ċ