package Ġcom . ky bers wap . android . presentation . main . alert Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . jak ew h art on . r xb ind ing 3 . widget . text Changes Ċ import Ġcom . ky bers wap . android . App Executors Ċ import Ġcom . ky bers wap . android . R Ċ import Ġcom . ky bers wap . android . databinding . Fragment Token Search Binding Ċ import Ġcom . ky bers wap . android . domain . Scheduler Provider Ċ import Ġcom . ky bers wap . android . domain . model . Alert Ċ import Ġcom . ky bers wap . android . domain . model . Token Ċ import Ġcom . ky bers wap . android . domain . model . Wallet Ċ import Ġcom . ky bers wap . android . presentation . base . Base Fragment Ċ import Ġcom . ky bers wap . android . presentation . helper . Navigator Ċ import Ġcom . ky bers wap . android . presentation . main . balance . Get Balance State Ċ import Ġcom . ky bers wap . android . util . di . ViewModel Factory Ċ import Ġcom . ky bers wap . android . util . ext . hide Keyboard Ċ import Ġjava . util . Locale Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠPrice Alert Token Search Fragment Ġ: ĠBase Fragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Token Search Binding ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġnavigator : ĠNavigator ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġapp Executors : ĠApp Executors ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Factory ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġscheduler Provider : ĠScheduler Provider ĊĊĠĠĠ Ġprivate Ġvar Ġwallet : ĠWallet ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġalert : ĠAlert ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Search String Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġvar Ġtoken List Ġ= Ġmutable ListOf < Token >() ĊĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( this , ĠviewModel Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Price Alert Token Search ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġwallet Ġ= Ġarguments ?. get Parcelable ( WAL LET _ PARAM ) ĊĠĠĠĠĠĠĠ Ġalert Ġ= Ġarguments ?. get Parcelable ( ALERT _ PARAM ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Token Search Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbinding . rv Token . layout Manager Ġ= ĠLinearLayoutManager ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView . VERTICAL , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoken Adapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPrice Alert Token Search Adapter ( app Executors ) Ġ{ Ġtoken Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . save Token ( wallet , Ġtoken , Ġalert ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . rv Token . adapter Ġ= Ġtoken Adapter ĊĠĠĠĠĠĠĠ Ġwallet ?. address ?. let Ġ{ ĠviewModel . getToken List ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . getToken List Callback . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. getContent IfNot Handled ()?. let Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( state Ġ== ĠGet Balance State . Loading ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGet Balance State . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken List . addAll ( state . tokens ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Filter List Token ( current Search String , Ġtoken Adapter ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGet Balance State . Show Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . message Ġ?: ĠgetString ( R . string . something _ wrong ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . composite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . ed t Search . text Changes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. skip Initial Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. de bounce ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . MILLISECONDS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġit . trim (). toString (). toLowerCase ( Locale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. observe On ( scheduler Provider . ui ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġsearched Text Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Search String Ġ= Ġsearched Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Filter List Token ( current Search String , Ġtoken Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbinding . img Back . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ ĠviewModel . save Alert Token State . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. getContent IfNot Handled ()?. let Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( state Ġ== ĠSave Alert Token Balance State . Loading ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSave Alert Token Balance State . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Selection Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSave Alert Token Balance State . Show Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . message Ġ?: ĠgetString ( R . string . something _ wrong ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Selection Complete () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ Ġactivity ?. on Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Filter List Token ( ĊĠĠĠĠĠĠĠ Ġsearched Text : ĠString ?, ĊĠĠĠĠĠĠĠ Ġalert Token Adapter : ĠPrice Alert Token Search Adapter ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sear ched Text . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert Token Adapter . submit Filter List ( token List ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert Token Adapter . submit Filter List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Filter Token List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Search String , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget Filter Token List ( sear ched String : ĠString , Ġtokens : ĠList < Token >): ĠList < Token > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtokens . filter Ġ{ Ġtoken Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken . token Symbol . toLowerCase ( Locale . getDefault ()). contains ( sear ched String ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken . token Name . toLowerCase ( Locale . getDefault ()). contains ( sear ched String ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . composite Disposable . clear () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠW AL LET _ PARAM Ġ= Ġ" wallet _ param " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAL ERT _ PARAM Ġ= Ġ" alert _ param " ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( wallet : ĠWallet ?, Ġalert : ĠAlert ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPrice Alert Token Search Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ( WAL LET _ PARAM , Ġwallet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ( ALERT _ PARAM , Ġalert ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }