package Ġcz . nest res uj u . screens . program . four th Ċ Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcz . nest res uj u . model . common . Empty State LiveData Ċ import Ġcz . nest res uj u . model . repositories . Program Four th Repository Ċ import Ġcz . nest res uj u . screens . base . Base ViewModel Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* ĠViewModel Ġfor Ġscreen Ġwith Ġinstructions Ġabout Ġfilling Ġin Ġquestion naire Ġfrom Ġprogram Ġ 4 . Ċ Ġ*/ Ċ class ĠProgram Four th Questions Intro ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġprogram Repository : ĠProgram Four th Repository Ċ ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġloading State Stream Ġ= ĠEmpty State LiveData () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch Program Questions () ĊĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogram Repository . update Program Results Ġ{ Ġcurrent Results Ġ-> Ġcurrent Results . copy ( progress Ġ= Ġ 3 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Program Questions () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch WithError Handling ( error Propagation Streams Ġ= ĠarrayOf ( loading State Stream )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquestions Ġ= Ġprogram Repository . get Program Results (). questions ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( questions . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading State Stream . loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogram Repository . fetch Questions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading State Stream . loaded () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading State Stream . loaded () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtry Again () Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch Program Questions () ĊĠĠĠ Ġ} Ċ }