Skip to content

Commit

Permalink
Merge pull request #1341 from rainlanguage/2025-02-18-any-functions
Browse files Browse the repository at this point in the history
Add any functions for deposits and vault ids
  • Loading branch information
hardyjosh authored Feb 19, 2025
2 parents a39712a + 45b7608 commit a51a77b
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 11 deletions.
5 changes: 5 additions & 0 deletions crates/js_api/src/gui/deposits.rs
Original file line number Diff line number Diff line change
Expand Up @@ -138,4 +138,9 @@ impl DotrainOrderGui {
}
Ok(missing_deposits)
}

#[wasm_bindgen(js_name = "hasAnyDeposit")]
pub fn has_any_deposit(&self) -> bool {
!self.deposits.is_empty()
}
}
6 changes: 6 additions & 0 deletions crates/js_api/src/gui/order_operations.rs
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,12 @@ impl DotrainOrderGui {
Ok(IOVaultIds(map))
}

#[wasm_bindgen(js_name = "hasAnyVaultId")]
pub fn has_any_vault_id(&self) -> Result<bool, GuiError> {
let map = self.get_vault_ids()?;
Ok(map.0.values().any(|ids| ids.iter().any(|id| id.is_some())))
}

#[wasm_bindgen(js_name = "updateScenarioBindings")]
pub fn update_scenario_bindings(&mut self) -> Result<(), GuiError> {
let deployment = self.get_current_deployment()?;
Expand Down
10 changes: 8 additions & 2 deletions packages/orderbook/test/js_api/gui.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,9 @@ import {
AddOrderCalldataResult,
AllFieldValuesResult,
AllowancesResult,
ApprovalCalldataResult,
DeploymentDetails,
DeploymentKeys,
DepositAndAddOrderCalldataResult,
DepositCalldataResult,
Gui,
GuiDeployment,
IOVaultIds,
Expand Down Expand Up @@ -447,9 +445,13 @@ describe('Rain Orderbook JS API Package Bindgen Tests - Gui', async function ()
});

it('should add deposit', async () => {
assert.equal(gui.hasAnyDeposit(), false);

gui.saveDeposit('token1', '50.6');
const deposits: TokenDeposit[] = gui.getDeposits();
assert.equal(deposits.length, 1);

assert.equal(gui.hasAnyDeposit(), true);
});

it('should update deposit', async () => {
Expand Down Expand Up @@ -1178,8 +1180,12 @@ ${dotrainWithoutVaultIds}`;
assert.equal(currentDeployment.deployment.order.inputs[0].vaultId, undefined);
assert.equal(currentDeployment.deployment.order.outputs[0].vaultId, undefined);

assert.equal(gui.hasAnyVaultId(), false);

gui.setVaultId(true, 0, '0x123');

assert.equal(gui.hasAnyVaultId(), true);

assert.equal(gui.getVaultIds().get('input')?.[0], '0x123');
assert.equal(gui.getVaultIds().get('output')?.[0], undefined);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,15 +254,9 @@
if (!allTokensSelected) return;
// if we have deposits or vault ids set, show advanced options
const vaultIds = gui.getVaultIds();
const inputVaultIds = vaultIds.get('input');
const outputVaultIds = vaultIds.get('output');
const deposits = gui.getDeposits();
if (
deposits.length > 0 ||
(inputVaultIds && inputVaultIds.some((v) => v)) ||
(outputVaultIds && outputVaultIds.some((v) => v))
) {
const hasDeposits = gui.hasAnyDeposit();
const hasVaultIds = gui.hasAnyVaultId();
if (hasDeposits || hasVaultIds) {
showAdvancedOptions = true;
}
} catch (e) {
Expand Down

0 comments on commit a51a77b

Please sign in to comment.