package Ġcom . scal lop . mar vel dex . ui . detail Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . scal lop . mar vel dex . domain . entities . Mar vel Character Entity Ċ import Ġcom . scal lop . mar vel dex . domain . entities . Result Wrapper Entity Ċ import Ġcom . scal lop . mar vel dex . domain . use cases . Get Character Base UseCase Ċ import Ġcom . scal lop . mar vel dex . domain . use cases . Get Character UseCase Ċ import Ġcom . scal lop . mar vel dex . map pers . Character Mapper Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ Ċ class ĠDetail ViewModel ( ĊĠĠĠ Ġid : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġm UseCase : ĠGet Character Base UseCase , ĊĠĠĠ Ġprivate Ġval Ġm Mapper : ĠCharacter Mapper Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ data Ġ= ĠMutable LiveData < Detail State >() ĊĠĠĠ Ġval Ġdata : ĠLive Data < Detail State > Ġget () Ġ= Ġ_ data ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Character ( id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Character ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ data . value Ġ= ĠDetail State . Detail Loading ( true ) ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm UseCase ( Get Character UseCase . Params ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ data . value Ġ= ĠDetail State . Detail Loading ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ data . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDetail State . Detail Success ( m Mapper . map Result ( it Ġas ĠResult Wrapper Entity . Success < Mar vel Character Entity >). value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. collect () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }