package Ġcom . example . store demo . ui Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . example . store demo . data . Added Product Ċ import Ġcom . example . store demo . data . Cart Repository Ċ import Ġcom . example . store demo . ui . products . Product Ċ Ċ class ĠCart ViewModel ( private Ġval Ġcart Repository : ĠCart Repository ) Ġ: ĠViewModel () Ġ{ ĊĠ Ġprivate Ġval Ġproducts Ġ= ĠMutable LiveData ( cart Repository ) ĊĊĠ Ġfun Ġobserve ( context : ĠAppCompatActivity , Ġcallback : Ġ( Cart Repository ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġproducts . observe ( context , ĠObserver Ġ{ Ġcart Ġ-> Ġcallback ( cart ) Ġ}) ĊĠĠĠ Ġproducts . value Ġ= Ġcart Repository ĊĠ Ġ} ĊĊĠ Ġfun Ġadd ( product : ĠProduct ) Ġ{ ĊĠĠĠĠĠ Ġcart Repository . add ( product ) ĊĠĠĠĠĠ Ġproducts . value Ġ= Ġcart Repository ĊĠ Ġ} ĊĊĠ Ġfun Ġproducts Description (): ĠString Ġ= Ġcart Repository . products () ĊĠĠĠ Ġ. join ToString ("\ n ") Ġ{ Ġ"${ it . name } Ġx Ġ${ it . quantity } Ġ=> Ġ${ it . total () }" Ġ} ĊĊĠ Ġfun Ġtotal Value (): ĠString Ġ{ ĊĠĠĠ Ġval Ġtotal Ġ= Ġcart Repository . products () ĊĠĠĠĠĠ Ġ. map Ġ{ Ġit . total () Ġ} ĊĠĠĠĠĠ Ġ. reduce Ġ{ Ġacc , Ġcurr Ġ-> Ġacc Ġ+ Ġcurr Ġ} ĊĠĠĠ Ġreturn Ġ"$ ${ total }" ĊĠ Ġ} Ċ } Ċ