From 6539eb2f4f9c03e69b942ad80ba4d1d194ea88a0 Mon Sep 17 00:00:00 2001 From: Face <69168154+face-hh@users.noreply.github.com> Date: Sun, 8 Jun 2025 21:58:40 +0300 Subject: [PATCH] send / received transactions in live trades --- .../src/lib/components/self/AppSidebar.svelte | 25 ++++-- website/src/lib/stores/websocket.ts | 2 +- .../src/routes/api/trades/recent/+server.ts | 2 +- website/src/routes/live/+page.svelte | 80 ++++++++++++++----- 4 files changed, 82 insertions(+), 27 deletions(-) diff --git a/website/src/lib/components/self/AppSidebar.svelte b/website/src/lib/components/self/AppSidebar.svelte index 3ed737e..9379a94 100644 --- a/website/src/lib/components/self/AppSidebar.svelte +++ b/website/src/lib/components/self/AppSidebar.svelte @@ -28,9 +28,7 @@ TrendingUpDown, Scale, ShieldCheck, - Hammer - } from 'lucide-svelte'; import { mode, setMode } from 'mode-watcher'; import type { HTMLAttributes } from 'svelte/elements'; @@ -249,7 +247,15 @@ class="hover:bg-muted/50 flex w-full cursor-pointer items-center gap-2 rounded px-1 py-1 text-left text-xs transition-colors" >
- {#if trade.type === 'BUY'} + {#if trade.type === 'TRANSFER_IN' || trade.type === 'TRANSFER_OUT'} + + + {trade.type === 'TRANSFER_IN' ? 'REC' : 'SENT'} + + {:else if trade.type === 'BUY'} {formatValue(trade.totalValue)} - *{trade.coinSymbol} - by + {#if trade.type === 'TRANSFER_IN' || trade.type === 'TRANSFER_OUT'} + {#if trade.amount > 0} + *{trade.coinSymbol} + {/if} + + {trade.type === 'TRANSFER_IN' ? 'to' : 'from'} + + {:else} + *{trade.coinSymbol} + by + {/if} @{trade.username}
diff --git a/website/src/lib/stores/websocket.ts b/website/src/lib/stores/websocket.ts index a53ca7f..31071a4 100644 --- a/website/src/lib/stores/websocket.ts +++ b/website/src/lib/stores/websocket.ts @@ -3,7 +3,7 @@ import { browser } from '$app/environment'; import { PUBLIC_WEBSOCKET_URL } from '$env/static/public'; export interface LiveTrade { - type: 'BUY' | 'SELL'; + type: 'BUY' | 'SELL' | 'TRANSFER_IN' | 'TRANSFER_OUT'; username: string; amount: number; coinSymbol: string; diff --git a/website/src/routes/api/trades/recent/+server.ts b/website/src/routes/api/trades/recent/+server.ts index 7fd00ca..bf10dd7 100644 --- a/website/src/routes/api/trades/recent/+server.ts +++ b/website/src/routes/api/trades/recent/+server.ts @@ -37,7 +37,7 @@ export async function GET({ url }) { .limit(limit); const formattedTrades = trades.map(trade => ({ - type: trade.type as 'BUY' | 'SELL', + type: trade.type as 'BUY' | 'SELL' | 'TRANSFER_IN' | 'TRANSFER_OUT', username: trade.username, userImage: trade.userImage, amount: Number(trade.amount), diff --git a/website/src/routes/live/+page.svelte b/website/src/routes/live/+page.svelte index ad2b722..dfc8319 100644 --- a/website/src/routes/live/+page.svelte +++ b/website/src/routes/live/+page.svelte @@ -76,24 +76,55 @@
- + + {trade.type === 'TRANSFER_IN' ? 'received by' : 'sent by'} + + {:else} + + {formatValue(trade.totalValue)} + + + {trade.type === 'TRANSFER_IN' ? 'received by' : 'sent by'} + + {/if} + {:else} + + + {trade.type === 'BUY' ? 'bought by' : 'sold by'} - - - {trade.type === 'BUY' ? 'bought by' : 'sold by'} - + {/if} +
- {#if trade.type === 'BUY'} + {#if trade.type === 'TRANSFER_IN' || trade.type === 'TRANSFER_OUT'} + + + {trade.type === 'TRANSFER_IN' ? 'RECEIVED' : 'SENT'} + + | + {formatValue(trade.totalValue)} + {:else if trade.type === 'BUY'} BUY + | + {formatValue(trade.totalValue)} {:else} SELL + | + {formatValue(trade.totalValue)} {/if} - | - {formatValue(trade.totalValue)}