package Ġcom . raz ew are . emit ron . utils Ċ Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ Ċ /** Ċ Ġ* ĠHelper Ġinterface Ġto Ġrepresent ĠUI Ġstate . Ċ Ġ* Ċ Ġ* ĠYou Ġshould Ġimplement Ġthe Ġinterface Ġto Ġsimplify ĠUI Ġstate Ċ Ġ*/ Ċ interface ĠUi StateManager Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠEnum Ġclass Ġto Ġcurrent ĠUI Ġstate ĊĠĠ Ġ*/ ĊĠ Ġenum Ġclass ĠUi State Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequest Ġsuccessful , Ġbut Ġno Ġdata ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠEMPTY , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitial Ġrequest Ġin Ġprogress ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠINIT , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitial Ġrequest Ġfailed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠINIT _ FAILED , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitial Ġrequest Ġsuccessful , Ġbut Ġno Ġdata ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠINIT _ EMPTY , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitial Ġrequest Ġsuccessful ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠINIT _ LOADED , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUI Ġhas Ġan Ġerror ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠERROR , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUI Ġis Ġloading Ġsome Ġcontent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠLO ADING , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUI Ġhas Ġloaded ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠLO ADED , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUI Ġhas Ġan Ġerror Ġdue Ġto Ġconnectivity Ġfailure ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠERROR _ CONNECTION ; ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġif ĠUI Ġstate Ġis Ġempty ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif ĠUI Ġis Ġempty , Ġelse Ġfalse ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġreturn Ġthis Ġ== ĠEMPTY Ġ|| Ġthis Ġ== ĠINIT _ EMPTY ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠConvenience Ġfunction Ġto Ġobserve ĠUI State Ġlive Data Ġfrom ĠViewModel ĊĠĠ Ġ*/ ĊĠ Ġfun Ġinit State Observer ( life Cycle : ĠLifecycle Owner , Ġui State : ĠLive Data < Ui State >) Ġ{ ĊĠĠĠ Ġui State . observe ( life Cycle , ĠObserver Ġ{ ĊĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠ ĠUi State . ERROR Ġ-> ĠonError () ĊĠĠĠĠĠĠĠ ĠUi State . EMPTY Ġ-> ĠonError Empty () ĊĠĠĠĠĠĠĠ ĠUi State . LOADING Ġ-> Ġon Loading () ĊĠĠĠĠĠĠĠ ĠUi State . LOADED Ġ-> Ġon Loaded () ĊĠĠĠĠĠĠĠ ĠUi State . ERROR _ CONNECTION Ġ-> ĠonError Connection () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{// ĠIgn oring Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠHandle ĠUI Ġon Ġany Ġerror ĊĠĠ Ġ*/ ĊĠ Ġval ĠonError : Ġ() Ġ-> ĠUnit ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠHandle ĠUI Ġon Ġany Ġerror ĊĠĠ Ġ*/ ĊĠ Ġval ĠonError Empty : Ġ() Ġ-> ĠUnit ĊĠ Ġ/** ĊĠĠ Ġ* ĠHandle ĠUI Ġon Ġconnectivity Ġfailure ĊĠĠ Ġ*/ ĊĠ Ġval ĠonError Connection : Ġ() Ġ-> ĠUnit ĊĠ Ġ/** ĊĠĠ Ġ* ĠHandle ĠUI Ġon Ġany Ġrequest Ġprogress ĊĠĠ Ġ*/ ĊĠ Ġval Ġon Loading : Ġ() Ġ-> ĠUnit ĊĠ Ġ/** ĊĠĠ Ġ* ĠHandle ĠUI Ġafter Ġany Ġrequest Ġsuccess / failure ĊĠĠ Ġ*/ ĊĠ Ġval Ġon Loaded : Ġ() Ġ-> ĠUnit Ċ } Ċ Ċ /** Ċ Ġ* ĠIs Ġloading . Ċ Ġ*/ Ċ fun ĠUi StateManager . Ui State ?. isLoading (): ĠBoolean Ġ{ ĊĠ Ġreturn Ġthis Ġ!= Ġnull Ġ&& Ġ( ĊĠĠĠĠĠ Ġthis Ġ== ĠUi StateManager . Ui State . LOADING Ġ|| Ġthis Ġ== ĠUi StateManager . Ui State . INIT ) Ċ } Ċ Ċ /** Ċ Ġ* ĠHas Ġerror . Ċ Ġ*/ Ċ fun ĠUi StateManager . Ui State ?. has Failed (): ĠBoolean Ġ{ ĊĠ Ġreturn Ġthis Ġ!= Ġnull Ġ&& Ġ( this Ġ== ĠUi StateManager . Ui State . ERROR ) Ċ } Ċ Ċ /** Ċ Ġ* ĠHas Ġerror , Ġconnection Ġerror , Ġor Ġno Ġdata . Ċ Ġ*/ Ċ fun ĠUi StateManager . Ui State ?. has Error (): ĠBoolean Ġ{ ĊĠ Ġreturn Ġthis Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠ Ġ( ĊĠĠĠĠĠĠĠĠĠ Ġthis Ġ== ĠUi StateManager . Ui State . ERROR Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ== ĠUi StateManager . Ui State . INIT _ FAILED Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ== ĠUi StateManager . Ui State . ERROR _ CONNECTION Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ== ĠUi StateManager . Ui State . EMPTY Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ== ĠUi StateManager . Ui State . INIT _ EMPTY ĊĠĠĠĠĠĠĠĠĠ Ġ) Ċ } Ċ