package Ġcom . wo ow r ale . k mv vm . ui . search . remote Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . jak ew h art on . r xb ind ing 2 . widget . TextView Text ChangeEvent Ċ import Ġcom . wo ow r ale . k mv vm . data . model . Contact Ċ import Ġcom . wo ow r ale . k mv vm . ui . adapters . Contacts Adapter Ċ import Ġio . reactivex . ob servers . Disposable Observer Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠRemote Search ViewModel Ġ@ Inject Ġconstructor () Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠRemote Search ViewModel :: class . java . simple Name ĊĠĠĠ Ġprivate Ġvar Ġsearch Ġ: ĠMutable LiveData < Disposable Observer < List < Contact >>> Ġ= ĠMutable LiveData () ĊĊĊĠĠĠ Ġfun Ġsearch Observer ( contact List : ĠArrayList < Contact >, Ġm Adapter : ĠContact s Adapter ): Ġ ĠLive Data < Disposable Observer < List < Contact >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch . value Ġ= Ġobject Ġ: ĠDis posable Observer < List < Contact >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( contacts : ĠList < Contact >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact List . addAll ( contacts ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" onError : Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsearch ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsearch Contacts Text Watcher ( publish Subject : ĠPublish Subject < String >): ĠDis posable Observer < TextView Text ChangeEvent > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠDis posable Observer < TextView Text ChangeEvent >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( textView Text ChangeEvent : ĠTextView Text ChangeEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Search Ġquery : Ġ" Ġ+ ĠtextView Text ChangeEvent . text ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublish Subject . onNext ( textView Text ChangeEvent . text (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" onError : Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }