diff --git a/docs/update.md b/docs/update.md index f4f4d87..d01a813 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,5 +1,9 @@ # 업데이트 로그 +## 2026-04-01 v1.3.22 +- 내 티어표 카드는 게임 목록과 같은 상단 히어로/패널 문법으로 다시 맞추고, 깨진 썸네일은 alt 텍스트가 카드 폭을 밀지 않도록 플레이스홀더로 즉시 대체해 카드 수와 헤더 폭이 흔들리지 않게 보정함. +- 오른쪽 사이드 광고 프레임은 별도 보더·패딩·배경을 제거해, 광고 자체가 가진 각진 형태와 색이 그대로 보이도록 더 담백하게 정리함. + ## 2026-04-01 v1.3.21 - 내 티어표 카드는 게임 목록 화면과 같은 카드 폭/헤더/메타 배치 문법으로 맞춰, 화면 간 카드 크기와 정보 정렬이 더 통일된 인상으로 보이도록 정리함. diff --git a/frontend/src/components/RightRailAd.vue b/frontend/src/components/RightRailAd.vue index b951a0b..ad88183 100644 --- a/frontend/src/components/RightRailAd.vue +++ b/frontend/src/components/RightRailAd.vue @@ -78,14 +78,10 @@ onMounted(async () => { .rightRailAd__frame { min-height: 520px; - padding: 14px; - border-radius: 20px; - border: 1px solid rgba(255, 255, 255, 0.08); - background: rgba(255, 255, 255, 0.02); } .rightRailAd__slot { width: 100%; - min-height: 490px; + min-height: 520px; } diff --git a/frontend/src/views/MyTierListsView.vue b/frontend/src/views/MyTierListsView.vue index 02673e8..28a441b 100644 --- a/frontend/src/views/MyTierListsView.vue +++ b/frontend/src/views/MyTierListsView.vue @@ -9,6 +9,7 @@ const router = useRouter() const toast = useToast() const myLists = ref([]) const error = ref('') +const brokenThumbnailIds = ref({}) watch(error, (message) => { if (!message) return @@ -37,12 +38,19 @@ function avatarFallbackOf(tierList) { } function tierListThumbnailUrl(tierList) { + if (!tierList?.id || brokenThumbnailIds.value[tierList.id]) return '' return tierList.thumbnailSrc ? toApiUrl(tierList.thumbnailSrc) : '' } +function handleThumbnailError(tierListId) { + if (!tierListId || brokenThumbnailIds.value[tierListId]) return + brokenThumbnailIds.value = { ...brokenThumbnailIds.value, [tierListId]: true } +} + onMounted(async () => { try { const data = await api.listMyTierLists() + brokenThumbnailIds.value = {} myLists.value = data.tierLists || [] } catch (e) { toast.error('로그인이 필요해요.') @@ -51,53 +59,87 @@ onMounted(async () => { }) function openList(t) { - router.push(`/editor/${t.gameId}/${t.id}`) + router.push( + "/editor/" + t.gameId + "/" + t.id, + ) } -