/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠAlex ander ĠW id ar Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġse . ge ec ity . android . ste er and put . favorite Ċ Ċ import Ġandroid . location . Location Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . observe Ċ import Ġkotlinx . android . synt hetic . main . fragment _ list .* Ċ import Ġorg . k oin . android . ext . android . inject Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ import Ġse . ge ec ity . android . domain . entities . Failure Ċ import Ġse . ge ec ity . android . domain . entities . Resource Ċ import Ġse . ge ec ity . android . domain . entities . Success Ċ import Ġse . ge ec ity . android . ste er and put . R Ċ import Ġse . ge ec ity . android . ste er and put . common . adapter . Station Adapter V 2 Ċ import Ġse . ge ec ity . android . ste er and put . common . logging . Firebase Logger V 2 Ċ import Ġse . ge ec ity . android . ste er and put . common . util . has F ine Location Permission Ċ import Ġse . ge ec ity . android . ste er and put . common . view . View Identifier Ċ import Ġse . ge ec ity . android . ste er and put . common . view . g one Ċ import Ġse . ge ec ity . android . ste er and put . common . view . visible Ċ import Ġse . ge ec ity . android . ste er and put . main . Main Comm Ċ Ċ class ĠF avorite Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfavorite ViewModel : ĠF avorite ViewModel Ġby ĠviewModel () ĊĠĠĠ Ġprivate Ġval Ġmain Comm : ĠMain Comm Ġby Ġinject () ĊĊĠĠĠ Ġprivate Ġval Ġfirebase Logger : ĠFirebase Logger V 2 Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġadapter : ĠStation Adapter V 2 Ġby Ġinject () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġconnection Error View : ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġempty View : ĠView ĊĊĠĠĠ Ġprivate Ġval Ġon Location : Ġ( Location ) Ġ-> ĠUnit Ġ= Ġ{ Ġlocation Ġ-> ĊĠĠĠĠĠĠĠ Ġadapter . location Ġ= Ġlocation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ list , Ġcontainer , Ġ Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġfirebase Logger . page View ( View Identifier . NEAR BY ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= Ġrequire Activity (). layout Inflater ĊĠĠĠĠĠĠĠ Ġinit Connection Error View ( layout Inflater ) ĊĠĠĠĠĠĠĠ Ġinit Empty View ( layout Inflater ) ĊĊĠĠĠĠĠĠĠ Ġlist Swipe Refresh Layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite ViewModel . fetch Station Objects () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmain Observer Ġ= Ġobject Ġ: ĠMain Comm . Main Observer Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlocation Permission Granted () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite ViewModel . location . observe ( this @ Favorite Fragment , Ġon Location ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġfavorite ViewModel . station Objects . observe ( this ) Ġ{ Ġstation Objects Resource Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( station Objects Resource ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource . Loading Ġ-> Ġlist Swipe Refresh Layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . stations Ġ= Ġstation Objects Resource . body ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Swipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Error View . g one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( station Objects Resource . body . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty View . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty View . g one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Swipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . g one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Error View . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty View . g one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( has F ine Location Permission ( require Context ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite ViewModel . location . observe ( this , Ġon Location ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmain Comm . add Observer ( main Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġmain Comm . remove Observer ( main Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Connection Error View ( layout Inflater : ĠLayoutInflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconnection Error View Ġ= Ġlayout Inflater . inflate ( R . layout . view _ list _ connection _ error , Ġlist _ list container , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġconnection Error View . g one () ĊĠĠĠĠĠĠĠ Ġlist _ list container . addView ( connection Error View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFrame Layout . LayoutParams ( ViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Empty View ( layout Inflater : ĠLayoutInflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġempty View Ġ= Ġlayout Inflater . inflate ( R . layout . frag met _ favorites _ empty view , Ġre cyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ). apply Ġ{ Ġvisibility Ġ= ĠView . GONE Ġ} ĊĠĠĠĠĠĠĠ Ġlist _ list container . addView ( empty View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFrame Layout . LayoutParams ( ViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT )) ĊĠĠĠ Ġ} Ċ }