package Ġcom . mt jin . nom oney trip . views . home Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . mt jin . nom oney trip . base . Base ViewModel Ċ import Ġcom . mt jin . nom oney trip . data . home . Product Ċ import Ġcom . mt jin . nom oney trip . data . home . source . Home Repository Ċ import Ġcom . mt jin . nom oney trip . utils . Single Live Event Ċ import Ġcom . mt jin . nom oney trip . utils . TAG Ċ import Ġcom . mt jin . nom oney trip . utils . extensions . getTimestamp Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . rx kotlin . subscribe By Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠHome ViewModel ( private Ġval Ġhome Repository : ĠHome Repository ) Ġ: ĠBase ViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ go Search Ġ= ĠSingle Live Event < Unit >() ĊĠĠĠ Ġprivate Ġval Ġ_ go Alarm Ġ= ĠSingle Live Event < Unit >() ĊĠĠĠ Ġprivate Ġval Ġ_ product List Ġ= ĠMutable LiveData < ArrayList < Product >>() ĊĠĠĠ Ġprivate Ġval Ġ_ hash Tag List Ġ= ĠMutable LiveData < ArrayList < String >>() ĊĊĠĠĠ Ġval Ġgo Search : ĠLive Data < Unit > Ġget () Ġ= Ġ_ go Search ĊĠĠĠ Ġval Ġgo Alarm : ĠLive Data < Unit > Ġget () Ġ= Ġ_ go Alarm ĊĠĠĠ Ġval Ġproduct List : ĠLive Data < ArrayList < Product >> Ġget () Ġ= Ġ_ product List ĊĠĠĠ Ġval Ġhash Tag List : ĠLive Data < ArrayList < String >> Ġget () Ġ= Ġ_ hash Tag List ĊĊĠĠĠ Ġfun Ġgo Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ go Search . call () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Products () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome Repository . request Products () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġproducts Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ product List . value Ġ= Ġproducts Ġas ĠArrayList < Product > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Tags Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( product Ġin Ġproducts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( hash Tag Ġin Ġproduct . hash Tag List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Tags . add ( hash Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Tags . shuffle ( Random ( getTimestamp ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ hash Tag List . value Ġ= Ġhash Tags . distinct () Ġas ĠArrayList < String > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Home ViewModel Ġrequest Products () ĠError Ġ-> Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Hash Tag Products ( hash Tag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome Repository . request Hash Tag Products ( hash Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġproducts Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ product List . value Ġ= Ġproducts Ġas ĠArrayList < Product > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Home ViewModel Ġrequest Hash Tag Products () ĠError Ġ-> Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Product Favorite ( product : ĠProduct ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome Repository . update Product Favorite ( product ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġit . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonComplete Ġ= Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgo Alarm () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ go Alarm . call () ĊĠĠĠ Ġ} Ċ }