From dbcc602a706369692bc5c14eb8db313636cff5b0 Mon Sep 17 00:00:00 2001 From: Jamie Harding Date: Thu, 30 Jan 2025 12:10:34 +0100 Subject: [PATCH] bring in modal --- .../lib/components/detail/VaultDetail.svelte | 37 +++++- .../src/lib/stores/transactionStore.ts | 19 ++- .../components/DepositOrWithdrawModal.svelte | 111 ++++++++++++++++++ .../webapp/src/lib/components/Sidebar.svelte | 2 +- packages/webapp/src/lib/services/modal.ts | 15 ++- .../routes/vaults/[network]-[id]/+page.svelte | 5 +- 6 files changed, 183 insertions(+), 6 deletions(-) create mode 100644 packages/webapp/src/lib/components/DepositOrWithdrawModal.svelte diff --git a/packages/ui-components/src/lib/components/detail/VaultDetail.svelte b/packages/ui-components/src/lib/components/detail/VaultDetail.svelte index 9a7ae57dd..f43afab32 100644 --- a/packages/ui-components/src/lib/components/detail/VaultDetail.svelte +++ b/packages/ui-components/src/lib/components/detail/VaultDetail.svelte @@ -13,26 +13,36 @@ import { createQuery } from '@tanstack/svelte-query'; import { onDestroy } from 'svelte'; - import type { Readable } from 'svelte/store'; + import type { Readable, Writable } from 'svelte/store'; import { queryClient } from '../../queries/queryClient'; import { ArrowDownOutline, ArrowUpOutline } from 'flowbite-svelte-icons'; import type { Vault } from '@rainlanguage/orderbook/js_api'; import OrderOrVaultHash from '../OrderOrVaultHash.svelte'; import type { AppStoresInterface } from '../../types/appStores'; + import type { Config } from 'wagmi'; export let id: string; export let network: string; export let walletAddressMatchesOrBlank: Readable<(otherAddress: string) => boolean> | undefined = undefined; + // Tauri App modals export let handleDepositModal: ((vault: Vault, onDeposit: () => void) => void) | undefined = undefined; export let handleWithdrawModal: ((vault: Vault, onWithdraw: () => void) => void) | undefined = undefined; + // Wagmi modals + export let handleDepositOrWithdrawModal: (args: { + vault: Vault; + onDepositOrWithdraw: () => void; + action: 'deposit' | 'withdraw'; + subgraphUrl: string; + }) => void; export let lightweightChartsTheme: Readable | undefined = undefined; export let activeNetworkRef: AppStoresInterface['activeNetworkRef']; export let activeOrderbookRef: AppStoresInterface['activeOrderbookRef']; export let settings; + export let wagmiConfig: Writable | undefined = undefined; const subgraphUrl = $settings?.subgraphs?.[network] || ''; @@ -73,7 +83,30 @@ {data.token.name}
- {#if handleDepositModal && handleWithdrawModal && $walletAddressMatchesOrBlank?.(data.owner)} + {#if $wagmiConfig} + + + {:else if handleDepositModal && handleWithdrawModal && $walletAddressMatchesOrBlank?.(data.owner)} + +
+ + +{:else} + +{/if} diff --git a/packages/webapp/src/lib/components/Sidebar.svelte b/packages/webapp/src/lib/components/Sidebar.svelte index 8f985205d..732c04bfb 100644 --- a/packages/webapp/src/lib/components/Sidebar.svelte +++ b/packages/webapp/src/lib/components/Sidebar.svelte @@ -65,7 +65,7 @@ {#if !sideBarHidden} (sideBarHidden = true)} /> {/if} diff --git a/packages/webapp/src/lib/services/modal.ts b/packages/webapp/src/lib/services/modal.ts index 997ff73fb..25688d76c 100644 --- a/packages/webapp/src/lib/services/modal.ts +++ b/packages/webapp/src/lib/services/modal.ts @@ -1,7 +1,9 @@ import DeployModal from '$lib/components/DeployModal.svelte'; +import DepositOrWithdrawModal from '$lib/components/DepositOrWithdrawModal.svelte'; import type { ApprovalCalldataResult, - DepositAndAddOrderCalldataResult + DepositAndAddOrderCalldataResult, + Vault } from '@rainlanguage/orderbook/js_api'; import type { Hex } from 'viem'; @@ -12,6 +14,17 @@ export type DeployModalProps = { chainId: number; }; +export type DepositOrWithdrawModalProps = { + vault: Vault; + onDepositOrWithdraw: () => void; + action: 'deposit' | 'withdraw'; + subgraphUrl: string; +}; + export const handleDeployModal = (args: DeployModalProps) => { new DeployModal({ target: document.body, props: { open: true, ...args } }); }; + +export const handleDepositOrWithdrawModal = (args: DepositOrWithdrawModalProps) => { + new DepositOrWithdrawModal({ target: document.body, props: { open: true, ...args } }); +}; \ No newline at end of file diff --git a/packages/webapp/src/routes/vaults/[network]-[id]/+page.svelte b/packages/webapp/src/routes/vaults/[network]-[id]/+page.svelte index 157c57acc..8ae034778 100644 --- a/packages/webapp/src/routes/vaults/[network]-[id]/+page.svelte +++ b/packages/webapp/src/routes/vaults/[network]-[id]/+page.svelte @@ -2,7 +2,8 @@ import { PageHeader } from '@rainlanguage/ui-components'; import { page } from '$app/stores'; import { VaultDetail } from '@rainlanguage/ui-components'; - + import { wagmiConfig } from '$lib/stores/wagmi'; + import { handleDepositOrWithdrawModal } from '$lib/services/modal'; const { settings, activeOrderbookRef, activeNetworkRef, lightweightChartsTheme } = $page.data.stores; @@ -16,4 +17,6 @@ {settings} {activeNetworkRef} {activeOrderbookRef} + {wagmiConfig} + {handleDepositOrWithdrawModal} />