package Ġcom . ch oo lo o . www . ch oo lo ol ib . ui . recent Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġcom . ch oo lo o . www . ch oo lo ol ib . R Ċ import Ġcom . ch oo lo o . www . ch oo lo ol ib . databinding . Recent Binding Ċ import Ġcom . ch oo lo o . www . ch oo lo ol ib . di . factory . fragment . Fragment Factory Ċ import Ġcom . ch oo lo o . www . ch oo lo ol ib . inter actor . call . Call Navig ations Interactor Ċ import Ġcom . ch oo lo o . www . ch oo lo ol ib . inter actor . dialog . Dialog s Interactor Ċ import Ġcom . ch oo lo o . www . ch oo lo ol ib . inter actor . prompt . Pro mp ts Interactor Ċ import Ġcom . ch oo lo o . www . ch oo lo ol ib . ui . base . Base Fragment Ċ import Ġcom . ch oo lo o . www . ch oo lo ol ib . ui . recent s . Recent s ViewState Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġjavax . inject . Inject Ċ Ċ @ Android EntryPoint Ċ class ĠRecent Fragment Ġ@ Inject Ġconstructor () Ġ: ĠBase Fragment < Recent ViewState >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġcontent View Ġby Ġlazy Ġ{ Ġbinding . root Ġ} ĊĠĠĠ Ġoverride Ġval Ġview State : ĠRecent ViewState Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġval Ġhistory ViewState : ĠRecent s ViewState Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġval Ġbinding Ġby Ġlazy Ġ{ ĠRecent Binding . inflate ( layout Inflater ) Ġ} ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġpromp ts : ĠPro mp ts Interactor ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġdialog s : ĠDialog s Interactor ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġfragment Factory : ĠFragment Factory ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġcall Navig ations : ĠCall Navig ations Interactor ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Setup () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Button Sms . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Sms () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Button Call . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Call () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Button Block . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Block (! view State . is Block Button Activated . value !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Button Delete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Button Contact . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Open Contact () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Button Wh ats app . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Open Wh ats app () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Button Add Contact . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Add Contact () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Button Show History . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Show History () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview State . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Id . value Ġ= Ġargs . getLong ( ARG _ REC ENT _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Uri . observe ( this @ Recent Fragment , Ġbinding . recent Contact Image :: setImage URI ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Image . observe ( this @ Recent Fragment , Ġbinding . recent Type Image :: setImage Drawable ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . observe ( this @ Recent Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recent Text Name . text Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime String . observe ( this @ Recent Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recent Text Time . text Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration String . observe ( this @ Recent Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ Ġbinding . recent Text Duration . text Ġ= Ġit Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recent Text Duration . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recent Image Duration . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Contact Visible . observe ( this @ Recent Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recent Button Contact . isVisible Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Add Contact Visible . observe ( this @ Recent Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recent Button Add Contact . isVisible Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Block Button Visible . observe ( this @ Recent Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recent Button Block . isVisible Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Block Button Activated . observe ( this @ Recent Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recent Button Block . is Activated Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Event . observe ( this @ Recent Fragment ) Ġ{ Ġev Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġev . if New ?. let ( call Navig ations :: call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Contact Event . observe ( this @ Recent Fragment ) Ġ{ Ġev Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġev . if New ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpromp ts . show Fragment ( fragment Factory . getB rief Contact Fragment ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Recent Event . observe ( this @ Recent Fragment ) Ġ{ Ġev Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġev . if New ?. let Ġ{ Ġpromp ts . show Fragment ( fragment Factory . get Recent Fragment ( it )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow History Event . observe ( this @ Recent Fragment ) Ġ{ Ġev Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġev . if New ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpromp ts . show Fragment ( fragment Factory . get Recent s Fragment ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Recent Delete Event . observe ( this @ Recent Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . if New ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog s . ask For Validation ( R . string . explain _ delete _ recent ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġview State . on Confirm Delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhistory ViewState . item Clicked Event . observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . if New ?. let Ġ{ Ġrecent Ġ-> Ġview State . on Recent Click ( recent . id ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠARG _ REC ENT _ ID Ġ= Ġ" recent _ id " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( recent Id : ĠLong ) Ġ= ĠRecent Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Long ( ARG _ REC ENT _ ID , Ġrecent Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }