package Ġcom . example . base . presentation Ċ Ċ import Ġrx . Subscription Ċ import Ġrx . subscriptions . Composite Subscription Ċ Ċ abstract Ġclass ĠBase Presenter < View : ĠBase View > Ġ{ ĊĊĠĠĠ Ġprotected Ġvar Ġview : ĠView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġprotected Ġfun Ġis View Attached () Ġ= Ġview Ġ!= Ġnull ĊĊĠĠĠ Ġprotected Ġval Ġcomposite Subscription : ĠComposite Subscription Ġby Ġlazy Ġ{ ĠComposite Subscription () Ġ} ĊĊĠĠĠ Ġfun Ġview Attached ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . view Ġ= Ġview ĊĠĠĠĠĠĠĠ Ġon View Attached () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġview Detached () Ġ{ ĊĠĠĠĠĠĠĠ Ġunsubscribe Domain Actions () ĊĠĠĠĠĠĠĠ Ġon View Detached () ĊĠĠĠĠĠĠĠ Ġview Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠImplement Ġthis Ġmethod Ġto Ġperform Ġinitial isation , Ġsubscribe Ġto Ġany Ġreactive ĊĠĠĠĠ Ġ* Ġstreams / observable s Ġetc . Ġwhen Ġthe Ġview Ġis Ġattached . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon View Attached () ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠImplement Ġthis Ġmethod Ġto Ġstop Ġany Ġrunning Ġtasks Ġetc . Ġwhen Ġthe Ġview Ġis Ġdet ached . ĊĠĠĠĠ Ġ* ĠReactive Ġsubscriptions Ġwill Ġautomatically Ġbe Ġun subscribed Ġvia Ġunsubscribe Domain Actions () Ġif ĊĠĠĠĠ Ġ* Ġthey Ġare Ġadded Ġto Ġthe Ġcomposite Subscription Ġvia Ġperform Domain Action () ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon View Detached () ĊĊĠĠĠ Ġinline Ġprotected Ġfun Ġperform View Action ( action : ĠView . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. action () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġprotected Ġfun Ġperform Domain Action ( action : Ġ() Ġ-> ĠSubscription ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Subscription . add ( action ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġunsubscribe Domain Actions () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Subscription . clear () ĊĠĠĠ Ġ} Ċ }