package Ġio . github . lord ray den mk . android _ fx . example 0 2 Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġarrow . fx . IO Ċ import Ġarrow . fx . IO . Companion . effect Ċ import Ġarrow . fx . extensions . fx Ċ import Ġarrow . fx . handleError Ċ import Ġarrow . integrations . kotlin x . unsafe Run Scoped Ċ import Ġio . github . lord ray den mk . android _ fx . view . ViewState Ċ import Ġio . github . lord ray den mk . android _ fx . data . Github Service Ċ import Ġio . github . lord ray den mk . android _ fx . data . Repository Dto Ċ import Ġio . github . lord ray den mk . android _ fx . view . errorMessage Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ Ċ class ĠSequential Api Calls ViewModel Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġgithub Service : ĠGithub Service Ġ= ĠGithub Service . create ( error Probability Ġ= Ġ 1 0 ) Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ view State Ġ= ĠMutable LiveData < ViewState < Repository Dto >>() ĊĠĠĠ Ġval Ġview State : ĠLive Data < ViewState < Repository Dto >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ view State ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġexecute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġexecute () Ġ{ ĊĠĠĠĠĠĠĠ ĠIO . fx Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ view State . post Value ( ViewState . Loading ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue On ( Dispatch ers . IO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġeffect Ġ{ Ġgithub Service . getRepository () Ġ}. bind () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Details Ġ= Ġeffect Ġ{ Ġgithub Service . getRepository Details ( model . id ) Ġ}. bind () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue On ( Dispatch ers . Default ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView State . Content ( model Details ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. handleError Ġ{ ĠView State . Error ( it . errorMessage ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġeffect Ġ{ Ġ_ view State . post Value ( it ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. unsafe Run Scoped ( viewModel Scope ) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbonus () Ġ{ ĊĠĠĠĠĠĠĠ ĠIO . fx Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ view State . post Value ( ViewState . Loading ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue On ( Dispatch ers . IO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġeffect Ġ{ Ġgithub Service . getRepository () Ġ}. bind () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel 2 Ġ= Ġeffect Ġ{ Ġgithub Service . getRepository () Ġ}. bind () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Details Ġ= Ġeffect Ġ{ Ġgithub Service . getRepository Details ( model . id ) Ġ}. bind () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġignored Ġ= Ġeffect Ġ{ Ġgithub Service . getRepository Details ( model 2 . id ) Ġ}. bind () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue On ( Dispatch ers . Default ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView State . Content ( model Details ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. handleError Ġ{ ĠView State . Error ( it . errorMessage ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġeffect Ġ{ Ġ_ view State . post Value ( it ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. unsafe Run Scoped ( viewModel Scope ) Ġ{} ĊĠĠĠ Ġ} Ċ }