package Ġorg . fo ss as ia . open event . general . search Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . Navigation Ċ import Ġandroidx . navigation . fragment . Fragment Navigator Extras Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġkotlinx . android . synt hetic . main . fragment _ search _ results . view . search Root Layout Ċ import Ġkotlinx . android . synt hetic . main . fragment _ search _ results . view . events Recycler Ċ import Ġkotlinx . android . synt hetic . main . fragment _ search _ results . view . shim mer Search Ċ import Ġkotlinx . android . synt hetic . main . content _ no _ internet . view . retry Ċ import Ġkotlinx . android . synt hetic . main . content _ no _ internet . view . no Internet Card Ċ import Ġkotlinx . android . synt hetic . main . fragment _ search _ results . view . no SearchResults Ċ import Ġorg . fo ss as ia . open event . general . R Ċ import Ġorg . fo ss as ia . open event . general . di . Scopes Ċ import Ġorg . fo ss as ia . open event . general . event . Event Ċ import Ġorg . fo ss as ia . open event . general . common . Event ClickListener Ċ import Ġorg . fo ss as ia . open event . general . event . Event Details Fragment Args Ċ import Ġorg . fo ss as ia . open event . general . event . Event Utils Ċ import Ġorg . fo ss as ia . open event . general . common . Favorite Fab ClickListener Ċ import Ġorg . fo ss as ia . open event . general . common . Share Fab ClickListener Ċ import Ġorg . fo ss as ia . open event . general . favorite . Favorite Events Recycler Adapter Ċ import Ġorg . fo ss as ia . open event . general . utils . Utils . get Anim Fade Ċ import Ġorg . fo ss as ia . open event . general . utils . extensions . non Null Ċ import Ġorg . k oin . android . ext . android . inject Ċ import Ġorg . k oin . android x . scope . ext . android . bind Scope Ċ import Ġorg . k oin . android x . scope . ext . android . get OrCreate Scope Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠSearch Results Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġroot View : ĠView ĊĠĠĠ Ġprivate Ġval Ġsearch ViewModel Ġby ĠviewModel < Search ViewModel >() ĊĠĠĠ Ġprivate Ġval Ġsafe Args : ĠSearch Results Fragment Args Ġby Ġnav Args () ĊĠĠĠ Ġprivate Ġval Ġfavorite Events Recycler Adapter : ĠF avorite Events Recycler Adapter Ġby Ġinject ( ĊĠĠĠĠĠĠĠ Ġscope Ġ= Ġget OrCreate Scope ( Scopes . SEARCH _ RESULTS _ FRAGMENT . toString ()) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbind Scope ( get OrCreate Scope ( Scopes . SEARCH _ RESULTS _ FRAGMENT . toString ())) ĊĠĠĠĠĠĠĠ Ġperform Search ( safe Args ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġroot View Ġ= Ġinflater . inflate ( R . layout . fragment _ search _ results , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġpost p one Enter Transition () ĊĠĠĠĠĠĠĠ Ġval Ġthis Activity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġif Ġ( this Activity Ġis ĠAppCompatActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . support ActionBar ?. title Ġ= ĠgetString ( R . string . search _ results ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . support ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĠĠĠĠĠĠĠ Ġroot View . events Recycler . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĊĠĠĠĠĠĠĠ Ġroot View . events Recycler . adapter Ġ= Ġfavorite Events Recycler Adapter ĊĠĠĠĠĠĠĠ Ġroot View . events Recycler . is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġroot View . events Recycler . view Tree Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Pre Draw Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Post p oned Enter Transition () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel . events ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. non Null () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this , ĠObserver Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Events Recycler Adapter . submit List ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow No SearchResults ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" F etched Ġevents Ġof Ġsize Ġ% s ", Ġfavorite Events Recycler Adapter . item Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel . show Sh im mer Results ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. non Null () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . shim mer Search . start Sh im mer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . shim mer Search . stop Sh im mer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . shim mer Search . isVisible Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel . show No Internet Error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. non Null () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow No Internet Error ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel . error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. non Null () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( root View . search Root Layout , Ġit , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġroot View . retry . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform Search ( safe Args ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġevent ClickListener : ĠEvent ClickListener Ġ= Ġobject Ġ: ĠEvent ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( event ID : ĠLong , Ġshared Image : ĠImageView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextras Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFragment Navigator Extras ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Image Ġto Ġevent ID . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Details Fragment Args . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set EventId ( event ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġbundle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation . find Nav Controller ( view ). navigate ( R . id . event Details Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Anim Fade (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextras ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġshare Fab ClickListener : ĠShare Fab ClickListener Ġ= Ġobject Ġ: ĠShare Fab ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( event : ĠEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠIntent . ACTION _ SEND ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ TEXT , ĠEvent Utils . get Sh arable Info ( event )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġintent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent . create Chooser ( intent , Ġ" Share ĠEvent ĠDetails ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfav Fab ClickListener : ĠF avorite Fab ClickListener Ġ= Ġobject Ġ: ĠF avorite Fab ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( event : ĠEvent , Ġitem Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch ViewModel . set Favorite ( event . id , Ġ! event . favorite ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . favorite Ġ= Ġ! event . favorite ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Events Recycler Adapter . notify Item Changed ( item Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfavorite Events Recycler Adapter . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Event Click Ġ= Ġevent ClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Share Fab Click Ġ= Ġshare Fab ClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Fav Fab Click Ġ= Ġfav Fab ClickListener ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġperform Search ( args : ĠSearch Results Fragment Args ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġargs . query ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġargs . location ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġargs . date ĊĠĠĠĠĠĠĠ Ġsearch ViewModel . search Event Ġ= Ġquery ĊĠĠĠĠĠĠĠ Ġsearch ViewModel . load Events ( location , Ġdate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow No SearchResults ( events : ĠList < Event >) Ġ{ ĊĠĠĠĠĠĠĠ Ġroot View . no SearchResults . visibility Ġ= Ġif Ġ( events . isEmpty ()) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow No Internet Error ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġroot View . no Internet Card . visibility Ġ= Ġif Ġ( show ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ