package Ġio . horizontal systems . bank wallet . modules . nft . collection . events Ċ Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcash . z . ecc . android . sdk . ext . collect With Ċ import Ġio . horizontal systems . bank wallet . entities . ViewState Ċ import Ġio . horizontal systems . bank wallet . modules . nft . EventType Ċ import Ġio . horizontal systems . bank wallet . ui . compose . Select Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠN ft Collection Events ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġservice : ĠN ft Collection Events Service Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġvar Ġview Item Ġby Ġmutable State Of < View Item ? >( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġvar Ġevents Ġby Ġmutable State Of < List < Collection Event >? >( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġvar Ġview State Ġby Ġmutable State Of < ViewState >( ViewState . Loading ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġvar Ġloading More Ġby Ġmutable State Of ( false ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġvar Ġis Refresh ing Ġby Ġmutable State Of ( false ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġvar ĠeventType Selector State Ġby Ġmutable State Of < Selector Dialog State >( Selector Dialog State . Closed ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġprivate Ġval ĠeventType Select : ĠSelect < EventType > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSelect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . eventType , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEventType . All , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEventType . Sale , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEventType . List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEventType . Offer Entered , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEventType . Bid Entered , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEventType . Transfer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . items . collect With ( viewModel Scope ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . get OrNull ()?. let Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Item Ġ= ĠView Item ( eventType Select , Ġlist ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading More Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State Ġ= Ġresult . exception OrNull ()?. let Ġ{ ĠView State . Error ( it ) Ġ} Ġ?: ĠView State . Success ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Bottom Reached () Ġ{ ĊĠĠĠĠĠĠĠ Ġloading More Ġ= Ġ! is Refresh ing ĊĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . load More () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonError Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġrefresh With Min Loading Spinner Period () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġrefresh With Min Loading Spinner Period () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh With Min Loading Spinner Period () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Refresh ing Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . refresh () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonClick EventType () Ġ{ ĊĠĠĠĠĠĠĠ ĠeventType Selector State Ġ= ĠSelector Dialog State . Opened ( eventType Select ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonSelect Even Type ( eventType : ĠEventType ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . set EventType ( eventType ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠeventType Selector State Ġ= ĠSelector Dialog State . Closed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Dismiss EventType Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠeventType Selector State Ġ= ĠSelector Dialog State . Closed ĊĠĠĠ Ġ} Ċ Ċ } ĊĊĊ