package Ġblack burn . io . catch up . ui . detail Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġblack burn . io . catch up . R Ċ import Ġblack burn . io . catch up . app . Base Fragment Ċ import Ġblack burn . io . catch up . di . module . G lide App Ċ import Ġblack burn . io . catch up . model . Place Info Ċ import Ġcom . amazonaws . amplify . generated . graphql . Batch Get Catch Up Contacts Query Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . bump tech . glide . request . target . Simple Target Ċ import Ġcom . bump tech . glide . request . transition . Transition Ċ import Ġcom . google . android . gms . maps . Camera Update Factory Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . Maps Initializer Ċ import Ġcom . google . android . gms . maps . model . Bitmap Descriptor Factory Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . google . android . gms . maps . model . Marker Ċ import Ġcom . google . android . gms . maps . model . Marker Options Ċ import Ġjp . was ab eef . glide . transform ations . Crop Circle Transformation Ċ import Ġkotlinx . android . synt hetic . main . fragment _ promise _ detail _ map . view .* Ċ import Ġkotlinx . android . synt hetic . main . view _ promise _ marker . view .* Ċ Ċ class ĠPromise Detail Map Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠ Ġprivate Ġvar Ġgoogle Map : ĠGoogle Map ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġdestination Marker : ĠMarker ? Ġ= Ġnull ĊĠ Ġprivate Ġval Ġcurrent Member Markers Ġ= Ġmutable Map Of < String , ĠMarker >() ĊĊĠ Ġprivate Ġvar Ġpromise Name Ġ= Ġ"" ĊĠ Ġprivate Ġvar Ġplace Info : ĠPlace Info ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġcontact List Ġ= ĠlistOf < Batch Get Catch Up Contacts Query . Batch Get Catch Up Contact >() ĊĠ Ġprivate Ġvar Ġuser Phone Ġ= Ġ"" ĊĊĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ promise _ detail _ map , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġview . promise Detail MapView . onCreate ( savedInstanceState ) ĊĠĠĠ Ġview . promise Detail MapView . on Resume () ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ ĠMaps Initializer . initialize ( activity ?. application Context ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġview . promise Detail MapView . getMap Async Ġ{ ĊĠĠĠĠĠ Ġgoogle Map Ġ= Ġit ĊĊĠĠĠĠĠ Ġupdate Destination ( promise Name , Ġplace Info ) ĊĠĠĠĠĠ Ġupdate Contacts ( contact List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġview ĊĠ Ġ} ĊĊĠ Ġfun Ġupdate User Location ( phone : ĠString , Ġlatitude : ĠDouble , Ġlongitude : ĠDouble ) Ġ{ ĊĠĠĠ Ġuser Phone Ġ= Ġphone ĊĠĠĠ Ġcurrent Member Markers [ phone ]?. position Ġ= ĠLat Lng ( latitude , Ġlongitude ) ĊĠ Ġ} ĊĊĠ Ġfun Ġupdate Destination ( name : ĠString , Ġplace : ĠPlace Info ?) Ġ{ ĊĠĠĠ Ġplace Info Ġ= Ġplace ĊĠĠĠ Ġpromise Name Ġ= Ġname ĊĊĠĠĠ Ġgoogle Map ?. let Ġ{ ĊĠĠĠĠĠ Ġplace Info ?. let Ġ{ Ġplace Ġ-> ĊĠĠĠĠĠĠĠ Ġset Destination ( ĊĠĠĠĠĠĠĠĠĠ Ġcreate Marker ( name , Ġplace . address , Ġplace . latitude , Ġplace . longitude ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġupdate Contacts ( contacts : ĠList < Batch Get Catch Up Contacts Query . Batch Get Catch Up Contact >) Ġ{ ĊĠĠĠ Ġcontact List Ġ= Ġcontacts ĊĊĠĠĠ Ġgoogle Map ?. let Ġ{ ĊĠĠĠĠĠ Ġcontacts . forEach Ġ{ Ġcontact Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġphone Ġ= Ġcontact . phone () ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcontact . nickname () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġlatitude Ġ= Ġcontact . latitude () Ġ?: Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġval Ġlongitude Ġ= Ġcontact . longitude () Ġ?: Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġval Ġprofile Image Path Ġ= Ġcontact . profile Image Path () Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠ Ġif Ġ( current Member Markers [ phone ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠsetCurrent Member Marker ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphone , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Image Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Marker ( name , Ġ"", Ġlatitude , Ġlongitude ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Phone . isNotEmpty () Ġ&& Ġuser Phone . equals ( phone )) Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠ Ġcurrent Member Markers [ phone ]?. position Ġ= ĠLat Lng ( latitude , Ġlongitude ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġset Destination ( marker Options : ĠMarker Options ) Ġ{ ĊĠĠĠ Ġif Ġ( destination Marker Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġdestination Marker Ġ= Ġgoogle Map ?. add Marker ( marker Options ) ĊĠĠĠĠĠ Ġgoogle Map ?. move Camera ( Camera Update Factory . new LatLng ( marker Options . position )) ĊĠĠĠĠĠ Ġgoogle Map ?. animate Camera ( Camera Update Factory . zoom To ( 1 5 f )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠsetCurrent Member Marker ( phone : ĠString , Ġimage Path : ĠString , Ġmarker Options : ĠMarker Options ) Ġ{ ĊĠĠĠ Ġgoogle Map ?. add Marker ( marker Options )?. let Ġ{ Ġmarker Ġ-> ĊĠĠĠĠĠ Ġval Ġmarker View Ġ= ĠLayoutInflater . from ( activity ). inflate ( R . layout . view _ promise _ marker , Ġnull ) ĊĠĠĠĠĠ Ġmarker . setIcon ( Bitmap Descriptor Factory . from Bitmap ( bitmap From ( marker View ))) ĊĊĠĠĠĠĠ Ġval Ġtarget Ġ= Ġobject Ġ: ĠSimple Target < Bitmap >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠBitmap , Ġtransition : ĠTransition < in ĠBitmap > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmarker View . user Profile ImageView . setImage Bitmap ( resource ) ĊĠĠĠĠĠĠĠĠĠ Ġcurrent Member Markers [ phone ]?. setIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Descriptor Factory . from Bitmap ( bitmap From ( marker View )) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ ĠG lide App . with ( this ) ĊĠĠĠĠĠĠĠ Ġ. as Bitmap () ĊĠĠĠĠĠĠĠ Ġ. load ( image Path ) ĊĠĠĠĠĠĠĠ Ġ. apply ( RequestOptions . bitmap Transform ( Crop Circle Transformation ())) ĊĠĠĠĠĠĠĠ Ġ. override ( 8 0 ) ĊĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . profile _ default ) ĊĠĠĠĠĠĠĠ Ġ. into ( target ) ĊĊĠĠĠĠĠ Ġcurrent Member Markers [ phone ] Ġ= Ġmarker ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġbitmap From ( view : ĠView ): ĠBitmap Ġ{ ĊĠĠĠ Ġval Ġdisplay Metrics Ġ= ĠDisplay Metrics () ĊĠĠĠ Ġactivity !!. window Manager . default Display . get Metrics ( display Metrics ) ĊĠĠĠ Ġview . layout Params Ġ= ĠViewGroup . LayoutParams ( ViewGroup . LayoutParams . WRAP _ CONTENT , ĠViewGroup . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠ Ġview . measure ( display Metrics . width Pixels , Ġdisplay Metrics . height Pixels ) ĊĠĠĠ Ġview . layout ( 0 , Ġ 0 , Ġdisplay Metrics . width Pixels , Ġdisplay Metrics . height Pixels ) ĊĠĠĠ Ġview . build Drawing Cache () ĊĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( view . meas ured Width , Ġview . meas ured Height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠ Ġview . draw ( Canvas ( bitmap )) ĊĠĠĠ Ġreturn Ġbitmap ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Marker ( name : ĠString , Ġaddress : ĠString , Ġlat : ĠDouble , Ġlng : ĠDouble ): ĠMarker Options Ġ{ ĊĠĠĠ Ġval Ġmarker Options Ġ= ĠMarker Options () ĊĠĠĠ Ġval Ġplace Ġ= ĠLat Lng ( lat , Ġlng ) ĊĠĠĠ Ġmarker Options . position ( place ) ĊĠĠĠ Ġmarker Options . title ( name ) ĊĠĠĠ Ġmarker Options . snippet ( address ) ĊĠĠĠ Ġreturn Ġmarker Options ĊĠ Ġ} Ċ }