package Ġcom . fore ver raf s . super di ary . framework . presentation . di ary list čĊč Ċ import Ġandroidx . lifecycle . viewModel Scope č Ċ import Ġcom . fore ver raf s . super di ary . business . model . Di ary č Ċ import Ġcom . fore ver raf s . super di ary . business . use case . di ary list . Di ary List Interactor č Ċ import Ġcom . fore ver raf s . super di ary . framework . presentation . common . Base ViewModel č Ċ import Ġcom . fore ver raf s . super di ary . framework . presentation . di ary list . state . Di ary List State č Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel č Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher č Ċ import Ġkotlinx . coroutines . flow . catch č Ċ import Ġkotlinx . coroutines . flow . collect č Ċ import Ġkotlinx . coroutines . launch č Ċ import Ġjava . time . LocalDate č Ċ import Ġjavax . inject . Inject čĊčĊč Ċ @ H ilt ViewModel č Ċ class ĠDi ary List ViewModel č Ċ @ Inject č Ċ constructor ( čĊĠĠĠ Ġprivate Ġval Ġlist Interactor : ĠDi ary List Interactor , čĊĠĠĠ Ġprivate Ġval Ġdispatcher : ĠCor outine Dispatcher , č Ċ ) Ġ: ĠBase ViewModel < Di ary List State >() Ġ{ čĊčĊĠĠĠ Ġprivate Ġvar Ġ_ all Di aries Ġ= Ġempty List < Di ary >() čĊčĊĠĠĠ Ġprivate Ġvar Ġ_ selected Date : ĠLocalDate Ġ= ĠLocalDate . now () čĊčĊčĊĠĠĠ Ġval Ġdate For Selected Di ary : ĠLocalDate čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ selected Date čĊčĊĠĠĠ Ġfun ĠsetSelected Date For Di aries ( value : ĠLocalDate ) Ġ{ čĊĠĠĠĠĠĠĠ Ġ_ selected Date Ġ= Ġvalue čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġval Ġall Di aries : ĠList < Di ary > čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ all Di aries čĊčĊĠĠĠ Ġinit Ġ{ čĊĠĠĠĠĠĠĠ ĠgetAll Di aries () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠgetAll Di aries () Ġ= ĠviewModel Scope . launch ( dispatcher ) Ġ{ čĊĠĠĠĠĠĠĠ Ġlist Interactor . fetch All Di aries () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. catch Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . cause ?. let Ġ{ Ġcause Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ViewState ( Di ary List State . Error ( cause )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsorted Di aries Ġ= Ġit . sorted By Descending Ġ{ Ġdi ary Item Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdi ary Item . date čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ all Di aries Ġ= Ġsorted Di aries čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Di aries For Date (_ selected Date ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġdelete Di ary ( di ary : ĠDi ary ) Ġ= ĠviewModel Scope . launch ( dispatcher ) Ġ{ čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Interactor . delete Di ary ( di ary ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ViewState ( Di ary List State . Deleted ( di ary )) čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠThrowable ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ViewState ( Di ary List State . Error ( exception )) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Di aries For Date ( date : ĠLocalDate ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġ_ all Di aries . filter Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . date . to LocalDate () Ġ== Ġdate čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( filtered . isNotEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ViewState ( Di ary List State . Di ary List ( filtered )) čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ViewState ( Di ary List State . Empty ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ }