@@ -791,7 +791,7 @@ pub trait ReplacePallet {
791791 /// Get all replace requests made by the given vault
792792 async fn get_old_vault_replace_requests (
793793 & self ,
794- account_id : AccountId ,
794+ maybe_account_id : Option < AccountId > ,
795795 ) -> Result < Vec < ( H256 , InterBtcReplaceRequest ) > , Error > ;
796796
797797 /// Get the time difference in number of blocks between when a replace
@@ -886,22 +886,35 @@ impl ReplacePallet for InterBtcParachain {
886886 /// Get all replace requests made by the given vault
887887 async fn get_old_vault_replace_requests (
888888 & self ,
889- account_id : AccountId ,
889+ maybe_account_id : Option < AccountId > ,
890890 ) -> Result < Vec < ( H256 , InterBtcReplaceRequest ) > , Error > {
891891 let head = self . get_finalized_block_hash ( ) . await ?;
892- let result: Vec < H256 > = self
893- . api
894- . rpc ( )
895- . request ( "replace_getOldVaultReplaceRequests" , rpc_params ! [ account_id, head] )
896- . await ?;
897- join_all (
898- result
899- . into_iter ( )
900- . map ( |key| async move { self . get_replace_request ( key) . await . map ( |value| ( key, value) ) } ) ,
901- )
902- . await
903- . into_iter ( )
904- . collect ( )
892+ if let Some ( account_id) = maybe_account_id {
893+ let result: Vec < H256 > = self
894+ . api
895+ . rpc ( )
896+ . request ( "replace_getOldVaultReplaceRequests" , rpc_params ! [ account_id, head] )
897+ . await ?;
898+ join_all (
899+ result
900+ . into_iter ( )
901+ . map ( |key| async move { self . get_replace_request ( key) . await . map ( |value| ( key, value) ) } ) ,
902+ )
903+ . await
904+ . into_iter ( )
905+ . collect ( )
906+ } else {
907+ let key_addr = metadata:: storage ( ) . replace ( ) . replace_requests_root ( ) ;
908+ let mut iter = self . api . storage ( ) . iter ( key_addr, DEFAULT_PAGE_SIZE , head) . await ?;
909+ let mut replace_requests = Vec :: new ( ) ;
910+ while let Some ( ( replace_id, request) ) = iter. next ( ) . await ? {
911+ let key_hash = replace_id. 0 . as_slice ( ) ;
912+ // last bytes are the raw key
913+ let key = & key_hash[ key_hash. len ( ) - 32 ..] ;
914+ replace_requests. push ( ( H256 :: from_slice ( key) , request) ) ;
915+ }
916+ Ok ( replace_requests)
917+ }
905918 }
906919
907920 async fn get_replace_period ( & self ) -> Result < u32 , Error > {
@@ -1184,10 +1197,11 @@ pub trait RedeemPallet {
11841197
11851198 async fn get_redeem_request ( & self , redeem_id : H256 ) -> Result < InterBtcRedeemRequest , Error > ;
11861199
1187- /// Get all redeem requests requested of the given vault
1188- async fn get_vault_redeem_requests (
1200+ /// Get all redeem requests, if the account is specified
1201+ /// only return those for that Vault
1202+ async fn get_redeem_requests (
11891203 & self ,
1190- account_id : AccountId ,
1204+ maybe_account_id : Option < AccountId > ,
11911205 ) -> Result < Vec < ( H256 , InterBtcRedeemRequest ) > , Error > ;
11921206
11931207 async fn get_redeem_period ( & self ) -> Result < BlockNumber , Error > ;
@@ -1229,24 +1243,37 @@ impl RedeemPallet for InterBtcParachain {
12291243 . await
12301244 }
12311245
1232- async fn get_vault_redeem_requests (
1246+ async fn get_redeem_requests (
12331247 & self ,
1234- account_id : AccountId ,
1248+ maybe_account_id : Option < AccountId > ,
12351249 ) -> Result < Vec < ( H256 , InterBtcRedeemRequest ) > , Error > {
12361250 let head = self . get_finalized_block_hash ( ) . await ?;
1237- let result: Vec < H256 > = self
1238- . api
1239- . rpc ( )
1240- . request ( "redeem_getVaultRedeemRequests" , rpc_params ! [ account_id, head] )
1241- . await ?;
1242- join_all (
1243- result
1244- . into_iter ( )
1245- . map ( |key| async move { self . get_redeem_request ( key) . await . map ( |value| ( key, value) ) } ) ,
1246- )
1247- . await
1248- . into_iter ( )
1249- . collect ( )
1251+ if let Some ( account_id) = maybe_account_id {
1252+ let result: Vec < H256 > = self
1253+ . api
1254+ . rpc ( )
1255+ . request ( "redeem_getVaultRedeemRequests" , rpc_params ! [ account_id, head] )
1256+ . await ?;
1257+ join_all (
1258+ result
1259+ . into_iter ( )
1260+ . map ( |key| async move { self . get_redeem_request ( key) . await . map ( |value| ( key, value) ) } ) ,
1261+ )
1262+ . await
1263+ . into_iter ( )
1264+ . collect ( )
1265+ } else {
1266+ let key_addr = metadata:: storage ( ) . redeem ( ) . redeem_requests_root ( ) ;
1267+ let mut iter = self . api . storage ( ) . iter ( key_addr, DEFAULT_PAGE_SIZE , head) . await ?;
1268+ let mut redeem_requests = Vec :: new ( ) ;
1269+ while let Some ( ( redeem_id, request) ) = iter. next ( ) . await ? {
1270+ let key_hash = redeem_id. 0 . as_slice ( ) ;
1271+ // last bytes are the raw key
1272+ let key = & key_hash[ key_hash. len ( ) - 32 ..] ;
1273+ redeem_requests. push ( ( H256 :: from_slice ( key) , request) ) ;
1274+ }
1275+ Ok ( redeem_requests)
1276+ }
12501277 }
12511278
12521279 async fn get_redeem_period ( & self ) -> Result < BlockNumber , Error > {
0 commit comments