package Ġcom . wk x . g ank . ui . category Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . wk x . common . base . Base ViewModel Ċ import Ġcom . wk x . common . utils . Code Ċ import Ġcom . wk x . common . utils . Status Ċ import Ġcom . wk x . common . utils . log d Ċ import Ġcom . wk x . g ank . api . g ank Service Ċ import Ġcom . wk x . g ank . entity . G ank Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġkotlinx . coroutines . with Timeout Ċ Ċ class ĠCategory ViewModel ( private Ġval Ġcategory : ĠString ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar ĠcurrentPage : ĠInt Ġ= Ġ 1 ĊĊĠĠĠ Ġval Ġrefresh G ank LiveData Ġby Ġlazy Ġ{ ĠMutable LiveData < List < G ank >>() Ġ} ĊĊĠĠĠ Ġval Ġload More G ank LiveData Ġby Ġlazy Ġ{ ĠMutable LiveData < List < G ank >>() Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrefresh () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh () Ġ= Ġget G ank ( 1 ) ĊĊĠĠĠ Ġfun Ġload More () Ġ= Ġget G ank ( currentPage Ġ+ Ġ 1 ) ĊĊĠĠĠ Ġfun Ġretry () Ġ= Ġget G ank ( currentPage Ġ+ Ġ 1 ) ĊĊĠĠĠ Ġfun Ġget G ank ( page : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" get G ank Ġpage Ġ= Ġ$ page ". log d () ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( refresh G ank LiveData . value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus LiveData . post Value ( Status ( Code . ING )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Timeout ( timeout Millis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg ank Service . get G ank ( category , Ġ 2 0 , Ġpage ). results ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentPage Ġ= Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus LiveData . post Value ( Status ( Code . SUCCESS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh G ank LiveData . post Value ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload More G ank LiveData . post Value ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus LiveData . post Value ( Status ( Code . EMPTY )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }