make sure the reverse override is considered for collected logic
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
{
|
{
|
||||||
"reverseHolofoil": {}
|
"reverseHolofoil": {
|
||||||
|
"dp7-65": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -20,6 +20,7 @@ export default function Page() {
|
|||||||
const [updatedAt, setUpdatedAt] = useState<string | null>(null);
|
const [updatedAt, setUpdatedAt] = useState<string | null>(null);
|
||||||
const [cachedFlag, setCachedFlag] = useState<boolean | null>(null);
|
const [cachedFlag, setCachedFlag] = useState<boolean | null>(null);
|
||||||
const [toast, setToast] = useState<string | null>(null);
|
const [toast, setToast] = useState<string | null>(null);
|
||||||
|
const [overrides, setOverrides] = useState<Record<string, boolean>>({});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
(async () => {
|
||||||
@@ -28,6 +29,30 @@ export default function Page() {
|
|||||||
})();
|
})();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
// Load reverse overrides at start
|
||||||
|
useEffect(() => {
|
||||||
|
(async () => {
|
||||||
|
try {
|
||||||
|
const res = await fetch('/api/magikarp/override', { cache: 'no-store' });
|
||||||
|
if (!res.ok) return;
|
||||||
|
const json = await res.json();
|
||||||
|
const map = (json?.data?.reverseHolofoil || {}) as Record<string, boolean>;
|
||||||
|
if (map && typeof map === 'object') setOverrides(map);
|
||||||
|
} catch {}
|
||||||
|
})();
|
||||||
|
// Listen for UI-initiated override changes
|
||||||
|
function onOverrideChanged(ev: Event) {
|
||||||
|
try {
|
||||||
|
const ce = ev as CustomEvent<{ id: string; reverse: boolean }>;
|
||||||
|
const { id, reverse } = ce.detail || ({} as any);
|
||||||
|
if (!id) return;
|
||||||
|
setOverrides((prev) => ({ ...prev, [id]: !!reverse }));
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
window.addEventListener('reverse-override-changed', onOverrideChanged as EventListener);
|
||||||
|
return () => window.removeEventListener('reverse-override-changed', onOverrideChanged as EventListener);
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function load() {
|
async function load() {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
@@ -121,7 +146,7 @@ export default function Page() {
|
|||||||
function availableVariants(card: TcgCard): VariantKey[] {
|
function availableVariants(card: TcgCard): VariantKey[] {
|
||||||
const list: VariantKey[] = ['base'];
|
const list: VariantKey[] = ['base'];
|
||||||
const hasHolo = !!(card.variants?.holofoil || (card as any).tcgplayer?.prices?.holofoil);
|
const hasHolo = !!(card.variants?.holofoil || (card as any).tcgplayer?.prices?.holofoil);
|
||||||
const hasReverse = !!(card.variants?.reverseHolofoil || (card as any).tcgplayer?.prices?.reverseHolofoil);
|
const hasReverse = !!(card.variants?.reverseHolofoil || (card as any).tcgplayer?.prices?.reverseHolofoil) || !!overrides[card.id];
|
||||||
if (hasHolo) list.push('holofoil');
|
if (hasHolo) list.push('holofoil');
|
||||||
if (hasReverse) list.push('reverseHolofoil');
|
if (hasReverse) list.push('reverseHolofoil');
|
||||||
return list;
|
return list;
|
||||||
|
|||||||
@@ -117,6 +117,8 @@ export default function CardItem({ card, checked, onToggle }:{ card: TcgCard; ch
|
|||||||
body: JSON.stringify({ id: card.id, reverseHolofoil: true }),
|
body: JSON.stringify({ id: card.id, reverseHolofoil: true }),
|
||||||
});
|
});
|
||||||
setReverseOverride(true);
|
setReverseOverride(true);
|
||||||
|
// Notify app to recompute availableVariants immediately
|
||||||
|
try { window.dispatchEvent(new CustomEvent('reverse-override-changed', { detail: { id: card.id, reverse: true } })); } catch {}
|
||||||
} catch {}
|
} catch {}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -139,6 +141,8 @@ export default function CardItem({ card, checked, onToggle }:{ card: TcgCard; ch
|
|||||||
});
|
});
|
||||||
setReverseOverride(false);
|
setReverseOverride(false);
|
||||||
setReverseRemoved(true);
|
setReverseRemoved(true);
|
||||||
|
// Notify app to recompute availableVariants immediately
|
||||||
|
try { window.dispatchEvent(new CustomEvent('reverse-override-changed', { detail: { id: card.id, reverse: false } })); } catch {}
|
||||||
} catch {}
|
} catch {}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user