package Ġcom . bal oc co . android navigation . data . local Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġcom . bal oc co . android navigation . data . model . Location Ċ import Ġcom . google . android . gms . location . F used Location Provider Client Ċ import Ġio . reactivex . rx java 3 . core . Observable Ċ import Ġio . reactivex . rx java 3 . subjects . Publish Subject Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠUser Location Local DataSource Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġf used Location Provider Client : ĠF used Location Provider Client Ċ ) Ġ: ĠUser Location Local DataSource Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlocation Subject Ġ= ĠPublish Subject . create < Location ?> () ĊĊĠĠĠ Ġoverride Ġfun Ġlocation Observable (): ĠObservable < Location ?> Ġ= ĊĠĠĠĠĠĠĠ Ġlocation Subject . do On Subscribe Ġ{ Ġlast Location () Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") Ġprivate Ġfun Ġlast Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġf used Location Provider Client . last Location . add On Success Listener (:: setLocation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Location ( location : Ġandroid . location . Location ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( location Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Subject . onError ( Throwable ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠLocation ( longitude Ġ= Ġlocation . longitude , Ġlatitude Ġ= Ġlocation . latitude ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Subject . onNext ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }