diff --git a/packages/ui-components/src/__tests__/StrategySection.test.ts b/packages/ui-components/src/__tests__/StrategySection.test.ts index cf5476af0..9d9a1efdf 100644 --- a/packages/ui-components/src/__tests__/StrategySection.test.ts +++ b/packages/ui-components/src/__tests__/StrategySection.test.ts @@ -20,7 +20,27 @@ describe('StrategySection', () => { vi.clearAllMocks(); }); - it('renders strategy details successfully', async () => { + it('renders strategy details successfully with rawDotrain', async () => { + const mockDotrain = 'mock dotrain content'; + const mockStrategyDetails = { + name: 'Test Strategy', + description: 'Test Description' + }; + vi.mocked(DotrainOrderGui.getStrategyDetails).mockResolvedValueOnce(mockStrategyDetails); + + render(StrategySection, { + props: { + rawDotrain: mockDotrain + } + }); + + await waitFor(() => { + expect(screen.getByText('Test Strategy')).toBeInTheDocument(); + expect(screen.getByText('Test Description')).toBeInTheDocument(); + }); + }); + + it('renders strategy details successfully from fetch', async () => { const mockDotrain = 'mock dotrain content'; const mockStrategyDetails = { name: 'Test Strategy', diff --git a/packages/ui-components/src/lib/components/deployment/StrategySection.svelte b/packages/ui-components/src/lib/components/deployment/StrategySection.svelte index c1759bfe5..0612f7c01 100644 --- a/packages/ui-components/src/lib/components/deployment/StrategySection.svelte +++ b/packages/ui-components/src/lib/components/deployment/StrategySection.svelte @@ -3,8 +3,9 @@ import { DotrainOrderGui, type NameAndDescription } from '@rainlanguage/orderbook/js_api'; import DeploymentsSection from './DeploymentsSection.svelte'; - export let strategyUrl: string; - export let strategyName: string; + export let strategyUrl: string = ''; + export let strategyName: string = ''; + export let rawDotrain: string = ''; let strategyDetails: NameAndDescription; let dotrain: string; let error: string; @@ -12,9 +13,12 @@ const getStrategy = async () => { try { - const response = await fetch(strategyUrl); - const data = await response.text(); - dotrain = data; + if (rawDotrain) { + dotrain = rawDotrain; + } else { + const response = await fetch(strategyUrl); + dotrain = await response.text(); + } try { strategyDetails = await DotrainOrderGui.getStrategyDetails(dotrain); } catch (e: unknown) { diff --git a/packages/webapp/src/lib/stores/raw-dotrain.ts b/packages/webapp/src/lib/stores/raw-dotrain.ts new file mode 100644 index 000000000..6b84ac1ed --- /dev/null +++ b/packages/webapp/src/lib/stores/raw-dotrain.ts @@ -0,0 +1,3 @@ +import { writable } from 'svelte/store'; + +export const rawDotrain = writable(''); diff --git a/packages/webapp/src/lib/stores/registry.ts b/packages/webapp/src/lib/stores/registry.ts new file mode 100644 index 000000000..1d80b4cca --- /dev/null +++ b/packages/webapp/src/lib/stores/registry.ts @@ -0,0 +1,5 @@ +import { writable } from 'svelte/store'; + +export const registryUrl = writable( + 'https://raw.githubusercontent.com/rainlanguage/rain.strategies/refs/heads/main/strategies/dev/registry' +); diff --git a/packages/webapp/src/routes/deploy/+layout.ts b/packages/webapp/src/routes/deploy/+layout.ts deleted file mode 100644 index 1eaecf512..000000000 --- a/packages/webapp/src/routes/deploy/+layout.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { LayoutLoad } from './$types'; - -export const load: LayoutLoad = async ({ fetch }) => { - try { - const response = await fetch( - 'https://raw.githubusercontent.com/rainlanguage/rain.strategies/refs/heads/main/strategies/dev/registry' - ); - const files = await response.text(); - - const _files = files - .split('\n') - .filter((line: string) => line.trim()) - .map((line: string) => { - const [name, url] = line.split(' '); - return { name, url }; - }); - - return { - files: _files - }; - } catch { - return { - files: [] - }; - } -}; diff --git a/packages/webapp/src/routes/deploy/+page.svelte b/packages/webapp/src/routes/deploy/+page.svelte index dcaf8debb..5f3bdac77 100644 --- a/packages/webapp/src/routes/deploy/+page.svelte +++ b/packages/webapp/src/routes/deploy/+page.svelte @@ -1,49 +1,67 @@ -
-
+
+
{#if advancedMode} - - +
+
+ + +
+
+