package Ġde . db ael z . demo . p np stats . ui . feature . experience Ċ Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġde . db ael z . demo . p np stats . data . character . use case . Get Last Character UseCase Ċ import Ġde . db ael z . demo . p np stats . data . common . Api Result Ċ import Ġde . db ael z . demo . p np stats . data . experience . use case . Add Character Experience UseCase Ċ import Ġde . db ael z . demo . p np stats . data . experience . use case . Get Character Experience Details UseCase Ċ import Ġde . db ael z . demo . p np stats . ui . feature . Base ViewModel Ċ import Ġde . db ael z . demo . p np stats . ui . feature . experience . Experience Contract .* Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠExperience ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval ĠgetLast Character : ĠGet Last Character UseCase , ĊĠĠĠ Ġprivate Ġval Ġadd Character Experience : ĠAdd Character Experience UseCase , ĊĠĠĠ Ġprivate Ġval Ġget Character Experience Details : ĠGet Character Experience Details UseCase Ċ ) Ġ: ĠBase ViewModel < State , ĠEvent , ĠEffect >() Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= ĠgetLast Character ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexperience Details Ġ= Ġget Character Experience Details . invoke ( result . value . id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate State Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . Experience Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value . experience , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexperience Details ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi Result . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Effect Ġ{ ĠEffect . Error Loading Character Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Effect Ġ{ ĠEffect . Navigation . To Characters Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprovide InitialState () Ġ= ĠState . Loading ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Event ( event : ĠEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event Ġis ĠEvent . Add Experience ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Character Experience ( event . character Id , Ġevent . experience , Ġevent . reason ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ