package Ġcom . mb . scrap book . lib . base . network Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . mb . scrap book . lib . base . common . State Ċ import Ġcom . mb . scrap book . lib . base . common . State Enum Ċ import Ġcom . mb . scrap book . lib . base . mv vm . repository . Base Repository Ċ import Ġcom . mb . scrap book . lib . base . mv vm . view model . Base ViewModel Ċ import Ġcom . mb . scrap book . lib . base . network . response . Base Response Ċ import Ġkotlinx . coroutines . launch ĊĊ Ċ fun Ġ< T > ĠBase Response < T >. data Convert ( ĊĠĠĠ Ġload State : ĠMutable LiveData < State > Ċ ): ĠT Ġ{ ĊĠĠĠ Ġwhen Ġ( code ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNet Constant . STATE _ SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġis ĠList <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( data Ġas ĠList < *> ). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload State . post Value ( State ( State Enum . EMPTY )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload State . post Value ( State ( State Enum . SUCCESS )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload State . post Value ( State ( State Enum . ERROR , Ġmessage Ġ= Ġmessage )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġ< T Ġ: ĠBase Repository > ĠBase ViewModel < T >. init iate Request ( ĊĠĠĠ Ġblock : Ġsuspend Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġload State : ĠMutable LiveData < State > Ċ ) Ġ{ ĊĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ}. on Success Ġ{ ĊĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Exception Handle . handle Exception ( it , Ġload State ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ