package Ġorg . erg op l atform . android . transactions Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġandroidx . paging . Pager Ċ import Ġandroidx . paging . Paging Config Ċ import Ġandroidx . paging . Paging Source Ċ import Ġandroidx . paging . Paging State Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . erg op l atform . pers istance . I App Database Ċ import Ġorg . erg op l atform . pers istance . Transaction Db Provider Ċ import Ġorg . erg op l atform . pers istance . Wallet Ċ import Ġorg . erg op l atform . ui logic . transactions . Address Transaction With Tokens Ċ import Ġorg . erg op l atform . wallet . get Derived Address Ċ import Ġorg . erg op l atform . wallet . get Derived Address Entity Ċ Ċ class ĠAddress Transaction ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġwallet : ĠWallet ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġ_ wallet Ġ= ĠMutable LiveData < Wallet ?> () ĊĠĠĠ Ġval Ġwallet LiveData : ĠLive Data < Wallet ?> Ġget () Ġ= Ġ_ wallet ĊĊĠĠĠ Ġvar Ġder ivation Idx Ġ= Ġ 0 ĊĊĠĠĠ Ġval Ġderived Address Ġget () Ġ= Ġwallet ?. get Derived Address Entity ( der ivation Idx ) ĊĊĠĠĠ Ġfun Ġinit ( wallet Id : ĠInt , Ġder ivation Idx : ĠInt , Ġdb : ĠI App Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( wallet Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . der ivation Idx Ġ= Ġder ivation Idx ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwallet Ġ= Ġdb . wallet Db Provider . load Wallet With State ById ( wallet Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ wallet . post Value ( wallet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetData Flow ( transaction Db Provider : ĠTransaction Db Provider ) Ġ= ĠP ager ( ĊĠĠĠĠĠĠĠ Ġ// ĠConfigure Ġhow Ġdata Ġis Ġloaded Ġby Ġpassing Ġadditional Ġproperties Ġto ĊĠĠĠĠĠĠĠ Ġ// ĠP aging Config , Ġsuch Ġas Ġprefetch Distance . ĊĠĠĠĠĠĠĠ ĠP aging Config ( pageSize Ġ= Ġ 2 0 ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTransaction Paged Source ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Db Provider , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwallet ?. get Derived Address ( der ivation Idx ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}. flow ĊĊĊĠĠĠ Ġclass ĠTransaction Paged Source ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtransaction Db Provider : ĠTransaction Db Provider , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġaddress : ĠString ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ ĠP aging Source < Int , ĠAddress Transaction With Tokens >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġload ( params : ĠLoad Params < Int >): ĠLoad Result < Int , ĠAddress Transaction With Tokens > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStart Ġrefresh Ġat Ġpage Ġ 1 Ġif Ġundefined . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Page Number Ġ= Ġparams . key Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Db Provider . load Address Transactions With Tokens ( address , Ġ 5 0 , Ġnext Page Number ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLoad Result . Page ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġresponse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Key Ġ= Ġnull , Ġ// ĠOnly Ġpaging Ġforward ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Key Ġ= Ġif Ġ( response . isEmpty ()) Ġnull Ġelse Ġnext Page Number Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Refresh Key ( state : ĠP aging State < Int , ĠAddress Transaction With Tokens >): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstate . anchor Position ?. let Ġ{ Ġanchor Position Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanchor Page Ġ= Ġstate . closest Page To Position ( anchor Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Page ?. prev Key ?. plus ( 1 ) Ġ?: Ġanchor Page ?. next Key ?. minus ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }