package Ġnet . vap orm usic . anime x stream . utils Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġnet . vap orm usic . anime x stream . R Ċ import Ġnet . vap orm usic . anime x stream . utils . constants . C Ċ import Ġnet . vap orm usic . anime x stream . utils . model . Error Model Ċ import Ġnet . vap orm usic . anime x stream . utils . model . Loading Model 2 Ċ import Ġretrofit 2 . HttpException Ċ import Ġjava . net . Http URLConnection Ċ import Ġjava . net . Socket Exception Ċ import Ġjava . net . Socket TimeoutException Ċ import Ġjava . net . Unknown Host Exception Ċ Ċ open Ġclass ĠCommon ViewModel 2 Ġ: ĠViewModel (){ ĊĊĠĠĠ Ġprivate Ġval Ġ_ loading Model : ĠMutable LiveData < Loading Model 2 > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġloading Model : ĠLive Data < Loading Model 2 > Ġ= Ġ_ loading Model ĊĠĠĠ Ġprivate Ġvar ĠerrorCode : ĠInt Ġ= ĠC . ERROR _ CODE _ DEFAULT ĊĠĠĠ Ġprivate Ġvar Ġerror Msg Id Ġ= ĠR . string . something _ w ent _ wrong ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ loading Model . post Value ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġ Ġfun Ġupdate Error Model ( e : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġe ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e Ġis ĠHttp Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= Ġwhen Ġ( e . code ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp URLConnection . HTTP _ BAD _ REQUEST Ġ-> ĠC . RESPONSE _ UNKNOWN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠC . ERROR _ CODE _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( e Ġis ĠSocket Exception Ġ|| Ġe Ġis ĠUnknown Host Exception Ġ|| Ġe Ġis ĠSocket TimeoutException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠC . NO _ INTER NET _ CONNECTION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg Id Ġ= ĠR . string . no _ internet ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠC . ERROR _ CODE _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun ĠisLoading (): ĠBoolean { ĊĠĠĠĠĠĠĠ Ġ_ loading Model . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit . loading Ġ== ĠLoading . LOADING ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġupdate Loading State ( loading : ĠLoading , Ġe : ĠThrowable ?, Ġis List Empty : ĠBoolean Ġ= Ġtrue ){ ĊĠĠĠĠĠĠĠ Ġupdate Error Model ( e ) ĊĠĠĠĠĠĠĠ Ġ_ loading Model . value Ġ= ĠLoading Model 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Ġ= Ġloading , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠerrorCode , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg Ġ= Ġerror Msg Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis List Empty Ġ= Ġis List Empty ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġenum Ġclass ĠLoading { ĊĠĠĠĠĠĠĠ ĠLO ADING , ĠCOMP LETED , ĠERROR ĊĠĠĠ Ġ} Ċ }