package Ġapp . story tel . candidate . com Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġapp . story tel . candidate . com . network . Api Factory Ċ import Ġapp . story tel . candidate . com . network . models . Comment Ċ import Ġapp . story tel . candidate . com . network . models . Network Resource Ċ import Ġapp . story tel . candidate . com . network . models . Result Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . HttpException Ċ import Ġretrofit 2 . Response Ċ Ċ class ĠDetails Activity ViewModel : ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġapi Ġ= ĠApi Factory . get Sample Api () ĊĊĠĠĠ Ġvar Ġpost Id : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġpost Title : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġpost Body : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġphoto Url : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġinitialized Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġcomments Ġ= ĠMutable LiveData < Network Resource < List < Comment >>> (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue Ġ= ĠNetwork Resource ( false , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Ġ( intent : ĠIntent ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( initialized ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra (" post Id ")){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Id Ġ= Ġintent . getInt Extra (" post Id ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra (" post Title ")){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Title Ġ= Ġintent . getString Extra (" post Title ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra (" post Body ")){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Body Ġ= Ġintent . getString Extra (" post Body ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra (" photoUrl ")){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Url Ġ= Ġintent . getString Extra (" photoUrl ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpost Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Comments ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinitialized Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Comments (): ĠLive Data < Network Resource < List < Comment >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcomments ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Comments Ġ( post Id : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġcomments . post Value ( Network Resource ( true , Ġnull )) ĊĠĠĠĠĠĠĠ Ġapi . get Comments ( post Id ). enqueue ( object Ġ: ĠCallback < List < Comment >> { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < List < Comment >>, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomments . post Value ( Network Resource ( false , ĠResult . Failure ( t ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < List < Comment >>, Ġresponse : ĠResponse < List < Comment >>) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomments . post Value (( Network Resource ( false , ĠResult . Success ( response . body () Ġ?: ĠArrayList ())) )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomments . post Value (( Network Resource ( false , ĠResult . Failure ( HttpException ( response ))))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }