package Ġcom . ch oo lo o . www . ch oo lo ol ib . ui . brief contact Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ 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 . Brief Contact 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 . permission . Permissions 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 . accounts . Accounts ViewState Ċ 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 . phones . Ph ones ViewState Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġjavax . inject . Inject Ċ Ċ @ Android EntryPoint Ċ open Ġclass ĠB rief Contact Fragment Ġ@ Inject Ġconstructor () Ġ: ĠBase Fragment < Brief Contact ViewState >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġcontent View Ġby Ġlazy Ġ{ Ġbinding . root Ġ} ĊĠĠĠ Ġoverride Ġval Ġview State : ĠB rief Contact ViewState Ġby Ġview Models () ĊĊĠĠĠ Ġprotected Ġval Ġbinding Ġby Ġlazy Ġ{ ĠB rief Contact Binding . inflate ( layout Inflater ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġph ones ViewState : ĠPh ones ViewState Ġby Ġactivity ViewModels () ĊĠĠĠ Ġprivate Ġval Ġaccounts ViewState : ĠAccounts ViewState Ġby Ġactivity ViewModels () ĊĠĠĠ Ġprivate Ġval Ġph ones Fragment Ġby Ġlazy Ġ{ Ġfragment Factory . get Ph ones Fragment ( view State . contact Id . value ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġaccounts Fragment Ġby Ġlazy Ġ{ Ġfragment Factory . get Accounts Fragment ( view State . contact Id . value ) Ġ} ĊĊĠĠĠ Ġ@ 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 Ġpermissions : ĠPermissions Interactor ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġcall Navig ations : ĠCall Navig ations Interactor ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Setup () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbrief Contact Button Sms . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Sms () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Button Call . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Call () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbrief Contact Button Edit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbrief Contact Button Delete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbrief Contact Star Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action Star ( it . is Activated ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbrief Contact Button History . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State . on Action History () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview State . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Name . observe ( this @ Brief Contact Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . brief Contact Text Name . text Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Image . observe ( this @ Brief Contact Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . brief Contact Image . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image URI ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġit Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Star Icon Visible . observe ( this @ Brief Contact Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . brief Contact Star Button . isVisible Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Star Icon Activated . observe ( this @ Brief Contact Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . brief Contact Star Button . is Activated Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Event . observe ( this @ Brief Contact Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . if New ?. let ( call Navig ations :: call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Contact Delete Event . observe ( this @ Brief Contact Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . if New ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog s . ask For Validation ( R . string . explain _ delete _ contact ) Ġ{ Ġbl Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bl ) ĠonDelete Confirmed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow History Event . observe ( this @ Brief Contact Fragment ) Ġ{ Ġev Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġev . if New ?. let Ġ{ Ġpromp ts . show Fragment ( fragment Factory . get Recent s Fragment ( it )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Contact Id ( args . getLong ( ARG _ CONTACT _ ID )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġchild FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( binding . brief Contact Accounts Fragment Container . id , Ġaccounts Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Now () ĊĊĠĠĠĠĠĠĠ Ġchild FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( binding . brief Contact Ph ones Fragment Container . id , Ġph ones Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Now () ĊĊĠĠĠĠĠĠĠ Ġaccounts ViewState . isEmpty . observe ( this @ Brief Contact Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . brief Contact Accounts Fragment Container . isVisible Ġ= Ġ! it ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġph ones ViewState . isEmpty . observe ( this @ Brief Contact Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . brief Contact Ph ones Fragment Container . isVisible Ġ= Ġ! it ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠARG _ CONTACT _ ID Ġ= Ġ" contact _ id " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( contact Id : ĠLong ) Ġ= ĠB rief Contact Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Long ( ARG _ CONTACT _ ID , Ġcontact Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }