package Ġcontacts . core . util Ċ Ċ import Ġcontacts . core . Contacts Ċ import Ġcontacts . core . Fields Ċ import Ġcontacts . core . entities . Contact Ċ import Ġcontacts . core . entities . Mutable Contact Ċ import Ġcontacts . core . equalTo Ċ Ċ /** Ċ Ġ* ĠReturns Ġthe Ġcontact Ġwith Ġall Ġof Ġthe Ġlatest Ġdata , Ġincluding Ġall Ċ Ġ* Ġ[ contacts . core . entities . Raw Contact ] s . Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġuseful Ġfor Ġgetting Ġthe Ġlatest Ġcontact Ġdata Ġafter Ġperforming Ġan Ġupdate . ĠThis Ġmay Ġreturn Ċ Ġ* Ġnull Ġif Ġthe Ġ[ Contact ] Ġno Ġlonger Ġexists Ġor Ġif Ġpermission Ġis Ġnot Ġgranted . Ċ Ġ* Ċ Ġ* ĠReturns Ġitself Ġif Ġthe Ġ[ Contact . id ] Ġis Ġnull , Ġindicating Ġthat Ġthis ĠContact Ġinstance Ġhas Ġnot Ġyet Ċ Ġ* Ġbeen Ġinserted Ġto Ġthe ĠDB . Ċ Ġ* Ċ Ġ* ĠSupports Ġprofile Ġand Ġnon - profile ĠContact s Ġwith Ġnative / custom Ġdata . Ċ Ġ* Ċ Ġ* Ġ## ĠFor Ġexisting Ġ( inserted ) Ġentities Ġonly Ċ Ġ* Ċ Ġ* ĠThis Ġfunction Ġwill Ġonly Ġwork Ġfor Ġentities Ġthat Ġhave Ġalready Ġbeen Ġinserted Ġinto Ġthe ĠContact s Ċ Ġ* ĠProvider Ġdatabase . ĠThis Ġmeans Ġthat Ġthis Ġis Ġonly Ġfor Ġentities Ġthat Ġhave Ġbeen Ġretrieved Ġusing Ċ Ġ* Ġquery Ġor Ġresult ĠAPIs . Ċ Ġ* Ċ Ġ* Ġ## ĠPermissions Ċ Ġ* Ċ Ġ* ĠThe Ġ[ contacts . core . Contacts Permissions . READ _ PERMISSION ] Ġis Ġrequired . ĠOtherwise , Ġnull Ġwill Ġbe Ġreturned Ċ Ġ* Ġif Ġthe Ġpermission Ġis Ġnot Ġgranted . Ċ Ġ* Ċ Ġ* Ġ## ĠThread ĠS afety Ċ Ġ* Ċ Ġ* ĠThis Ġshould Ġbe Ġcalled Ġin Ġa Ġbackground Ġthread Ġto Ġavoid Ġblocking Ġthe ĠUI Ġthread . Ċ Ġ*/ Ċ // Ġ[ ANDROID ĠX ] Ġ@ Worker Thread Ġ( not Ġusing Ġannotation Ġto Ġavoid Ġdependency Ġon Ġandroidx . annotation ) Ċ @ Jvm Over loads Ċ fun ĠContact . refresh ( contacts : ĠContact s , Ġcancel : Ġ() Ġ-> ĠBoolean Ġ= Ġ{ Ġfalse Ġ}): ĠContact ? Ġ= ĊĠĠĠ Ġif Ġ( id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcontacts . findFirst Contact With Id ( id , Ġcancel ) ĊĠĠĠ Ġ} Ċ Ċ /** Ċ Ġ* ĠSee Ġ[ Contact . refresh ]. Ċ Ġ* Ċ Ġ* Ġ## ĠFor Ġexisting Ġ( inserted ) Ġentities Ġonly Ċ Ġ* Ċ Ġ* ĠThis Ġfunction Ġwill Ġonly Ġwork Ġfor Ġentities Ġthat Ġhave Ġalready Ġbeen Ġinserted Ġinto Ġthe ĠContact s Ċ Ġ* ĠProvider Ġdatabase . ĠThis Ġmeans Ġthat Ġthis Ġis Ġonly Ġfor Ġentities Ġthat Ġhave Ġbeen Ġretrieved Ġusing Ċ Ġ* Ġquery Ġor Ġresult ĠAPIs . Ċ Ġ* Ċ Ġ* Ġ## ĠThread ĠS afety Ċ Ġ* Ċ Ġ* ĠThis Ġshould Ġbe Ġcalled Ġin Ġa Ġbackground Ġthread Ġto Ġavoid Ġblocking Ġthe ĠUI Ġthread . Ċ Ġ*/ Ċ // Ġ[ ANDROID ĠX ] Ġ@ Worker Thread Ġ( not Ġusing Ġannotation Ġto Ġavoid Ġdependency Ġon Ġandroidx . annotation ) Ċ @ Jvm Over loads Ċ fun ĠMutable Contact . refresh ( ĊĠĠĠ Ġcontacts : ĠContact s , ĊĠĠĠ Ġcancel : Ġ() Ġ-> ĠBoolean Ġ= Ġ{ Ġfalse Ġ} Ċ ): ĠMutable Contact ? Ġ= ĊĠĠĠ Ġif Ġ( id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcontacts . findFirst Contact With Id ( id , Ġcancel )?. to Mutable Contact () ĊĠĠĠ Ġ} Ċ Ċ internal Ġfun ĠContact s . findFirst Contact With Id ( ĊĠĠĠ Ġcontact Id : ĠLong , ĊĠĠĠ Ġcancel : Ġ() Ġ-> ĠBoolean Ċ ): ĠContact ? Ġ= ĊĠĠĠ Ġif Ġ( contact Id . is Profile Id ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprofile () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. query () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find ( cancel ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġquery () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( Fields . Contact . Id ĠequalTo Ġcontact Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find ( cancel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull () ĊĠĠĠ Ġ}