package Ġcom . example . dog ger Ċ Ċ import Ġandroid . content .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . ListView Ċ import Ġkotlinx . android . synt hetic . main . activity _ du en io _ inicio .* Ċ Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . ActionBar Drawer Toggle Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . view . Gravity Compat Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġcom . google . android . material . navigation . Navigation View Ċ import Ġandroid . util . Log Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġandroid . widget . TextView Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . Firebase User Ċ import Ġcom . google . firebase . database .* ĊĊ Ċ private Ġval ĠPOS IC ION _ P ASE AD OR _ REQUEST Ġ= Ġ 1 Ċ Ċ class ĠDu en io Inicio Activity Ġ: ĠAppCompatActivity (), ĠNavigation View . On Navigation ItemSelected Listener Ġ{ ĊĠĠĠ Ġvar Ġarray Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ Ġ" 9 Ġde Ġj ul io Ġ 1 0 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 1 0 Ġde Ġj ul io Ġ 1 0 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 1 1 Ġde Ġj ul io Ġ 1 1 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 1 2 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 1 3 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 1 4 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 1 5 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 1 6 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 1 7 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 1 8 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 1 9 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 2 0 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 2 1 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 2 2 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 2 3 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 2 4 Ġde Ġj ul io Ġ 0 9 : 0 0 ", ĊĠĠĠĠĠĠĠ Ġ" 2 5 Ġde Ġj ul io Ġ 0 9 : 0 0 " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvar Ġn ro P ase ador Ġ= Ġ"+ 5 4 9 Ġ 1 1 Ġ 3 0 9 0 Ġ 8 3 9 9 " Ġ// Ġcontains Ġspaces . ĊĊĊĠĠĠ Ġlateinit Ġvar Ġtoolbar : ĠToolbar ĊĠĠĠ Ġlateinit Ġvar Ġdrawer Layout : ĠDraw er Layout ĊĠĠĠ Ġlateinit Ġvar Ġnav View : ĠNavigation View ĊĠĠĠ Ġlateinit Ġvar Ġservice : ĠApi Service Du en io ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauth : ĠFirebase Auth ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser : ĠFirebase User ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdatabase : ĠFirebase Database ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdf Reference : ĠDatabase Reference ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main _ du en io ) ĊĊĠĠĠĠĠĠĠ Ġval Ġretrofit : ĠRet rofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl (" http :// 1 9 2 . 1 6 8 . 2 0 5 . 1 0 9 : 8 0 8 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġthis . service Ġ= Ġretrofit . create ( ApiService Du en io :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter ( this , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . list _ view _ item , Ġarray ) ĊĊĠĠĠĠĠĠĠ Ġval ĠlistView : ListView Ġ= ĠfindViewById ( R . id . recipe _ list _ view ) ĊĠĠĠĠĠĠĠ ĠlistView . setAdapter ( adapter ) ĊĊĠĠĠĠĠĠĠ Ġdatabase Ġ= ĠFirebase Database . getInstance () ĊĠĠĠĠĠĠĠ Ġdf Reference Ġ= Ġdatabase . getReference () ĊĠĠĠĠĠĠĠ Ġauth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠĠĠĠĠ Ġuser Ġ= Ġauth . currentUser !! ĊĊĠĠĠĠĠĠĠ Ġmap Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Button Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfab _ btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Wh ats app ( n ro P ase ador ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNavigation ĠDraw er ĊĠĠĠĠĠĠĠ Ġtoolbar Ġ= ĠfindViewById ( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġdrawer Layout Ġ= ĠfindViewById ( R . id . drawer _ layout ) ĊĠĠĠĠĠĠĠ Ġnav View Ġ= ĠfindViewById ( R . id . nav _ view ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoggle Ġ= ĠAction Bar Drawer Toggle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġdrawer Layout , Ġtoolbar , Ġ 0 , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdrawer Layout . add Drawer Listener ( toggle ) ĊĠĠĠĠĠĠĠ Ġtoggle . sync State () ĊĠĠĠĠĠĠĠ Ġnav View . set Navigation ItemSelected Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġset Nav Header () ĊĠĠĠĠĠĠĠ Ġset Shared Pref () ĊĊĠĠĠĠĠĠĠ Ġ/** sn ip Ġ**/ ĊĠĠĠĠĠĠĠ Ġval Ġintent Filter Ġ= ĠIntent Filter () ĊĠĠĠĠĠĠĠ Ġintent Filter . addAction (" com . package . ACTION _ LOG OUT ") ĊĠĠĠĠĠĠĠ Ġregister Receiver ( object Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" on Receive ", Ġ" Logout Ġin Ġprogress ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// At Ġthis Ġpoint Ġyou Ġshould Ġstart Ġthe Ġlogin Ġactivity Ġand Ġfinish Ġthis Ġone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}, Ġintent Filter ) ĊĠĠĠĠĠĠĠ Ġ// ** Ġsn ip Ġ** // ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Nav Header () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnavigation View Ġ= ĠfindViewById ( R . id . nav _ view ) Ġas ĠNavigation View ĊĠĠĠĠĠĠĠ Ġval Ġheader View Ġ= Ġnavigation View . getHeader View ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġnav Username Ġ= Ġheader View . findViewById ( R . id . txt Name ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġnav Type User Ġ= Ġheader View . findViewById ( R . id . txt Type User ) Ġas ĠTextView ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Key Ġ= Ġuser . uid ĊĠĠĠĠĠĠĠ Ġdf Reference . child (" User "). child ( user Key ). add Value EventListener ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserName Ġ= Ġdata Snapshot . child (" name "). getValue ( String :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Type Ġ= Ġdata Snapshot . child (" user Type "). getValue ( String :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Username . text Ġ= ĠuserName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Type User . text Ġ= Ġuser Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( database Error : ĠDatabase Error ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Shared Pref () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Key Ġ= Ġuser . uid ĊĠĠĠĠĠĠĠ Ġdf Reference . child (" User "). child ( user Key ). add Value EventListener ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshared Preference Ġ= Ġget SharedPreferences (" DOG GER - USER ", Context . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġshared Preference . edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserName Ġ= Ġdata Snapshot . child (" name "). getValue ( String :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn ro Cel Ġ= Ġdata Snapshot . child (" n ro Cel "). getValue ( String :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Type Ġ= Ġdata Snapshot . child (" user Type "). getValue ( String :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp ase ador uid Ġ= Ġdata Snapshot . child (" id _ p ase ador "). getValue ( String :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlat = Ġ- 3 4 . 6 0 3 7 3 8 9 // ĠTODO : Ġdata Snapshot . child (" lat "). getValue ( Float :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlon Ġ= Ġ- 5 8 . 3 8 1 5 7 0 4 // ĠTODO : Ġdata Snapshot . child (" lon "). getValue ( Float :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString (" userName ", userName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString (" n ro Cel ", n ro Cel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString (" user Type ", user Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString (" p ase ador uid ", p ase ador uid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Double (" lat ", lat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Double (" lon ", lon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( database Error : ĠDatabase Error ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠSharedPreferences . Editor . put Double ( key : ĠString , Ġdouble : ĠDouble ) Ġ= ĊĠĠĠĠĠĠĠ Ġput Long ( key , Ġjava . lang . Double . double To Raw Long Bits ( double )) ĊĊĠĠĠ Ġfun Ġon Button Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠPos icion P ase ador Activity :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġval Ġshared Preference Ġ= Ġ Ġget SharedPreferences (" DOG GER - USER ", Context . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġval Ġp ase ador uid Ġ= Ġshared Preference . getString (" p ase ador uid ", Ġ" default ") ĊĠĠĠĠĠĠĠ Ġthis . service . tracing ( Follow Request ( p ase ador uid Ġas ĠString , true )). enqueue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCallback < Follow Response > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall : ĠCall < Follow Response >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResponse < Follow Response > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠFollow Response Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ("[ FOLLOW - RESPONSE ]", ĠFollow Response . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠPOS IC ION _ P ASE AD OR _ REQUEST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Follow Response >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ("[ FOLLOW - ERROR ]", t . message . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" No Ġse Ġpuede Ġseguir Ġal Ġp ase ador ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Wh ats app ( to Number : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnumber Ġ= Ġto Number . replace ("+ ", Ġ""). replace (" Ġ", Ġ"") ĊĊĠĠĠĠĠĠĠ Ġval Ġsend Intent Ġ= ĠIntent (" android . intent . action . MAIN ") ĊĠĠĠĠĠĠĠ Ġsend Intent . component Ġ= ĠComponent Name (" com . whats app ", Ġ" com . whats app . Conversation ") ĊĠĠĠĠĠĠĠ Ġsend Intent . putExtra (" jid ", Ġ"$ number @ s . whats app . net ") ĊĠĠĠĠĠĠĠ ĠstartActivity ( send Intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠNavigation ĠDraw er ĊĠĠĠ Ġoverride Ġfun Ġon Navigation ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ profile Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠUser Profile Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" View ", Ġ" READ ONLY ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ update Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠUser Profile Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" View ", Ġ" UPDATE ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ logout Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbroadcast Intent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbroadcast Intent . action Ġ= Ġ" com . package . ACTION _ LOG OUT " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Broadcast ( broadcast Intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠLogin Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdrawer Layout . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ