package Ġcom . az har . t amb al ban . view model čĊč Ċ import Ġandroid . util . Log č Ċ import Ġandroidx . lifecycle . LiveData č Ċ import Ġandroidx . lifecycle . Mutable LiveData č Ċ import Ġandroidx . lifecycle . ViewModel č Ċ import Ġcom . az har . t amb al ban . data . model . details . Model Detail č Ċ import Ġcom . az har . t amb al ban . data . model . near by . Model Results č Ċ import Ġcom . az har . t amb al ban . data . response . Model Result Detail č Ċ import Ġcom . az har . t amb al ban . data . response . Model Result Near by č Ċ import Ġcom . az har . t amb al ban . networking . ApiClient č Ċ import Ġretrofit 2 . Call č Ċ import Ġretrofit 2 . Callback č Ċ import Ġretrofit 2 . Response č Ċ import Ġjava . util .* čĊč Ċ /** čĊ Ġ* ĠCreated Ġby ĠA zh ar ĠR ival di Ġon Ġ 1 8 - 0 7 - 2 0 2 1 čĊ Ġ* ĠY outube ĠChannel Ġ: Ġhttps :// bit . ly / 2 PJ M ow Z čĊ Ġ* ĠGithub Ġ: Ġhttps :// github . com / A zh ar R ival di čĊ Ġ* ĠTwitter Ġ: Ġhttps :// twitter . com / az h arr vl di _ čĊ Ġ* ĠInst agram Ġ: Ġhttps :// www . instagram . com / az hard v ls _ čĊ Ġ* ĠLinked In Ġ: Ġhttps :// www . linkedin . com / in / az har - rival di čĊ Ġ*/ čĊč Ċ class ĠMain ViewModel Ġ: ĠViewModel () Ġ{ čĊčĊĠĠĠ Ġprivate Ġval Ġmodel Results Mutable LiveData Ġ= ĠMutable LiveData < ArrayList < Model Results >>() čĊĠĠĠ Ġprivate Ġval Ġmodel Detail Mutable LiveData Ġ= ĠMutable LiveData < Model Detail >() čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġstr ApiKey Ġ= Ġ" YOUR ĠAPI ĠKEY " čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġset Marker Location ( str Location : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġapi Service Ġ= ĠApi Client . getClient () čĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġapi Service . getData Result ( str ApiKey , Ġ" T amb al ĠB an ", Ġstr Location , Ġ" distance ") čĊĠĠĠĠĠĠĠ Ġcall . enqueue ( object Ġ: ĠCallback < Model Result Near by > Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Model Result Near by >, Ġresponse : ĠResponse < Model Result Near by >) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! response . is Successful ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" response ", Ġresponse . toString ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( response . body () Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠArrayList ( response . body (). model Results ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Results Mutable LiveData . post Value ( items ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Model Result Near by >, Ġt : ĠThrowable ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" failure ", Ġt . toString ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġset Detail Location ( str Place ID : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġapi Service Ġ= ĠApi Client . getClient () čĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġapi Service . get Detail Result ( str ApiKey , Ġstr Place ID ) čĊĠĠĠĠĠĠĠ Ġcall . enqueue ( object Ġ: ĠCallback < Model Result Detail > Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Model Result Detail >, Ġresponse : ĠResponse < Model Result Detail >) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! response . is Successful ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" response ", Ġresponse . toString ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( response . body () Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Detail Mutable LiveData . post Value ( response . body (). model Detail ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Model Result Detail >, Ġt : ĠThrowable ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" failure ", Ġt . toString ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Marker Location (): ĠLive Data < ArrayList < Model Results >> Ġ= Ġmodel Results Mutable LiveData čĊčĊĠĠĠ Ġfun Ġget Detail Location (): ĠLive Data < Model Detail > Ġ= Ġmodel Detail Mutable LiveData čĊč Ċ } čĊ