fix(card-sorting): add debug logging for spring animations

This commit is contained in:
Thomas Hallock
2025-10-23 23:10:52 -05:00
parent 275cc62a52
commit d42947eb8d

View File

@@ -114,6 +114,7 @@ export function ResultsPhase() {
const [springs, api] = useSprings(
userSequence.length,
(index) => {
console.log('[ResultsPhase] Creating spring', index, 'from', initialPositions[index])
return {
from: initialPositions[index],
to: initialPositions[index],
@@ -124,15 +125,22 @@ export function ResultsPhase() {
[] // Empty deps - only create once, never recreate
)
console.log('[ResultsPhase] Component render, springs.length:', springs.length)
// Immediately start animating to grid positions (only once)
useEffect(() => {
console.log('[ResultsPhase] Animation effect running')
// Small delay to ensure mount
const timer = setTimeout(() => {
console.log('[ResultsPhase] Starting animation to grid positions')
api.start((index) => {
const card = userSequence[index]
const correctIndex = state.correctOrder.findIndex((c) => c.id === card.id)
const gridPos = calculateGridPosition(correctIndex)
console.log('[ResultsPhase] Animating card', index, 'to', gridPos)
return {
to: calculateGridPosition(correctIndex),
to: gridPos,
immediate: false,
config: { ...config.gentle, tension: 120, friction: 26 },
}
@@ -141,17 +149,21 @@ export function ResultsPhase() {
// After animation completes, lock positions by setting immediate: true
const lockTimer = setTimeout(() => {
console.log('[ResultsPhase] Locking positions with immediate: true')
api.start((index) => {
const card = userSequence[index]
const correctIndex = state.correctOrder.findIndex((c) => c.id === card.id)
const gridPos = calculateGridPosition(correctIndex)
console.log('[ResultsPhase] Locking card', index, 'at', gridPos)
return {
to: calculateGridPosition(correctIndex),
to: gridPos,
immediate: true, // No more animations - locked in place
}
})
}, 1100) // Wait for animation to complete (100ms + 1000ms)
return () => {
console.log('[ResultsPhase] Animation effect cleanup')
clearTimeout(timer)
clearTimeout(lockTimer)
}