@@ -939,7 +939,7 @@ pub trait ReplacePallet {
939939 /// Get all replace requests made by the given vault
940940 async fn get_old_vault_replace_requests (
941941 & self ,
942- account_id : AccountId ,
942+ maybe_account_id : Option < AccountId > ,
943943 ) -> Result < Vec < ( H256 , InterBtcReplaceRequest ) > , Error > ;
944944
945945 /// Get the time difference in number of blocks between when a replace
@@ -1035,22 +1035,35 @@ impl ReplacePallet for InterBtcParachain {
10351035 /// Get all replace requests made by the given vault
10361036 async fn get_old_vault_replace_requests (
10371037 & self ,
1038- account_id : AccountId ,
1038+ maybe_account_id : Option < AccountId > ,
10391039 ) -> Result < Vec < ( H256 , InterBtcReplaceRequest ) > , Error > {
10401040 let head = self . get_finalized_block_hash ( ) . await ?;
1041- let result: Vec < H256 > = self
1042- . api
1043- . rpc ( )
1044- . request ( "replace_getOldVaultReplaceRequests" , rpc_params ! [ account_id, head] )
1045- . await ?;
1046- join_all (
1047- result
1048- . into_iter ( )
1049- . map ( |key| async move { self . get_replace_request ( key) . await . map ( |value| ( key, value) ) } ) ,
1050- )
1051- . await
1052- . into_iter ( )
1053- . collect ( )
1041+ if let Some ( account_id) = maybe_account_id {
1042+ let result: Vec < H256 > = self
1043+ . api
1044+ . rpc ( )
1045+ . request ( "replace_getOldVaultReplaceRequests" , rpc_params ! [ account_id, head] )
1046+ . await ?;
1047+ join_all (
1048+ result
1049+ . into_iter ( )
1050+ . map ( |key| async move { self . get_replace_request ( key) . await . map ( |value| ( key, value) ) } ) ,
1051+ )
1052+ . await
1053+ . into_iter ( )
1054+ . collect ( )
1055+ } else {
1056+ let key_addr = metadata:: storage ( ) . replace ( ) . replace_requests_root ( ) ;
1057+ let mut iter = self . api . storage ( ) . iter ( key_addr, DEFAULT_PAGE_SIZE , head) . await ?;
1058+ let mut replace_requests = Vec :: new ( ) ;
1059+ while let Some ( ( replace_id, request) ) = iter. next ( ) . await ? {
1060+ let key_hash = replace_id. 0 . as_slice ( ) ;
1061+ // last bytes are the raw key
1062+ let key = & key_hash[ key_hash. len ( ) - 32 ..] ;
1063+ replace_requests. push ( ( H256 :: from_slice ( key) , request) ) ;
1064+ }
1065+ Ok ( replace_requests)
1066+ }
10541067 }
10551068
10561069 async fn get_replace_period ( & self ) -> Result < u32 , Error > {
@@ -1340,10 +1353,11 @@ pub trait RedeemPallet {
13401353
13411354 async fn get_redeem_request ( & self , redeem_id : H256 ) -> Result < InterBtcRedeemRequest , Error > ;
13421355
1343- /// Get all redeem requests requested of the given vault
1344- async fn get_vault_redeem_requests (
1356+ /// Get all redeem requests, if the account is specified
1357+ /// only return those for that Vault
1358+ async fn get_redeem_requests (
13451359 & self ,
1346- account_id : AccountId ,
1360+ maybe_account_id : Option < AccountId > ,
13471361 ) -> Result < Vec < ( H256 , InterBtcRedeemRequest ) > , Error > ;
13481362
13491363 async fn get_redeem_period ( & self ) -> Result < BlockNumber , Error > ;
@@ -1386,24 +1400,37 @@ impl RedeemPallet for InterBtcParachain {
13861400 . await
13871401 }
13881402
1389- async fn get_vault_redeem_requests (
1403+ async fn get_redeem_requests (
13901404 & self ,
1391- account_id : AccountId ,
1405+ maybe_account_id : Option < AccountId > ,
13921406 ) -> Result < Vec < ( H256 , InterBtcRedeemRequest ) > , Error > {
13931407 let head = self . get_finalized_block_hash ( ) . await ?;
1394- let result: Vec < H256 > = self
1395- . api
1396- . rpc ( )
1397- . request ( "redeem_getVaultRedeemRequests" , rpc_params ! [ account_id, head] )
1398- . await ?;
1399- join_all (
1400- result
1401- . into_iter ( )
1402- . map ( |key| async move { self . get_redeem_request ( key) . await . map ( |value| ( key, value) ) } ) ,
1403- )
1404- . await
1405- . into_iter ( )
1406- . collect ( )
1408+ if let Some ( account_id) = maybe_account_id {
1409+ let result: Vec < H256 > = self
1410+ . api
1411+ . rpc ( )
1412+ . request ( "redeem_getVaultRedeemRequests" , rpc_params ! [ account_id, head] )
1413+ . await ?;
1414+ join_all (
1415+ result
1416+ . into_iter ( )
1417+ . map ( |key| async move { self . get_redeem_request ( key) . await . map ( |value| ( key, value) ) } ) ,
1418+ )
1419+ . await
1420+ . into_iter ( )
1421+ . collect ( )
1422+ } else {
1423+ let key_addr = metadata:: storage ( ) . redeem ( ) . redeem_requests_root ( ) ;
1424+ let mut iter = self . api . storage ( ) . iter ( key_addr, DEFAULT_PAGE_SIZE , head) . await ?;
1425+ let mut redeem_requests = Vec :: new ( ) ;
1426+ while let Some ( ( redeem_id, request) ) = iter. next ( ) . await ? {
1427+ let key_hash = redeem_id. 0 . as_slice ( ) ;
1428+ // last bytes are the raw key
1429+ let key = & key_hash[ key_hash. len ( ) - 32 ..] ;
1430+ redeem_requests. push ( ( H256 :: from_slice ( key) , request) ) ;
1431+ }
1432+ Ok ( redeem_requests)
1433+ }
14071434 }
14081435
14091436 async fn get_redeem_period ( & self ) -> Result < BlockNumber , Error > {
0 commit comments