diff --git a/crates/js_api/src/gui/deposits.rs b/crates/js_api/src/gui/deposits.rs index edcd741bf..b8b885e56 100644 --- a/crates/js_api/src/gui/deposits.rs +++ b/crates/js_api/src/gui/deposits.rs @@ -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() + } } diff --git a/crates/js_api/src/gui/order_operations.rs b/crates/js_api/src/gui/order_operations.rs index cf4c8572f..4b6438234 100644 --- a/crates/js_api/src/gui/order_operations.rs +++ b/crates/js_api/src/gui/order_operations.rs @@ -344,6 +344,12 @@ impl DotrainOrderGui { Ok(IOVaultIds(map)) } + #[wasm_bindgen(js_name = "hasAnyVaultId")] + pub fn has_any_vault_id(&self) -> Result { + 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()?; diff --git a/packages/orderbook/test/js_api/gui.test.ts b/packages/orderbook/test/js_api/gui.test.ts index 2204bca30..d270a594a 100644 --- a/packages/orderbook/test/js_api/gui.test.ts +++ b/packages/orderbook/test/js_api/gui.test.ts @@ -5,11 +5,9 @@ import { AddOrderCalldataResult, AllFieldValuesResult, AllowancesResult, - ApprovalCalldataResult, DeploymentDetails, DeploymentKeys, DepositAndAddOrderCalldataResult, - DepositCalldataResult, Gui, GuiDeployment, IOVaultIds, @@ -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 () => { @@ -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); diff --git a/packages/ui-components/src/lib/components/deployment/DeploymentSteps.svelte b/packages/ui-components/src/lib/components/deployment/DeploymentSteps.svelte index 08d9354b5..bb025128c 100644 --- a/packages/ui-components/src/lib/components/deployment/DeploymentSteps.svelte +++ b/packages/ui-components/src/lib/components/deployment/DeploymentSteps.svelte @@ -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) {