package Ġio . horizontal systems . bank wallet . modules . nft . collections Ċ Ċ 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 Ġio . horizontal systems . bank wallet . R Ċ import Ġio . horizontal systems . bank wallet . entities . Currency Value Ċ import Ġio . horizontal systems . bank wallet . entities . ViewState Ċ import Ġio . horizontal systems . bank wallet . modules . nft . Data WithError Ċ import Ġio . horizontal systems . bank wallet . modules . nft . N ft Collection Record Ċ import Ġio . horizontal systems . bank wallet . modules . nft . collection . assets . Collection Asset Ċ import Ġio . horizontal systems . bank wallet . modules . nft . view State Ċ import Ġio . horizontal systems . bank wallet . ui . compose . Trans latable String Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . net . Unknown Host Exception Ċ Ċ class ĠN ft Collections ViewModel ( private Ġval Ġservice : ĠN ft Collections Service ) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġval Ġprice Type Ġby Ġservice :: price Type ĊĊĠĠĠ Ġvar Ġview State Ġby Ġmutable State Of < ViewState >( ViewState . Loading ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġloading Ġby Ġmutable State Of ( false ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar ĠerrorMessage Ġby Ġmutable State Of < Trans latable String ? >( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġcollection View Items Ġby Ġmutable State Of < List < N ft CollectionView Item >>( listOf ()) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġtotal Currency Price Ġby Ġmutable State Of < Currency Value ? >( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . service Item Data Flow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle N ft Collections ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle N ft Collections ( data WithError : ĠData WithError < Pair < Map < N ft Collection Record , ĠList < Collection Asset >>, ĠCurrency Value > ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġdata WithError . value ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġdata WithError . error ĊĊĠĠĠĠĠĠĠ Ġdata WithError . view State ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync Items ( data . first , Ġdata . second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġerror ?. let Ġ{ Ġerror Text ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġerror Text ( error : ĠException ): ĠTrans latable String Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUnknown Host Exception Ġ-> ĠTrans latable String . Res String ( R . string . Hud _ Text _ No Internet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTrans latable String . Plain String ( error . message Ġ?: Ġerror . java Class . simple Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsync Items ( ĊĠĠĠĠĠĠĠ Ġcollection Items : ĠMap < N ft Collection Record , ĠList < Collection Asset >>, ĊĠĠĠĠĠĠĠ Ġtotal Currency Price : ĠCurrency Value ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpanded States Ġ= Ġcollection View Items . associate Ġ{ Ġit . slug Ġto Ġit . expanded Ġ} ĊĠĠĠĠĠĠĠ Ġcollection View Items Ġ= Ġcollection Items . map Ġ{ Ġ( collection Record , Ġasset Items ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN ft CollectionView Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslug Ġ= Ġcollection Record . uid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcollection Record . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġcollection Record . imageUrl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassets Ġ= Ġasset Items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpanded Ġ= Ġexpanded States [ collection Record . uid ] Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . total Currency Price Ġ= Ġtotal Currency Price ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . refresh () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle Collection ( collection : ĠN ft CollectionView Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġcollection View Items . indexOf ( collection ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection View Items Ġ= Ġcollection View Items . to Mutable List (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ index ] Ġ= Ġcollection . copy ( expanded Ġ= Ġ! collection . expanded ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Price Type ( price Type : ĠPrice Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġservice . update Price Type ( price Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġerror Shown () Ġ{ ĊĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġnull ĊĠĠĠ Ġ} Ċ Ċ } Ċ