package Ġcom . mar vel . mar vel application . characters Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . mar vel . domain . model . Characters Ċ import Ġcom . mar vel . domain . use case . Get Characters Details UseCase Ċ import Ġcom . mar vel . domain . use case . Get Characters UseCase Ċ import Ġcom . mar vel . domain . util . Resource Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /* ĠMain ViewModel Ġto Ġget Ġdata Ġfrom Ġuse Ġcases */ Ċ class ĠCharacter List ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġget Characters UseCase : ĠGet Characters UseCase , ĊĠĠĠ Ġprivate Ġval Ġget Characters Details UseCase : ĠGet Characters Details UseCase Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ characters List Ġ= ĠMutable LiveData < Resource < List < Characters >> >() ĊĠĠĠ Ġval Ġcharacters List : ĠLive Data < Resource < List < Characters >>> Ġget () Ġ= Ġ_ characters List ĊĊĠĠĠ Ġ// Ġfetch Ġcharacters Ġlist Ġfrom ĠGet Characters UseCase ĊĠĠĠ Ġfun Ġget Characters List () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ characters List . post Value ( Resource . loading ( null )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusers From Api Ġ= Ġget Characters UseCase . get Characters () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ characters List . post Value ( users From Api ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ characters List . post Value ( Resource . error ( e . toString (), Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġfetch Ġcharacters Ġdetails Ġfrom ĠGet Characters Details UseCase ĊĠĠĠ Ġfun Ġget Characters Details ( character Id : ĠInt ): ĠLive Data < Resource < Characters >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcharacter Ġ= ĠMutable LiveData < Resource < Characters >>() ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter . post Value ( Resource . loading ( null )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusers From Api Ġ= Ġget Characters Details UseCase . get Characters Details ( character Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter . post Value ( users From Api ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter . post Value ( Resource . error ( e . toString (), Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcharacter ĊĠĠĠ Ġ} Ċ }