package Ġcom . bad oo . ri bs . android Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . bad oo . ri bs . android . activity starter . Activity Starter Ċ import Ġcom . bad oo . ri bs . android . activity starter . Activity Starter Impl Ċ import Ġcom . bad oo . ri bs . android . dialog . Dialog Ċ import Ġcom . bad oo . ri bs . android . dialog . Dialog Launcher Ċ import Ġcom . bad oo . ri bs . android . dialog . to AlertDialog Ċ import Ġcom . bad oo . ri bs . android . permission requester . Permission Request er Impl Ċ import Ġcom . bad oo . ri bs . android . request code . Request Code Registry Ċ import Ġcom . bad oo . ri bs . core . R ib Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġjava . util . Weak HashMap Ċ Ċ /** Ċ Ġ* ĠHelper Ġclass Ġfor Ġroot Ġ[ R ib ] Ġintegration . Ċ Ġ* Ċ Ġ* ĠAlso Ġoffers Ġbase Ġfunctionality Ġto Ġsatisfy Ġdependencies Ġof ĠAndroid - related Ġfunctionality Ċ Ġ* Ġdown Ġthe Ġtree : Ċ Ġ* Ġ- Ġ[ Dialog Launcher ] Ċ Ġ* Ġ- Ġ[ Activity Starter ] Ċ Ġ* Ċ Ġ* ĠFeel Ġfree Ġto Ġnot Ġextend Ġthis Ġand Ġuse Ġyour Ġown Ġintegration Ġpoint Ġ- Ġin Ġthis Ġcase , Ċ Ġ* Ġdon 't Ġforget Ġto Ġtake Ġa Ġlook Ġhere Ġwhat Ġmethods Ġneeds Ġto Ġbe Ġforwarded Ġto Ġthe Ġroot ĠNode . Ċ Ġ*/ Ċ abstract Ġclass ĠR ib Activity Ġ: ĠAppCompatActivity (), ĠDialog Launcher Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdialog s : ĠWeak HashMap < Dialog <* >, ĠAlertDialog > Ġ= ĊĠĠĠĠĠĠĠ ĠWeak HashMap () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrequest Code Registry : ĠRequest Code Registry ĊĊĠĠĠ Ġval Ġactivity Starter : ĠActivity Starter Impl Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Starter Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Code Registry Ġ= Ġrequest Code Registry ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġpermission Request er : ĠPermission Request er Impl Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠPermission Request er Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Code Registry Ġ= Ġrequest Code Registry ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġlateinit Ġvar Ġroot : ĠR ib ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġrequest Code Registry Ġ= ĠRequest Code Registry ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġroot Ġ= Ġcreate R ib ( savedInstanceState ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . on Attach () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . attach To View ( root ViewGroup ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent ?. action Ġ== ĠIntent . ACTION _ VIEW ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Deep Link ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdis pos ables Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġfun Ġhandle Deep Link ( intent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġworkflow Factory . invoke ( intent )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables . add ( it . subscribe ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġval Ġworkflow Factory : Ġ( Intent ) Ġ-> ĠObservable < *> ? Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġval Ġroot ViewGroup : ĠViewGroup ĊĊĠĠĠ Ġabstract Ġfun Ġcreate R ib ( savedInstanceState : ĠBundle ?): ĠR ib ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġroot . node . onStart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġroot . node . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġroot . node . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġroot . node . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġroot . node . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġrequest Code Registry . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Low Memory () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Low Memory () ĊĠĠĠĠĠĠĠ Ġroot . node . on Low Memory () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġdialog s . values . forEach Ġ{ Ġit . dismiss () Ġ} ĊĠĠĠĠĠĠĠ Ġroot . node . detach From View () ĊĠĠĠĠĠĠĠ Ġroot . node . on Detach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! root . node . handle Back Press ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Starter . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ= ĊĠĠĠĠĠĠĠ Ġpermission Request er . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĊĠĠĠ Ġoverride Ġfun Ġshow ( dialog : ĠDialog <* >, ĠonClose : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog s [ dialog ] Ġ= Ġdialog . to AlertDialog ( this , ĠonClose ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhide ( dialog : ĠDialog <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog s [ dialog ]?. dismiss () ĊĠĠĠ Ġ} Ċ } Ċ