공유 덱 카드 복원 기준을 imgSrc로 전환
동일 번호 카드가 많은 시리즈에서도 선택한 카드가 정확히 복원되도록 저장·검증·복원 흐름을 imgSrc 중심으로 정리하고, 이미지 누락 시 공통 뒷면 폴백을 적용한다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -247,6 +247,21 @@
|
||||
let selectedColors = new Set(['All']);
|
||||
let currentShareCode = null;
|
||||
let currentDeckName = '';
|
||||
const CARD_IMAGE_FALLBACK_SRC = '/images/uapr/comingsoon.png';
|
||||
|
||||
/**
|
||||
* 카드 데이터의 실제 렌더링 이미지 URL 생성
|
||||
* @param {string} currentSeriesKey
|
||||
* @param {string} cardImgSrc
|
||||
* @returns {string}
|
||||
*/
|
||||
function resolveCardImageSrc(currentSeriesKey, cardImgSrc) {
|
||||
const fileName = (cardImgSrc || '').split('/').pop();
|
||||
if (!currentSeriesKey || !fileName) {
|
||||
return CARD_IMAGE_FALLBACK_SRC;
|
||||
}
|
||||
return `/images/${currentSeriesKey}/${fileName}`;
|
||||
}
|
||||
|
||||
const getEl = () => ({
|
||||
searchQuery: document.getElementById('searchQuery'),
|
||||
@@ -408,13 +423,12 @@
|
||||
cardContainer.className = 'cardContainer group flex flex-col p-2 bg-white rounded-lg border border-slate-200 shadow-sm hover:border-blue-300 transition-colors';
|
||||
cardContainer.setAttribute('data-imgsrc', card.imgSrc);
|
||||
|
||||
const fileName = card.imgSrc.split('/').pop();
|
||||
const imgSrc = `images/${seriesKey}/${fileName}`;
|
||||
const imgSrc = resolveCardImageSrc(seriesKey, card.imgSrc);
|
||||
|
||||
cardContainer.innerHTML = `
|
||||
<div class="card_image cursor-pointer relative w-full mb-2 rounded overflow-hidden bg-slate-50" style="aspect-ratio: 2/3;">
|
||||
<img src="${imgSrc}" class="absolute inset-0 w-full h-full object-contain transition-transform"
|
||||
onerror="console.error('이미지 로드 실패:', '${card.Number}', '${imgSrc}'); this.src='/images/uapr/comingsoon.png'; this.onerror=null;">
|
||||
onerror="this.src='${CARD_IMAGE_FALLBACK_SRC}'; this.onerror=null;">
|
||||
</div>
|
||||
|
||||
<div class="flex justify-between items-center mb-1.5 px-0.5">
|
||||
@@ -737,7 +751,11 @@
|
||||
function showOverlay(card, index, list) {
|
||||
const overlay = document.getElementById('imageOverlay');
|
||||
const img = overlay.querySelector('img');
|
||||
img.src = `images/${seriesKey}/${card.imgSrc.split('/').pop()}`;
|
||||
img.src = resolveCardImageSrc(seriesKey, card.imgSrc);
|
||||
img.onerror = () => {
|
||||
img.onerror = null;
|
||||
img.src = CARD_IMAGE_FALLBACK_SRC;
|
||||
};
|
||||
overlay.style.display = 'flex';
|
||||
overlay.onclick = (e) => {
|
||||
if (e.target === overlay) overlay.style.display = 'none';
|
||||
|
||||
Reference in New Issue
Block a user