package Ġcom . n obody s apps . gre ent astic . repository Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . n obody s apps . gre ent astic . networking . ApiService Ċ import Ġcom . n obody s apps . gre ent astic . ui . search . Search Fragment Ċ import Ġcom . n obody s apps . gre ent astic . utils . Result Object Ċ import Ġio . reactivex . Single Observer Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠSearch Api Repository Ġ@ Inject Ġconstructor ( private Ġval Ġapi Service : ĠApi Service ){ ĊĊĊĠĠĠ Ġvar Ġsource Completion : ĠMutable LiveData < Result Object < List < String >>> Ġ= ĠMutable LiveData () ĊĠĠĠ Ġvar Ġdest Completion : ĠMutable LiveData < Result Object < List < String >>> Ġ= ĠMutable LiveData () Ċ Ċ // ĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġfun Ġload Completion ( search String : ĠString , Ġsearch ViewType : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġadd Ġcaching ĊĠĠĠĠĠĠĠ Ġval Ġauto Complete Single Ġ= Ġapi Service . get Auto Complete ( search String ) ĊĠĠĠĠĠĠĠ Ġauto Complete Single ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( search ViewType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSEARCH _ VIEW _ TYPE _ SOURCE Ġ-> Ġsource Completion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdest Completion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. value Ġ= ĠResult Object () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠSingle Observer < List < String >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( suggestions : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Search Fragment . TAG , Ġ" suggestions : Ġ$ suggestions ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( search ViewType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSEARCH _ VIEW _ TYPE _ SOURCE Ġ-> Ġsource Completion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdest Completion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. value Ġ= ĠResult Object ( suggestions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Search Fragment . TAG , Ġ" on Subscribe Ġcalled ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( d ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Search Fragment . TAG , Ġ" Some Ġerror Ġ$ e ") Ġ// TODO Ġadd Ġerror Ġmessage Ġin Ġdialog ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSEARCH _ VIEW _ TYPE _ SOURCE Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSEARCH _ VIEW _ TYPE _ DEST Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ Ċ }