package Ġcom . b rig gin . average . property . price . presentation Ċ Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . b rig gin . average . property . price . R Ċ import Ġcom . b rig gin . average . property . price . domain . Property DataSource Ċ import Ġcom . b rig gin . average . property . price . domain . Property Domain Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġjava . math . Round ingMode Ċ Ċ class ĠProperty ViewModel ( private Ġval ĠdataSource : ĠProperty DataSource ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ property Average : ĠMutable State Flow < String > Ġ= ĠMutable State Flow ("") ĊĠĠĠ Ġval Ġproperty Average : ĠFlow < String > Ġ= Ġ_ property Average ĊĊĠĠĠ Ġprivate Ġval Ġ_ error : ĠMutable State Flow < Int ?> Ġ= ĠMutable State Flow ( null ) ĊĠĠĠ Ġval Ġerror : ĠFlow < Int ?> Ġ= Ġ_ error ĊĊĠĠĠ Ġsuspend Ġfun ĠgetProperty Average () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġdomain Ġ= ĠdataSource . getProperty Prices ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProperty Domain . Success Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( domain . prices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Error ( R . string . error _ no _ prices ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ property Average . emit ( average ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ error . emit ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProperty Domain . Error Ġ-> Ġemit Error ( R . string . error _ unknown ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġemit Error (@ String Res Ġerror Res ID : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ error . emit ( error Res ID ) ĊĠĠĠĠĠĠĠ Ġ_ property Average . emit ("") ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠList < Long >. average : ĠString Ġget () Ġ= ĊĠĠĠ Ġto Long Array (). average (). to BigDecimal (). set Scale ( 2 , ĠRound ingMode . UP ). toString () Ċ