package Ġapp . bo let inh os . summary Ċ Ċ import Ġapp . bo let inh os . bill . add . Add Bill View Key Ċ import Ġapp . bo let inh os . domain . summary . Fetch Summary Ċ import Ġapp . bo let inh os . domain . summary . Summary Ċ import Ġapp . bo let inh os . error . Error ViewModel Ċ import Ġapp . bo let inh os . lifecycle . Lifecycle Aware Coroutine Scope Ċ import Ġapp . bo let inh os . summary . Summary Item Card View . Model . Kind Ċ import Ġapp . bo let inh os . welcome . Welcome View Key Ċ import Ġcom . zh u inden . simple stack . Back stack Ċ import Ġcom . zh u inden . simple stack . Bundle able Ċ import Ġcom . zh u inden . simple stack . History Ċ import Ġcom . zh u inden . simple stack . StateChange Ċ import Ġcom . zh u inden . state bundle . State Bundle Ċ import Ġcommon . Activity Ret ained Scope Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . catch Ċ import Ġkotlinx . coroutines . flow . filter Is Instance Ċ import Ġkotlinx . coroutines . flow . flow On Ċ import Ġkotlinx . coroutines . flow . launch In Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġkotlinx . coroutines . flow . on Empty Ċ import Ġjavax . inject . Inject Ċ import Ġapp . bo let inh os . R . drawable Ġas ĠDraw ables Ċ import Ġapp . bo let inh os . R . string Ġas ĠText s Ċ Ċ @ Activity Ret ained Scope Ċ class ĠSummary ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval ĠviewModel Scope : ĠLifecycle Aware Coroutine Scope , ĊĠĠĠ Ġprivate Ġval Ġfetch Summary : ĠFetch Summary , ĊĠĠĠ Ġprivate Ġval Ġback stack : ĠBack stack Ċ ) Ġ: ĠBundle able Ġ{ ĊĠĠĠ Ġprivate Ġval Ġview State Ġ= ĠMutable State Flow ( Summary ViewState ()) ĊĊĠĠĠ Ġoverride Ġfun Ġfrom Bundle ( bundle : ĠState Bundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġview State . value Ġ= Ġbundle ?. get Parcelable ( KEY _ B UNDLE _ SUM MARY _ STATE ) Ġ?: ĠSummary ViewState () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Bundle (): ĠState Bundle Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠState Bundle (). put Parcelable ( KEY _ B UNDLE _ SUM MARY _ STATE , Ġview State . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke ( view Events : ĠFlow < Summary View Event >): ĠFlow < Summary ViewState > Ġ{ ĊĠĠĠĠĠĠĠ Ġview Events . filter Is Instance < Summary View Event . Fetch Data >(). then Fetch () ĊĠĠĠĠĠĠĠ Ġview Events . filter Is Instance < Summary View Event . OnClick In Add Bill >(). navigate () ĊĠĠĠĠĠĠĠ Ġreturn Ġview State ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠFlow < Summary View Event . Fetch Data >. then Fetch () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State . value Ġ= ĠSummary ViewState ( isLoading Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Summary () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flow On ( viewModel Scope . io ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. if Success Render On Ui () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Render On Ui () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. if Empty Launch Welcome Screen () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch In ( viewModel Scope ) ĊĠĠĠĠĠĠĠ Ġ}. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠFlow < Summary View Event . OnClick In Add Bill >. navigate () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Each Ġ{ Ġback stack . goTo ( Add Bill View Key ()) Ġ}. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠFlow < Summary >. if Empty Launch Welcome Screen () Ġ= Ġon Empty Ġ{ ĊĠĠĠĠĠĠĠ Ġback stack . set History ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHistory . of ( Welcome View Key ()), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠState Change . BACK WARD ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠFlow < Summary >. if Success Render On Ui () Ġ= Ġon Each Ġ{ Ġsummary Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġitem Month Ġ= ĠSummary Item Card View . Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Res Ġ= ĠDraw ables . ic _ summary , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠText s . text _ month _ summary , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Arg Ġ= Ġsummary . displayName (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Res Ġ= ĠText s . text _ b ills , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value Ġ= Ġsummary . formatted Total Value (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkind Ġ= ĠKind . MONTH _ SUM MARY ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġitem Pa ids Ġ= ĠSummary Item Card View . Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Res Ġ= ĠDraw ables . ic _ paid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠText s . text _ b ills _ pa ids , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Res Ġ= ĠText s . text _ b ills , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value Ġ= Ġsummary . pa ids . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkind Ġ= ĠKind . PA IDS ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġitem Un pa ids Ġ= ĠSummary Item Card View . Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Res Ġ= ĠDraw ables . ic _ hour glass , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠText s . text _ b ills _ un pa ids , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Res Ġ= ĠText s . text _ b ills , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value Ġ= Ġsummary . un pa ids . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkind Ġ= ĠKind . UN PA IDS ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġitem Over due Ġ= ĠSummary Item Card View . Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Res Ġ= ĠDraw ables . ic _ calendar , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠText s . text _ b ills _ over due , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Res Ġ= ĠText s . text _ b ills , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value Ġ= Ġsummary . over due . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkind Ġ= ĠKind . OVER D UE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġview State . value Ġ= ĠSummary ViewState ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Action And Summary Visible Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Ġ= ĠlistOf ( item Month , Ġitem Pa ids , Ġitem Un pa ids , Ġitem Over due ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠFlow < Summary >. onError Render On Ui () Ġ= Ġcatch Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠError ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠText s . text _ summary _ error _ title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Res Ġ= ĠText s . text _ summary _ error _ message ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġview State . value Ġ= ĠSummary ViewState ( error Ġ= Ġerror ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠKEY _ B UNDLE _ SUM MARY _ STATE Ġ= Ġ" bo let inh os . summary view state . bundle " ĊĠĠĠ Ġ} Ċ } Ċ