"use client"; import React, { useState, useEffect } from 'react'; import Image from 'next/image'; import { getDownloadUrl } from '@/lib/services'; interface SignedImageProps { fileKey: string; alt: string; className?: string; fill?: boolean; sizes?: string; } const SignedImage: React.FC = ({ fileKey, alt, className = "", fill = false, sizes }) => { const [signedUrl, setSignedUrl] = useState(null); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const getSignedUrl = async () => { try { const downloadUrl = await getDownloadUrl(fileKey); setSignedUrl(downloadUrl); } catch (error) { console.error('서명된 URL 생성 실패:', error); setError('이미지를 불러올 수 없습니다.'); } finally { setIsLoading(false); } }; getSignedUrl(); }, [fileKey]); if (isLoading) { return (
); } if (error || !signedUrl) { return (
{error || '이미지 없음'}
); } return ( {alt} ); }; export default SignedImage;