Skip to content

Commit b992840

Browse files
committed
feat: 지난 티어 추가
1 parent bdc2154 commit b992840

File tree

2 files changed

+55
-12
lines changed

2 files changed

+55
-12
lines changed

src/pages/Home.jsx

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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'}`}>

src/pages/Profile.jsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@ const Profile = ({ userInfo }) => {
1111
const [isRefreshing, setIsRefreshing] = useState(false);
1212
const refreshTimerRef = useRef(null);
1313

14-
const maxExp = userInfo.petGrow === "EGG" ? 150 : userInfo.petGrow === "HATCH" ? 300 : 300;
14+
//FIXME: 테스트를 위해 수치 줄임. 차후 150/300으로 변경 필요.
15+
const maxExp = userInfo.petGrow === "EGG" ? 20 : userInfo.petGrow === "HATCH" ? 40 : 40;
1516

1617
// 티어 아이콘 매핑
1718
const tierEmojis = {
18-
SEED: "🫘",
19-
SPROUT: "🌱",
20-
FLOWER: "🌺",
21-
FRUIT: "🍎",
22-
TREE: "🌳",
19+
NONE: "❌미획득",
20+
SEED: "🫘씨앗",
21+
SPROUT: "🌱새싹",
22+
FLOWER: "🌺꽃",
23+
FRUIT: "🍎열매",
24+
TREE: "🌳나무",
2325
};
2426

2527
// 펫 성장 단계 한글화
@@ -170,7 +172,7 @@ useEffect(() => {
170172
<div className="avatar-container">
171173
<img src={userInfo.avatarUrl} alt="User Avatar" />
172174
</div>
173-
<span className="username">{userInfo.nickname || "사용자"}({userInfo.username || "사용자"})</span>
175+
<span className="username">{userInfo.nickname || userInfo.username}({userInfo.username || "사용자"})</span>
174176
</div>
175177

176178
{/* 유저 세부 정보 */}
@@ -193,7 +195,7 @@ useEffect(() => {
193195
<span className="detail-icon">🏆</span>
194196
<span className="detail-text">
195197
티어: <span className="tier-badge">
196-
{tierEmojis[userInfo.tier] || ""} {userInfo.tier || "없음"}
198+
{tierEmojis[userInfo.tier] || ""}
197199
</span>
198200
</span>
199201
</div>

0 commit comments

Comments
 (0)