From a397de80e9563a088ff3ecde16ac149abe6f2504 Mon Sep 17 00:00:00 2001 From: Oleg Proskurin Date: Sun, 26 Oct 2025 19:13:48 +0700 Subject: [PATCH] fix: upload page --- apps/landing/src/app/demo/upload/page.tsx | 16 ++++++++++------ .../src/components/shared/ImageCard/index.tsx | 8 ++++++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/landing/src/app/demo/upload/page.tsx b/apps/landing/src/app/demo/upload/page.tsx index 2dab2d0..56a10c0 100644 --- a/apps/landing/src/app/demo/upload/page.tsx +++ b/apps/landing/src/app/demo/upload/page.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useState, useEffect, useRef, DragEvent, ChangeEvent } from 'react'; +import { useState, useEffect, useRef, useCallback, DragEvent, ChangeEvent } from 'react'; import { useApiKey } from '@/components/shared/ApiKeyWidget/apikey-context'; import { Section } from '@/components/shared/Section'; import { CodeExamplesWidget } from '@/components/demo/CodeExamplesWidget'; @@ -235,13 +235,17 @@ export default function DemoUploadPage() { } }; - const handleDownloadMeasured = (itemId: string, downloadMs: number) => { + const handleDownloadMeasured = useCallback((itemId: string, downloadMs: number) => { setUploadHistory((prev) => - prev.map((item) => - item.id === itemId ? { ...item, downloadMs } : item - ) + prev.map((item) => { + // Only update if this item doesn't have downloadMs yet (prevent re-measuring) + if (item.id === itemId && item.downloadMs === undefined) { + return { ...item, downloadMs }; + } + return item; + }) ); - }; + }, []); const generateUploadCodeExamples = (item: UploadHistoryItem, key: string, baseUrl: string) => { const fileName = item.originalName; diff --git a/apps/landing/src/components/shared/ImageCard/index.tsx b/apps/landing/src/components/shared/ImageCard/index.tsx index 9f6f0dd..93dabba 100644 --- a/apps/landing/src/components/shared/ImageCard/index.tsx +++ b/apps/landing/src/components/shared/ImageCard/index.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect } from 'react'; +import { useEffect, useRef } from 'react'; import { ImageMetadataBar } from '../ImageMetadataBar'; import { useImageDownloadTime } from './useImageDownloadTime'; import { usePageContext } from '@/contexts/page-context'; @@ -36,9 +36,13 @@ export const ImageCard = ({ measureDownloadTime ? imageUrl : null ); + // Track if we've already called onDownloadMeasured to prevent duplicate calls + const hasCalledCallback = useRef(false); + useEffect(() => { - if (downloadTime !== null && onDownloadMeasured) { + if (downloadTime !== null && onDownloadMeasured && !hasCalledCallback.current) { onDownloadMeasured(downloadTime); + hasCalledCallback.current = true; } }, [downloadTime, onDownloadMeasured]);