package Ġc afe . ad riel . green hell . view . main . craft ing Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġc afe . ad riel . green hell . Analytics Ċ import Ġc afe . ad riel . green hell . R Ċ import Ġc afe . ad riel . green hell . model . Craft Item Ċ import Ġc afe . ad riel . green hell . share Ċ import Ġcom . ken ny c . view . Multi State View Ċ import Ġcom . mike pen z . fast adapter . Fast Adapter Ċ import Ġcom . mike pen z . fast adapter . commons . adapters . Fast Item Adapter Ċ import Ġcom . mike pen z . fast adapter . listeners . Click Event Hook Ċ import Ġcom . mike pen z . fast adapter . listeners . Item Filter Listener Ċ import Ġkotlinx . android . synt hetic . main . fragment _ craft ing .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ craft ing . view .* Ċ import Ġkotlinx . android . synt hetic . main . item _ craft ing . view .* Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠCraft ing Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠCraft ing Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby ĠviewModel < Craft ing ViewModel >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠFast Item Adapter < Craft Item Adapter Item > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ craft ing , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif (! :: adapter . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠFast Item Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Stable Ids ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Use Id Distribut or ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Event Hook ( object Ġ: ĠClick Event Hook < Craft Item Adapter Item >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind Many ( view Holder : ĠRecyclerView . ViewHolder ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . run Ġ{ ĠlistOf ( v Share ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ?, Ġposition : ĠInt , Ġfast Adapter : ĠFast Adapter < Craft Item Adapter Item > ?, Ġitem : ĠCraft Item Adapter Item ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġ!= Ġnull Ġ&& Ġitem Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon ListItem Clicked ( view , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Filter . with Filter Predicate Ġ{ Ġitem , Ġconstraint Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Ġ== ĠgetString ( item . craft Item . category . name Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Filter . with Item Filter Listener ( object Ġ: ĠItem Filter Listener < Craft Item Adapter Item > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġitems Filtered ( constraint : ĠCharSequence ?, Ġresults : ĠMutable List < Craft Item Adapter Item > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Reset () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( view ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv Craft Items . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv Craft Items . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġv Craft Categories . set Listener Ġ{ Ġon Category Selected ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . getC raft Items (). observe ( this , ĠObserver Ġ{ Ġshow Craft Items ( it ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon ListItem Clicked ( view : ĠView , Ġitem : ĠCraft Item Adapter Item ){ ĊĠĠĠĠĠĠĠ Ġwhen ( view . id ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . v Share Ġ-> Ġshare Craft Item ( item . craft Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Category Selected ( category Name : ĠString ){ ĊĠĠĠĠĠĠĠ Ġadapter . filter ( category Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Craft Items ( craft Items : ĠList < Craft Item > ){ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Items Ġ= Ġcraft Items . map Ġ{ ĠCraft Item Adapter Item ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġadapter . item Filter . clear () ĊĠĠĠĠĠĠĠ Ġadapter . item Filter . add ( adapter Items ) ĊĠĠĠĠĠĠĠ Ġv Craft Categories ?. select Default Category () ĊĠĠĠĠĠĠĠ Ġupdate State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshare Craft Item ( craft Item : ĠCraft Item ){ ĊĠĠĠĠĠĠĠ Ġactivity ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ craft Item . name } Ġrecipe :\ n ${ craft Item . description }". share ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnalytics . log Share Craft Item ( craft Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate State (){ ĊĠĠĠĠĠĠĠ Ġv State ?. view State Ġ= Ġif ( adapter . adapter Items . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMulti State View . VIEW _ STATE _ EMPTY ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMulti State View . VIEW _ STATE _ CONTENT ĊĠĠĠ Ġ} Ċ Ċ }