package Ġcom . dx n . seller . ui . fragments . add Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . dx n . data . models . Catalog ue Product Ċ import Ġcom . dx n . data . models . Product Ċ import Ġcom . dx n . data . models . User Ċ import Ġcom . dx n . seller . domain . Repository Ċ import Ġcom . dx n . seller . ui . fragments . home . Home ViewModel Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠAdd ViewModel Ċ @ Inject Ċ constructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠRepository Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ products Ġ= ĠMutable State Flow < List < Product >>( listOf ()) ĊĠĠĠ Ġval Ġproducts Ġ: ĠShared Flow < List < Product >> Ġget () Ġ= Ġ_ products ĊĊĠĠĠ Ġprivate Ġval Ġ_ logged In User Ġ= ĠMutable State Flow < User ? >( null ) ĊĠĠĠ Ġval Ġlogged In User Ġ: ĠShared Flow < User ?> Ġget () Ġ= Ġ_ logged In User ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġload Products () ĊĠĠĠĠĠĠĠ Ġload User () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Product ( product : ĠCatalog ue Product ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . add Products ( product ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload User () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ logged In User . value Ġ= Ġ Ġrepository . get LoggedIn User () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġload Products () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" load Products : Ġ") ĊĠĠĠĠĠĠĠ Ġrepository . getAll Products (). on Each Ġ{ Ġ Ġp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" load Products : Ġ$ p ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ products . value Ġ= Ġp ĊĠĠĠĠĠĠĠ Ġ}. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" ADD _ VIEW _ MODEL " ĊĠĠĠ Ġ} Ċ Ċ }