Skip to content

Commit

Permalink
Merge branch '2025-01-22-deposit-withdraw-calldatas' into 01-23-2025-…
Browse files Browse the repository at this point in the history
…add-depositwithdraw-buttons-to-orders
  • Loading branch information
hardingjam committed Jan 30, 2025
2 parents 7423a13 + 60f71d7 commit 26553e9
Showing 1 changed file with 16 additions and 36 deletions.
52 changes: 16 additions & 36 deletions crates/js_api/src/subgraph/vault.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
use super::order::get_sg_order;
use super::SubgraphError;
use alloy::primitives::{Address, Bytes, U256};
use cynic::Id;
use rain_orderbook_bindings::wasm_traits::prelude::*;
use rain_orderbook_common::deposit::DepositArgs;
use rain_orderbook_common::transaction::TransactionArgs;
use rain_orderbook_common::withdraw::WithdrawArgs;
use rain_orderbook_subgraph_client::types::common::{Order, VaultsListFilterArgs};
use rain_orderbook_subgraph_client::types::common::{Order, Vault, VaultsListFilterArgs};
use rain_orderbook_subgraph_client::{
MultiOrderbookSubgraphClient, MultiSubgraphArgs, OrderbookSubgraphClient,
OrderbookSubgraphClientError, PaginationArgs,
Expand Down Expand Up @@ -78,19 +77,15 @@ pub async fn get_vault_deposit_calldata(
/// Returns a string of the calldata
#[wasm_bindgen(js_name = "getVaultWithdrawCalldata")]
pub async fn get_vault_withdraw_calldata(
rpc_url: &str,
order_id: &str,
input_index: u8,
vault: &Vault,
withdraw_amount: &str,
) -> Result<JsValue, SubgraphError> {
let withdraw_amount = validate_amount(withdraw_amount)?;
let order = get_sg_order(rpc_url, order_id).await?;
let index = validate_io_index(&order, true, input_index)?;

Ok(to_value(&Bytes::copy_from_slice(
&WithdrawArgs {
token: Address::from_str(&order.inputs[index].token.address.0)?,
vault_id: U256::from_str(&order.inputs[index].vault_id.0)?,
token: Address::from_str(&vault.token.address.0)?,
vault_id: U256::from_str(&vault.vault_id.0)?,
target_amount: withdraw_amount,
}
.get_withdraw_calldata()
Expand All @@ -100,23 +95,16 @@ pub async fn get_vault_withdraw_calldata(

#[wasm_bindgen(js_name = "getVaultApprovalCalldata")]
pub async fn get_vault_approval_calldata(
token_address: &str,
vault_id: &str,
rpc_url: &str,
vault: &Vault,
deposit_amount: &str,
vault_owner: &str,
) -> Result<JsValue, SubgraphError> {
let deposit_amount = validate_amount(deposit_amount)?;
let token = Address::from_str(token_address)?;
let vault_id = U256::from_str(vault_id)?;
let owner = Address::from_str(vault_owner)?;
let owner = Address::from_str(&vault.owner.0)?;

let deposit_args = DepositArgs {
token,
amount: deposit_amount,
vault_id,
};
let (deposit_args, transaction_args) =
get_deposit_and_transaction_args(rpc_url, &vault, deposit_amount)?;

let transaction_args = TransactionArgs::default();
let allowance = deposit_args
.read_allowance(owner, transaction_args.clone())
.await?;
Expand All @@ -132,20 +120,13 @@ pub async fn get_vault_approval_calldata(
}

#[wasm_bindgen(js_name = "checkVaultAllowance")]
pub async fn check_vault_allowance(
rpc_url: &str,
order_id: &str,
input_index: u8,
) -> Result<JsValue, SubgraphError> {
let order = get_sg_order(rpc_url, order_id).await?;
let index = validate_io_index(&order, true, input_index)?;

pub async fn check_vault_allowance(rpc_url: &str, vault: &Vault) -> Result<JsValue, SubgraphError> {
let (deposit_args, transaction_args) =
get_deposit_and_transaction_args(rpc_url, &order, index, U256::ZERO)?;
get_deposit_and_transaction_args(rpc_url, &vault, U256::ZERO)?;

Ok(to_value(
&deposit_args
.read_allowance(Address::from_str(&order.owner.0)?, transaction_args.clone())
.read_allowance(Address::from_str(&vault.owner.0)?, transaction_args.clone())
.await?,
)?)
}
Expand Down Expand Up @@ -174,17 +155,16 @@ pub fn validate_io_index(order: &Order, is_input: bool, index: u8) -> Result<usi

pub fn get_deposit_and_transaction_args(
rpc_url: &str,
order: &Order,
index: usize,
vault: &Vault,
amount: U256,
) -> Result<(DepositArgs, TransactionArgs), SubgraphError> {
let deposit_args = DepositArgs {
token: Address::from_str(&order.outputs[index].token.address.0)?,
vault_id: U256::from_str(&order.outputs[index].vault_id.0)?,
token: Address::from_str(&vault.token.address.0)?,
vault_id: U256::from_str(&vault.vault_id.0)?, // Use vault_id instead of id
amount,
};
let transaction_args = TransactionArgs {
orderbook_address: Address::from_str(&order.orderbook.id.0)?,
orderbook_address: Address::from_str(&vault.orderbook.id.0)?,
rpc_url: rpc_url.to_string(),
..Default::default()
};
Expand Down

0 comments on commit 26553e9

Please sign in to comment.