From 26e895e90d89adc9a56aa50a5d94c519f9364d73 Mon Sep 17 00:00:00 2001 From: findolor Date: Fri, 14 Feb 2025 15:09:43 +0300 Subject: [PATCH 1/3] create a new wasm binding for getting deployment detail --- crates/js_api/src/gui/mod.rs | 13 +++++++++++++ packages/orderbook/test/js_api/gui.test.ts | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/crates/js_api/src/gui/mod.rs b/crates/js_api/src/gui/mod.rs index 76f7d7170..0f7e607ce 100644 --- a/crates/js_api/src/gui/mod.rs +++ b/crates/js_api/src/gui/mod.rs @@ -162,6 +162,19 @@ impl DotrainOrderGui { Ok(DeploymentDetails(deployment_details.into_iter().collect())) } + #[wasm_bindgen(js_name = "getDeploymentDetail")] + pub async fn get_deployment_detail( + dotrain: String, + key: String, + ) -> Result { + let deployment_details = DotrainOrderGui::get_deployment_details(dotrain).await?; + let deployment_detail = deployment_details + .0 + .get(&key) + .ok_or(GuiError::DeploymentNotFound(key))?; + Ok(deployment_detail.clone()) + } + #[wasm_bindgen(js_name = "generateDotrainText")] pub fn generate_dotrain_text(&self) -> Result { let rain_document = RainDocument::create(self.dotrain_order.dotrain(), None, None, None); diff --git a/packages/orderbook/test/js_api/gui.test.ts b/packages/orderbook/test/js_api/gui.test.ts index 192a24c70..399701b07 100644 --- a/packages/orderbook/test/js_api/gui.test.ts +++ b/packages/orderbook/test/js_api/gui.test.ts @@ -388,6 +388,15 @@ describe('Rain Orderbook JS API Package Bindgen Tests - Gui', async function () assert.equal(entries[1][1].description, 'Buy WETH with USDC for fixed price on Base network.'); }); + it('should get deployment detail', async () => { + const deploymentDetail: NameAndDescription = await DotrainOrderGui.getDeploymentDetail( + dotrainWithGui, + 'other-deployment' + ); + assert.equal(deploymentDetail.name, 'Test test'); + assert.equal(deploymentDetail.description, 'Test test test'); + }); + it('should get token infos', async () => { mockServer .forPost('/rpc-url') From 0d4817380f1b35e73f077f5dd72f202a6567add9 Mon Sep 17 00:00:00 2001 From: findolor Date: Fri, 14 Feb 2025 15:10:24 +0300 Subject: [PATCH 2/3] update UI logic --- .../[strategyName]/[deploymentKey]/+page.ts | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/packages/webapp/src/routes/deploy/[strategyName]/[deploymentKey]/+page.ts b/packages/webapp/src/routes/deploy/[strategyName]/[deploymentKey]/+page.ts index 629672178..3ebfcec44 100644 --- a/packages/webapp/src/routes/deploy/[strategyName]/[deploymentKey]/+page.ts +++ b/packages/webapp/src/routes/deploy/[strategyName]/[deploymentKey]/+page.ts @@ -37,27 +37,12 @@ export const load: PageLoad = async ({ fetch, params, parent }) => { dotrain = await dotrainResponse.text(); } - // Process deployments for both raw and registry strategies - const deploymentWithDetails = await DotrainOrderGui.getDeploymentDetails(dotrain); - const deployments = Array.from(deploymentWithDetails, ([key, details]) => ({ - key, - ...details - })); - - const deployment = deployments.find( - (deployment: { key: string }) => deployment.key === deploymentKey - ); - - if (!deployment) { - throw new Error(`Deployment ${deploymentKey} not found`); - } - - const { key, name, description } = deployment; + const { name, description } = await DotrainOrderGui.getDeploymentDetail(dotrain, deploymentKey); return { dotrain, strategyName, - key, + key: deploymentKey, name, description }; From 1eb6a2005d3e30177b1f9367e7c832e32b8b4f33 Mon Sep 17 00:00:00 2001 From: findolor Date: Sat, 15 Feb 2025 13:10:26 +0300 Subject: [PATCH 3/3] update --- .../[strategyName]/[deploymentKey]/+layout.ts | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/packages/webapp/src/routes/deploy/[strategyName]/[deploymentKey]/+layout.ts b/packages/webapp/src/routes/deploy/[strategyName]/[deploymentKey]/+layout.ts index 0c02e66f8..f2003ee82 100644 --- a/packages/webapp/src/routes/deploy/[strategyName]/[deploymentKey]/+layout.ts +++ b/packages/webapp/src/routes/deploy/[strategyName]/[deploymentKey]/+layout.ts @@ -9,20 +9,10 @@ export const load: LayoutLoad = async ({ params, parent }) => { const { deploymentKey } = params; const { dotrain } = (await parent()) as unknown as LayoutParentData; - // Process deployments for both raw and registry strategies - const deploymentWithDetails = await DotrainOrderGui.getDeploymentDetails(dotrain); - const deployments = Array.from(deploymentWithDetails, ([key, details]) => ({ - key, - ...details - })); - - const deployment = deployments.find( - (deployment: { key: string }) => deployment.key === deploymentKey + const { name, description } = await DotrainOrderGui.getDeploymentDetail( + dotrain, + deploymentKey || '' ); - if (!deployment) { - throw new Error(`Deployment ${deploymentKey} not found`); - } - - return { deployment, dotrain }; + return { deployment: { key: deploymentKey, name, description }, dotrain }; };