package Ġcom . oz an top uz . six t coding challenge Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . oz an top uz . six t coding challenge . data . Result Ċ import Ġcom . oz an top uz . six t coding challenge . data . entity . Car Ċ import Ġcom . oz an top uz . six t coding challenge . domain . use case . C ars UseCase Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠMain ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġuse Case : ĠC ars UseCase Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ cars LiveData Ġ= ĠMutable LiveData < ArrayList < Car >>() ĊĠĠĠ Ġval Ġcars LiveData : ĠLive Data < ArrayList < Car >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ cars LiveData ĊĊĠĠĠ Ġprivate Ġval Ġ_ error LiveData Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġerror LiveData : ĠLive Data < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ error LiveData ĊĊĠĠĠ Ġfun Ġfetch C ars () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Case . execute (). collect Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Error Ġ-> Ġ_ error LiveData . value Ġ= Ġresult . exception . localized Message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġ_ cars LiveData . value Ġ= Ġresult . data Ġ?: Ġarray ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }