From a207e856b8acd08174cd00448cf2e71f39365ef0 Mon Sep 17 00:00:00 2001 From: BM Cho Date: Thu, 30 Jul 2026 17:16:29 +0800 Subject: [PATCH] fix: display session revenue in currency units --- .../components/chat/tool-results/chat-profile-result.tsx | 4 +++- apps/start/src/components/sessions/table/columns.tsx | 4 +++- ...p.$organizationId.$projectId.sessions_.$sessionId.tsx | 9 +++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/start/src/components/chat/tool-results/chat-profile-result.tsx b/apps/start/src/components/chat/tool-results/chat-profile-result.tsx index f775f9354..9c40be8ac 100644 --- a/apps/start/src/components/chat/tool-results/chat-profile-result.tsx +++ b/apps/start/src/components/chat/tool-results/chat-profile-result.tsx @@ -11,6 +11,7 @@ import { ToolStateGuard, } from './shared'; import type { ToolResultProps } from './types'; +import { useNumber } from '@/hooks/use-numer-formatter'; /** * Renders the result of `get_profile_full` — profile + metrics + recent @@ -54,6 +55,7 @@ function Inner({ output }: { output: unknown }) { } function SuccessCard({ value }: { value: ProfileFullSuccess }) { + const number = useNumber(); const { profile, metrics, dashboard_url } = value; const title = profile && @@ -96,7 +98,7 @@ function SuccessCard({ value }: { value: ProfileFullSuccess }) { {typeof metrics.revenue === 'number' && metrics.revenue > 0 && ( Revenue - ${metrics.revenue.toFixed(2)} + {number.currency(metrics.revenue / 100)} )} diff --git a/apps/start/src/components/sessions/table/columns.tsx b/apps/start/src/components/sessions/table/columns.tsx index dedf3ddbf..ad9b38f68 100644 --- a/apps/start/src/components/sessions/table/columns.tsx +++ b/apps/start/src/components/sessions/table/columns.tsx @@ -6,6 +6,7 @@ import { ColumnCreatedAt } from '@/components/column-created-at'; import { ProjectLink } from '@/components/links'; import { ProfileAvatar } from '@/components/profiles/profile-avatar'; import { SerieIcon } from '@/components/report-chart/common/serie-icon'; +import { useNumber } from '@/hooks/use-numer-formatter'; import { getProfileName } from '@/utils/getters'; function formatDuration(milliseconds: number): string { @@ -26,6 +27,7 @@ function formatDuration(milliseconds: number): string { } export function useColumns() { + const number = useNumber(); const columns: ColumnDef[] = [ { accessorKey: 'createdAt', @@ -258,7 +260,7 @@ export function useColumns() { const session = row.original; return session.revenue > 0 ? (
- ${session.revenue.toFixed(2)} + {number.currency(session.revenue / 100)}
) : (
-
diff --git a/apps/start/src/routes/_app.$organizationId.$projectId.sessions_.$sessionId.tsx b/apps/start/src/routes/_app.$organizationId.$projectId.sessions_.$sessionId.tsx index 03f880b30..81e049822 100644 --- a/apps/start/src/routes/_app.$organizationId.$projectId.sessions_.$sessionId.tsx +++ b/apps/start/src/routes/_app.$organizationId.$projectId.sessions_.$sessionId.tsx @@ -1,5 +1,5 @@ import type { IServiceEvent, IServiceSession } from '@openpanel/db'; -import { useSuspenseQuery, useQuery } from '@tanstack/react-query'; +import { useQuery, useSuspenseQuery } from '@tanstack/react-query'; import { createFileRoute, Link } from '@tanstack/react-router'; import { EventIcon } from '@/components/events/event-icon'; import FullPageLoadingState from '@/components/full-page-loading-state'; @@ -279,7 +279,12 @@ function Component() { ? [{ name: 'utmCampaign', value: session.utmCampaign }] : []), ...(session.revenue > 0 - ? [{ name: 'revenue', value: `$${session.revenue}` }] + ? [ + { + name: 'revenue', + value: number.currency(session.revenue / 100), + }, + ] : []), { name: 'country', value: session.country, event: fakeEvent }, ...(session.city