@@ -23,6 +23,7 @@ const Home = () => {
2323 const [ userInfo , setUserInfo ] = useState ( { } ) ;
2424 const [ userLoading , setUserLoading ] = useState ( true ) ;
2525 const [ userError , setUserError ] = useState ( null ) ;
26+ const [ prevTier , setPrevTier ] = useState ( null ) ;
2627
2728 const [ loading , setLoading ] = useState ( true ) ;
2829 const [ user , setUser ] = useState ( null ) ;
@@ -38,6 +39,15 @@ const Home = () => {
3839 const navigate = useNavigate ( ) ;
3940 const [ client , setClient ] = useState ( null ) ; // WebSocket 클라이언트 상태
4041
42+ // 티어 아이콘 매핑
43+ const tierEmojis = {
44+ NONE : "❌미획득" ,
45+ SEED : "🫘씨앗" ,
46+ SPROUT : "🌱새싹" ,
47+ FLOWER : "🌺꽃" ,
48+ FRUIT : "🍎열매" ,
49+ TREE : "🌳나무" ,
50+ } ;
4151
4252 // 사용자 정보 불러오기
4353 useEffect ( ( ) => {
@@ -56,6 +66,33 @@ const Home = () => {
5666 fetchUserInfo ( ) ;
5767 } , [ ] ) ;
5868
69+ // 업적 기록을 가져오기
70+ const fetchTierInfo = async ( ) => {
71+ try {
72+ const response = await fetch ( "/api/user/tierinfo" ) ;
73+ const data = await response . json ( ) ;
74+
75+ // "2025년 겨울 시즌" 데이터 필터링
76+ const winterTier = data . find ( item => item . year === "2025" && item . season === "winter" ) ;
77+
78+ if ( winterTier ) {
79+ console . log ( "겨울 시즌 티어:" , winterTier . tier ) ;
80+ setPrevTier ( winterTier . tier ) ; // 상태로 저장하여 UI에 반영
81+ } else {
82+ console . log ( "겨울 시즌 데이터 없음" ) ;
83+ setPrevTier ( "미획득" ) ;
84+ }
85+ } catch ( error ) {
86+ console . error ( "Tier 정보를 가져오는 중 오류 발생:" , error ) ;
87+ }
88+ } ;
89+
90+ // useEffect를 사용하여 API 호출
91+ useEffect ( ( ) => {
92+ fetchTierInfo ( ) ;
93+ } , [ ] ) ;
94+
95+
5996 const toggleModal = async ( ) => {
6097 // 읽은 알림들을 필터링하여 제거
6198 setNotifications ( prev => prev . filter ( noti => ! noti . read ) ) ;
@@ -496,10 +533,14 @@ useEffect(() => {
496533 { seasonData [ season ] . restrictedContributionsCount }
497534 </ td >
498535 < td className = "table-cell table-cell-center" >
499-
500- < span className = { `streak-badge` } >
501- 미획득
502- </ span >
536+ { season === "winter" ? (
537+ < span className = "streak-badge" >
538+ { tierEmojis [ prevTier ] || tierEmojis [ 'NONE' ] }
539+ </ span >
540+ ) : (
541+ < span className = "streak-badge" >
542+ { tierEmojis [ 'NONE' ] } </ span >
543+ ) }
503544 </ td >
504545 < td className = "table-cell table-cell-center" >
505546 < span className = { `streak-badge ${ seasonData [ season ] . maxStreakDays > 0 ? 'max-streak-badge' : 'zero-value' } ` } >
0 commit comments