package Ġcom . m re ig osa . mar vel app . presentation . features . character list Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . m re ig osa . mar vel app . domain . executor . Invoker Ċ import Ġcom . m re ig osa . mar vel app . domain . model . Mar vel Character Ċ import Ġcom . m re ig osa . mar vel app . domain . use case . Get Characters UseCase Ċ Ċ class ĠMar vel Character List ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġget Characters UseCase : ĠGet Characters UseCase , ĊĠĠĠ Ġprivate Ġval Ġinvok er : ĠInv oker Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ view State Ġ= ĠMutable LiveData < Character ListView State >() ĊĠĠĠ Ġval Ġview State : ĠLive Data < Character ListView State > Ġ= Ġ_ view State ĊĊĠĠĠ Ġprivate Ġval Ġcharacter List : ĠMutable List < Mar vel Character > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ view State . value Ġ= ĠCharacter ListView State . First Loading ĊĠĠĠĠĠĠĠ Ġfetch Characters () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Characters ( offset : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinvok er . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Characters UseCase Ġwith Params ĠGet Characters UseCase . Params ( offset ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . fold ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġ{ Ġcharacters Ġ-> Ġon Characters Retrie ved ( offset , Ġcharacters ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure Ġ= Ġ:: onError ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Characters Retrie ved ( offset : ĠInt , Ġcharacters : ĠList < Mar vel Character >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( characters . isEmpty () Ġ&& Ġoffset Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ view State . value Ġ= ĠCharacter ListView State . Empty Characters Loaded ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter List . addAll ( characters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ view State . value Ġ= ĠCharacter ListView State . Character List Loaded ( character List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonError ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ view State . value Ġ= ĠCharacter ListView State . Error ĊĠĠĠ Ġ} Ċ }