package Ġdog . snow . android re cruit test . feature . list Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . app . mate us z . pokemon . common . functional . Result Ċ import Ġcom . app . mate us z . pokemon . common . functional . Single LiveData Ċ import Ġdog . snow . android re cruit test . core . inter actor . None Ċ import Ġdog . snow . android re cruit test . domain . use case . Get Photo Combined Data Ċ import Ġdog . snow . android re cruit test . feature . detail . model . Detail Ċ import Ġdog . snow . android re cruit test . feature . list . model . ListItem Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠList Fragment ViewModel Ċ @ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġget Photo Combined Data : ĠGet Photo Combined Data Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ list Fragment View Event Ġ= ĊĠĠĠĠĠĠĠ ĠSingle LiveData < List Fragment View Event >() ĊĠĠĠ Ġval Ġlist Fragment View Event : ĠLive Data < List Fragment View Event > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ list Fragment View Event ĊĊĠĠĠ Ġprivate Ġval Ġ_ list Item Ġ= ĠMutable LiveData < List < ListItem >>() ĊĠĠĠ Ġval Ġlist Item : ĠLive Data < List < ListItem >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ list Item ĊĊĠĠĠ Ġfun Ġfetch Data () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġget Photo Combined Data ( None ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġ_ list Item . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . data . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠListItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠListItem . Photo Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . photo . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . photo . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . photo . thumbnail Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠListItem . Album Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . photo . thumbnail Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Error Ġ-> Ġ_ list Fragment View Event . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList Fragment View Event . Show ErrorMessage ( result . exception . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ sealed Ġclass ĠList Fragment View Event Ġ{ ĊĠĠĠ Ġdata Ġclass ĠShow ErrorMessage ( val Ġmessage : ĠString ?) Ġ: ĠList Fragment View Event () Ċ } ĊĊ