package Ġcom . dx n . ag venture . features . seller . ui . home Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . dx n . ag venture . features . seller . domain . Repository Ċ import Ġcom . dx n . ag venture . features . seller . ui . add . Add ViewModel Ċ import Ġcom . dx n . data . models . Catalog ue Product Ċ import Ġcom . dx n . data . models . User Ċ 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 ĠHome ViewModel Ċ @ Inject Ċ constructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠRepository , Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ products Ġ= ĠMutable State Flow < Home Ui State >( Home Ui State . Loading ) ĊĠĠĠ Ġval Ġproducts : ĠState Flow < Home Ui State > Ġget () Ġ= Ġ_ products ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġload Products () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Products () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġrepository . get LoggedIn User () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get Products ( user . phoneNumber ). on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" load Products : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ products . value Ġ= ĠHome Ui State . Success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. launch In ( viewModel Scope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ products . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHome Ui State . Error ( if Ġ( e . localized Message Ġ!= Ġnull ) Ġe . localized Message Ġelse Ġ" Something Ġwent Ġwrong ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Product ( productId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogged In User Ġ= Ġrepository . get LoggedIn User () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . remove Product ( logged In User . phoneNumber , ĠproductId ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġsealed Ġclass ĠHome Ui State Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠLoading Ġ: ĠHome Ui State () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠSuccess ( val Ġproducts : ĠList < Catalog ue Product >) Ġ: ĠHome Ui State () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠError ( val Ġerror : ĠString ) Ġ: ĠHome Ui State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" HOME _ VIEW _ MODEL " ĊĠĠĠ Ġ} Ċ }