package Ġuk . co . app sb yst udio . ge osh are . maps Ċ Ċ import Ġandroid . arch . lifecycle . Mutable LiveData Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . location . Location Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . google . android . gms . maps . model . Marker Ċ import Ġuk . co . app sb yst udio . ge osh are . R Ċ import Ġuk . co . app sb yst udio . ge osh are . utils . Settings Preferences Helper Ċ import Ġuk . co . app sb yst udio . ge osh are . utils . convert Date Ċ import Ġuk . co . app sb yst udio . ge osh are . utils . distance Ċ import Ġuk . co . app sb yst udio . ge osh are . utils . firebase . Database Locations Ċ import Ġuk . co . app sb yst udio . ge osh are . utils . geo coder . Geo coding From LatLng Task Ċ Ċ class ĠMaps Presenter Impl ( private Ġval Ġview : ĠMaps View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġsettings Preferences Helper : ĠSettings Preferences Helper ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġmaps Helper : ĠMaps Helper Impl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġinter actor : ĠMaps Interactor Impl ): ĊĠĠĠĠĠĠĠ ĠMaps Presenter , ĠMaps Interactor . On Firebase Request Finished Listener , ĠMaps Helper . On Network StateChanged Listener , ĠMaps Helper . On Share Preferences Changed Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlive Data Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġoverride Ġfun ĠgetStatic Friends ( storage Directory : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġinter actor . static Friends ( storage Directory , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Tracking Friends ( storage Directory : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġinter actor . tracking Friends ( storage Directory , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Tracking Sync ( sync : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinter actor . tracking Sync ( sync ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Tracking State ( tracking State : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . update Tracking Button ( tracking State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmove Map Camera ( lat Lng : ĠLat Lng , Ġzoom Level : ĠInt , Ġanimated : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . update Camera Position ( lat Lng , Ġzoom Level , Ġanimated ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Near by Friends Count ( lat Lng : ĠLat Lng , Ġfriends Marker List : ĠMap < String ?, ĠMarker ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġradius Ġ= Ġsettings Preferences Helper ?. near by Radius () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( marker Id Ġin Ġfriends Marker List . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarker Location Ġ= Ġfriends Marker List [ marker Id ]?. position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Location Ġ= ĠLocation (" marker Temp Location ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Temp Location Ġ= ĠLocation (" my Temp Location ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( marker Location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Location . latitude Ġ= Ġmarker Location . latitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Location . longitude Ġ= Ġmarker Location . longitude ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Temp Location . latitude Ġ= Ġlat Lng . latitude ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Temp Location . longitude Ġ= Ġlat Lng . longitude ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( radius Ġ!= Ġnull Ġ&& Ġmy Temp Location . distance To ( temp Location ) Ġ< Ġradius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview . update Near by Text ( count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Map Style () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( settings Preferences Helper Ġ!= Ġnull Ġ&& Ġsettings Preferences Helper . map Theme () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Map Style ( R . raw . map _ style _ dark ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Map Style ( R . raw . map _ style ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Bottom Sheet State ( state : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . set Bottom Sheet State ( state ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Bottom Sheet ( uid : ĠString , Ġstart LatLng : ĠLat Lng , Ġend LatLng : ĠLat Lng , Ġtimestamp : ĠLong ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠGeo coding From LatLng Task ( end LatLng . latitude , Ġend LatLng . longitude , Ġlive Data ). execute () ĊĠĠĠĠĠĠĠ Ġview . update Bottom Sheet Text ( uid , Ġlive Data , Ġtimestamp ?. convert Date (), Ġdistance ( start LatLng , Ġend LatLng )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Near by Friends Radius ( center Point : ĠLat Lng ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . update Near by Radius Circle ( settings Preferences Helper ?. near by Radius (), Ġcenter Point ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetError ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . show Error ( message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Network Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġmaps Helper . register Network Receiver ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunregister Network Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġmaps Helper . unregister Network Receiver ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Settings Preferences Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġmaps Helper . register SharedPreferences Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunregister Settings Preferences Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġmaps Helper . unregister SharedPreferences Listener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlocation Added ( key : ĠString ?, Ġmarker Pointer : ĠBitmap ?, Ġdatabase Locations : ĠDatabase Locations ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . add Friend Marker ( key , Ġmarker Pointer , Ġdatabase Locations ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlocation Changed ( key : ĠString ?, Ġdatabase Locations : ĠDatabase Locations ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . update Friend Marker ( key , Ġdatabase Locations ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlocation Removed ( key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . remove Friend Marker ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmarker Exists ( uid : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġview . marker Exists ( uid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror ( error : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . show Error ( error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Network Receiver ( broadcast Receiver : ĠBroadcast Receiver ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . register Network Receiver ( broadcast Receiver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġavailable ( state : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . network Available () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . network Error (" No Ġnetwork Ġconnection Ġdetected ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnetwork Type ( type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinter actor . tracking Sync ( true ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== Ġ 1 Ġ&& Ġsettings Preferences Helper Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinter actor . tracking Sync ( settings Preferences Helper . mobile Sync State () !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunregister Network Receiver ( broadcast Receiver : ĠBroadcast Receiver ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . unregister Network Receiver ( broadcast Receiver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdated Near by Radius () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . update Radius Circle Size ( settings Preferences Helper ?. near by Radius ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Theme () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( settings Preferences Helper Ġ!= Ġnull Ġ&& Ġsettings Preferences Helper . map Theme () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Map Style ( R . raw . map _ style _ dark ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Map Style ( R . raw . map _ style ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġinter actor . remove Listeners () ĊĠĠĠ Ġ} Ċ }