package Ġcom . example . poly care er . screens . quiz . quiz _ results Ċ Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . example . poly care er . base . Base Action Ċ import Ġcom . example . poly care er . base . Base State Ċ import Ġcom . example . poly care er . base . Base ViewModel Ċ import Ġcom . example . poly care er . domain . model . Direction Ċ import Ġcom . example . poly care er . domain . model . Prof ession Ċ import Ġcom . example . poly care er . domain . use case . Quiz Result UseCase Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠQu iz Results ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġuse Case : ĠQu iz Result UseCase Ċ ) Ġ: ĠBase ViewModel < Quiz Results ViewModel . Quiz Result State , ĠQu iz Results ViewModel . Quiz Result Action >( ĊĠĠĠ ĠQu iz Result State () Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġtry Number : ĠLong Ġ= Ġ- 1 ĊĊĠĠĠ Ġvar Ġis First Render Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis First Render Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonLoad Data () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Action ( Quiz Result Action . Show Loader ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Case . getData ( try Number ). also Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠQu iz Result UseCase . Result . Success Ġ-> Ġsend Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQu iz Result Action . Show Results ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . directions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . prof essions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠQu iz Result UseCase . Result . Error Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Action ( Quiz Result Action . Error ( result . message )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Reduce State ( action : ĠQu iz Result Action ): ĠQu iz Result State Ġ= Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠQu iz Result Action . Show Results Ġ-> Ġstate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Load Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirections Ġ= Ġaction . directions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprof essions Ġ= Ġaction . prof essions ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġis ĠQu iz Result Action . Error Ġ-> Ġstate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Load Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ= Ġaction . message ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠQu iz Result Action . Show Loader Ġ-> Ġstate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Load Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġinterface ĠQu iz Result Action Ġ: ĠBase Action Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠShow Loader Ġ: ĠQu iz Result Action ĊĊĠĠĠĠĠĠĠ Ġclass ĠShow Results ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirections : ĠList < Direction >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprof essions : ĠList < Prof ession > ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠQu iz Result Action ĊĊĠĠĠĠĠĠĠ Ġclass ĠError ( val Ġmessage : ĠString ) Ġ: ĠQu iz Result Action ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠQu iz Result State ( ĊĠĠĠĠĠĠĠ Ġval Ġis Load : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġval Ġdirections : ĠList < Direction > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġval Ġprof essions : ĠList < Prof ession > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġval Ġerror : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ) Ġ: ĠBase State Ċ }