package Ġcom . bow oon . android . h ilt _ practice . activities . view model Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . bow oon . android . h ilt _ practice . api . Api Helper Impl Ċ import Ġcom . bow oon . android . h ilt _ practice . api . Person Api Ċ import Ġcom . bow oon . android . h ilt _ practice . base . Base ViewModel Ċ import Ġcom . bow oon . android . h ilt _ practice . model . Person Ċ import Ġcom . bow oon . android . h ilt _ practice . model . Pers ons Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġio . reactivex . rx java 3 . core . Single Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . launch Ċ import Ġretrofit 2 . http . GET Ċ import Ġretrofit 2 . http . Query Map Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠMainActivity ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġapi Helper Impl : ĠApi Helper Impl , ĊĠĠĠ Ġprivate Ġval Ġperson Api : ĠPerson Api Ċ ) Ġ: ĠBase ViewModel (), ĠLifecycle Observer Ġ{ ĊĠĠĠ Ġval Ġperson List Ġ= ĠMutable LiveData < Mutable List < Person >>() ĊĠĠĠ Ġval Ġperson Flow Ġ= Ġflow < Pers ons > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġperson Api . get Users Using Cor outines ( map Of (" results " Ġto Ġ" 1 0 ")) ĊĠĠĠĠĠĠĠ ĠLog . d (" person Flow ", Ġresult . toString ()) ĊĠĠĠĠĠĠĠ Ġemit ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ CREATE ) ĊĠĠĠ Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson Flow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Completion Ġ{ ĠLog . d (" on Completion ", Ġit . toString ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flow On ( Dispatch ers . IO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" collect ", Ġit . toString ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperson List . value Ġ= Ġit . persons ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload UserData ( success : Ġ(( Pers ons ) Ġ-> ĠUnit )? Ġ= Ġnull , Ġerror : Ġ(( Throwable ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapi Helper Impl . get Pers ons ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" results " Ġto Ġ" 1 0 "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperson List . value Ġ= Ġit . persons ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" MainActivity ViewModel ", Ġit . message Ġ?: Ġ" something Ġwrong ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }