package Ġapp . box . pokemon . ui . profile Ċ Ċ import Ġapp . box . pokemon . core . Base ViewModel Ċ import Ġapp . box . pokemon . data . Repository Ċ import Ġapp . box . pokemon . data . ent et ies . Pokemon Info Ċ import Ġio . un iflow . core . flow . data . UI Event Ċ import Ġio . un iflow . core . flow . data . UIState Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . filter NotNull Ċ Ċ class ĠProfile ViewModel ( ĊĠĠĠ Ġrepository : ĠRepository Ċ ) Ġ: ĠBase ViewModel ( repository ) Ġ{ ĊĊĠĠĠ Ġfun Ġload Profile ( pokemon Id : ĠInt ) Ġ= Ġaction Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Event ( UI Event . Loading ) ĊĠĠĠĠĠĠĠ Ġrepository . get Pokemon ById ( pokemon Id ). filter NotNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect Ġ{ Ġpokemon Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState Ġ{ ĠProfile State . Profile Loaded ( pokemon ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠProfile State Ġ: ĠUI State () Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠProfile Loaded ( val Ġprofile Item : ĠPokemon Info ) Ġ: ĠProfile State () ĊĠĠĠĠĠĠĠ Ġobject ĠNotFound Ġ: ĠProfile State () ĊĠĠĠ Ġ} Ċ }