import React, { useState, useEffect } from 'react'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { Skeleton } from '@/components/ui/skeleton'; import { useAuth } from '@/contexts/auth'; import { useIsMobile } from '@/hooks/use-mobile'; import { isIOSPlatform } from '@/utils/platform'; import NotificationPopover from './notification/NotificationPopover'; import useNotifications from '@/hooks/useNotifications'; const Header: React.FC = () => { const { user } = useAuth(); const userName = user?.user_metadata?.username || '익명'; const [imageLoaded, setImageLoaded] = useState(false); const [imageError, setImageError] = useState(false); const isMobile = useIsMobile(); const [isIOS, setIsIOS] = useState(false); const { notifications, clearAllNotifications, markAsRead } = useNotifications(); // 플랫폼 감지 useEffect(() => { setIsIOS(isIOSPlatform()); }, []); // 이미지 프리로딩 처리 useEffect(() => { const preloadImage = new Image(); preloadImage.src = '/zellyy.png'; preloadImage.onload = () => { setImageLoaded(true); }; preloadImage.onerror = () => { console.error('아바타 이미지 로드 실패'); setImageError(true); }; }, []); return (
{!imageLoaded && !imageError ? (
) : ( <> setImageLoaded(true)} onError={() => setImageError(true)} /> {(imageError || !imageLoaded) && ZY} )}

{user ? `${userName}님, 반갑습니다` : '반갑습니다'}

젤리의 적자탈출

); }; export default Header;