package Ġcom . ab hr p . food near me . presentation . view model . detail Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . ab hr p . food near me . domain . model . detail . Restaurant Details Ċ import Ġcom . ab hr p . food near me . domain . model . wrapper . Result Wrapper Ċ import Ġcom . ab hr p . food near me . domain . use case . detail . Get Restaurant Details Ċ import Ġcom . ab hr p . food near me . presentation . state . Resource Ċ import Ġcom . ab hr p . food near me . presentation . state . Resource State Ċ import Ġcom . ab hr p . food near me . util . logging . App Logger Ċ import Ġio . reactivex . ob servers . Disposable Single Observer Ċ import Ġokhttp 3 . internal . http 2 . Http 2 Reader . Companion . logger Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠView model Ġclass Ġfor Ġthe Ġdetails Ġscreen Ċ Ġ* Ġ@ param Ġget Restaurant Details ĠUse Ġcase Ġclass Ġto Ġget Ġdetails Ċ Ġ*/ Ċ class ĠRest aurant Details ViewModel Ġ@ Inject Ġconstructor ( private Ġval Ġget Restaurant Details : ĠGet Restaurant Details ) Ġ: ĊĠĠĠ ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġrestaurant Details LiveData Ġ= ĠMutable LiveData < Resource < Restaurant Details >>() ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġget Restaurant Details . dispose All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġobserve Restaurant Details (): ĠLive Data < Resource < Restaurant Details >> Ġ= ĊĠĠĠĠĠĠĠ Ġrestaurant Details LiveData ĊĊĠĠĠ Ġfun Ġfetch Restaurant Details ( id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrestaurant Details LiveData . post Value ( Resource ( Resource State . LOADING , Ġnull , Ġnull )) ĊĠĠĠĠĠĠĠ Ġget Restaurant Details . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRest aurant Details Observer (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet Restaurant Details . Params . get Params ( id ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠRest aurant Details Observer Ġ: ĊĠĠĠĠĠĠĠ ĠDis posable Single Observer < Result Wrapper < Restaurant Details >>() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠResult Wrapper < Restaurant Details >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . code Ġ== Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestaurant Details LiveData . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource State . SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestaurant Details LiveData . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource State . ERROR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestaurant Details LiveData . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource State . ERROR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . localized Message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }