package Ġcom . if an r . tang zhi . ui . search Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . paging . Paged List Ċ import Ġcom . if an r . tang zhi . model . Product Ċ import Ġcom . if an r . tang zhi . model . Search Key Ċ import Ġcom . if an r . tang zhi . repository . ba as . Ba as Repository Ċ import Ġcom . if an r . tang zhi . repository . ba as . Setting Repository Ċ import Ġcom . if an r . tang zhi . ui . base . Base ViewModel Ċ import Ġcom . if an r . tang zhi . ui . base . auto Dispose Ċ import Ġcom . uber . aut od is pose . android . auto Dispose Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Observer Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . functions . Action Ċ import Ġio . reactivex . functions . Consumer Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSearch ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠBa as Repository , ĊĠĠĠ Ġprivate Ġval Ġsetting Repository : ĠSetting Repository Ċ ): ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Search ViewModel " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġæ Ĳ ľç´¢ åħ³éĶ®åŃĹ ĊĠĠĠ Ġval Ġkey Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġ// Ġæ Ĳ ľç´¢ ç»ĵæŀľ ĊĠĠĠ Ġval Ġsearch Result Ġ= ĠMutable LiveData < Paged List < Product >>() ĊĊĠĠĠ Ġ// Ġæ Ļ º èĥ½ æıĲç¤º åĪĹè¡¨ ĊĠĠĠ Ġval Ġsearch Hint Ġ= ĠMutable LiveData < List < Product >>() ĊĊĠĠĠ Ġ// Ġæ Ĳ ľç´¢ åİĨåı² ĊĠĠĠ Ġval Ġhistory Ġ= ĠMutable LiveData < List < String >>() ĊĊĠĠĠ Ġ// Ġ çĥŃ éĹ¨ æİ¨èįĲ ĊĠĠĠ Ġval Ġhot test Ġ= ĠMutable LiveData < List < String >>() ĊĊĠĠĠ Ġval Ġtoast Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġloading Ġ= ĠMutable LiveData < Boolean >() ĊĊĠĠĠ Ġprivate Ġvar Ġsearch Hint Request : ĠDis posable ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġ åĬłè½½ æĲľç´¢ çļĦ é¦ĸé¡µ ĊĠĠĠ Ġfun Ġload Index Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġsetting Repository . hot test Search () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . map Ġ{ Ġit . name Ġ?: Ġ"" Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. auto Dispose ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Consumer Ġ{ it ?. also Ġ{ Ġhot test . post Value ( it ) Ġ}}) ĊĊĠĠĠĠĠĠĠ Ġrepository . load Search Log () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . map Ġ{ Ġit . key Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. auto Dispose ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Consumer Ġ{ Ġit ?. also Ġ{ Ġhistory . post Value ( it ) Ġ} Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ Ĳ ľç´¢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsearch () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġkey . value ĊĠĠĠĠĠĠĠ Ġif Ġ(! text . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Hint Request ?. dispose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Hint Request Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . search ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġloading . post Value ( true ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do After Terminate Ġ{ Ġloading . post Value ( false ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. auto Dispose ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Consumer Ġ{ Ġsearch Result . value Ġ= Ġit Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġæ¸ ħ ç©º æĲľç´¢ åİĨåı² ĊĠĠĠ Ġfun Ġclear History () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . clean Search Log () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. auto Dispose ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġload Index Page () Ġ}, Ġ{ Ġtoast . post Value ( it . message ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġæ Ļ º èĥ½ æıĲç¤º ĊĠĠĠ Ġfun Ġsearch Hint () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġkey . value ĊĠĠĠĠĠĠĠ Ġif Ġ(! text . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Hint Request ?. dispose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Hint Request Ġ= Ġrepository . search Hint ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. auto Dispose ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Consumer Ġ{ Ġit . take If Ġ{ Ġ! it . isNull OrEmpty () Ġ} ?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Hint . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }