package Ġcom . j odi . co ph at . ui Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . j odi . co ph at . ui . base . dialog . Error Dialog Ċ import Ġcom . j odi . co ph at . ui . base . dialog . Loading Dialog Ċ Ċ class ĠBase Observer Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġbase ViewModel : ĠBase ViewModel , ĊĠĠĠ Ġprivate Ġval Ġfragment Manager : ĠFragment Manager ? Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġviews Ġ= ĠArrayList < View >() ĊĊĠĠĠ Ġfun Ġobserve Changes ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbase ViewModel . isLoading . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġowner , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObserver Ġ{ Ġshould Loading Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfadeIn () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbase ViewModel . handleError . observe ( owner , ĠObserver Ġ{ Ġhandle Error ( it ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Views ( binding : ĠArray < out ĠView >) Ġ{ ĊĠĠĠĠĠĠĠ Ġviews . clear () ĊĠĠĠĠĠĠĠ Ġviews . addAll ( binding ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( view Ġin Ġviews ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠfadeIn () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdelay Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġfor Ġ( view Ġin Ġviews ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . animate (). alpha ( 1 f ). set Start Delay ( delay ). start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Ġ+= Ġ 1 0 0 L ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Manager ?. let Ġ{ ĠLoading Dialog . newInstance (). show ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( fragment Manager ?. find Fragment By Tag ( Loading Dialog . TAG ) Ġas ĠDialog Fragment ?) ?. dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Error ( throwable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Manager ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Dialog Ġ= ĠError Dialog . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Dialog . show ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Dialog . handle Throwable ( throwable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }