package Ġcom . raz v ant mz . on em ove . ui . base Ċ Ċ import Ġandroid . R Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . Window Ċ import Ġandroidx . coordinator layout . widget . Coordinator Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . view binding . View Binding Ċ import Ġcom . raz v ant mz . on em ove . core . response Handlers . Response Handler Ċ Ċ open Ġclass ĠBase Fragment < B Ġ: ĠView Binding , ĠT Ġ: ĠBase ViewModel > Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġbinding : B ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : T ĊĠĠĠ Ġlateinit Ġvar Ġresponse Handler : ĠResponse Handler ĊĠĠĠ Ġlateinit Ġvar Ġcoord inator Layout : ĠCoord inator Layout ĊĊĠĠĠ Ġfun Ġis ViewModel Initial ised (): Boolean ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ:: viewModel . isInitialized ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġbinding . root ĊĠĠĠĠĠĠĠ Ġif ( is ViewModel Initial ised ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Handler Ġ= ĠResponse Handler ( root , ĠviewModel , Ġview Lifecycle Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind Dialog ( viewModel . is Updating ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġroot ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Fragment Context (): ĠContext ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . context !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġdialog View : ĠDialog ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġshow Progress Dialog ( context : ĠContext ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog View Ġ= ĠDialog ( context , ĠR . style . Theme _ Material _ Light _ Dialog ) ĊĠĠĠĠĠĠĠ Ġdialog View !!. request Window Feature ( Window . FEATURE _ NO _ TITLE ); ĊĠĠĠĠĠĠĠ Ġdialog View !!. window ?. setBackground Drawable Resource ( com . raz v ant mz . on em ove . R . color . transparent ) ĊĠĠĠĠĠĠĠ Ġdialog View !!. set ContentView ( com . raz v ant mz . on em ove . R . layout . progress _ dialog ) ĊĠĠĠĠĠĠĠ Ġdialog View !!. set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġdialog View !!. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdismiss Progress Dialog () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog View ?: return ĊĠĠĠĠĠĠĠ Ġdialog View !!. dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbind Dialog ( is Updating : ĠLive Data < Boolean >) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġis Updating . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġupdate -> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( update ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?: Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress Dialog ( context !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġinline Ġfun Ġ< VM Ġ: ĠViewModel > ĠviewModel Factory ( cross inline Ġf : Ġ() Ġ-> ĠVM ) Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠViewModel Provider . Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel > Ġcreate ( aClass : ĠClass < T >): T Ġ= Ġf () Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ }