package Ġcom . alex styl . special dates . contact Ċ Ċ import Ġandroid . content . Intent Ċ import Ġcom . alex styl . special dates . Crash And Error Tracker Ċ import Ġcom . alex styl . special dates . Mem ento Constants Ċ import Ġcom . alex styl . special dates . Optional ĊĊ Ċ class ĠContact Intent Extractor ( val Ġtracker : ĠCrash And Error Tracker , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontacts Provider : ĠContact s Provider ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠEX TRA _ CONTACT _ SOURCE Ġ= Ġ"${ Mem ento Constants . PACKAGE }. extra : source " ĊĠĠĠĠĠĠĠ Ġval ĠEX TRA _ CONTACT _ ID Ġ= Ġ"${ Mem ento Constants . PACKAGE }. extra : contact Id " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Contact Extra ( intent : ĠIntent ): ĠOptional < Contact > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontact ID Ġ= Ġintent . getLong Extra ( EXTRA _ CONTACT _ ID , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( contact ID Ġ== Ġ- 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOptional . abs ent () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ@ Contact Source Ġval Ġcontact Source Ġ= Ġintent . getInt Extra ( EXTRA _ CONTACT _ SOURCE , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( contact Source Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOptional . abs ent () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġcontact For ( contact ID , Ġcontact Source ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġcontact For ( contact ID : ĠLong , Ġcontact Source : ĠInt ): ĠOptional < Contact > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional ( contacts Provider . get Contact ( contact ID , Ġcontact Source )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠContact NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtracker . track ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional . abs ent () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊ