fix: preserve fullscreen mode when navigating from arcade to memory matching game

- Add FullscreenProvider to memory matching game page
- Add FullscreenProvider wrapper to arcade page
- Handle ?fullscreen=true URL parameter in MemoryPairsGame component
- Ensure fullscreen mode persists when clicking games from arcade
- GameCard component already passes fullscreen parameter when navigating from arcade

This fixes the issue where entering fullscreen in arcade and then clicking
memory pairs would exit fullscreen mode.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Thomas Hallock
2025-09-27 19:13:52 -05:00
parent d9f07d7a4d
commit 25053352fe
3 changed files with 26 additions and 8 deletions

View File

@@ -103,7 +103,11 @@ function ArcadeContent() {
}
export default function ArcadePage() {
return <ArcadeContent />
return (
<FullscreenProvider>
<ArcadeContent />
</FullscreenProvider>
)
}
// Arcade-specific animations

View File

@@ -1,6 +1,8 @@
'use client'
import { useEffect } from 'react'
import { useMemoryPairs } from '../context/MemoryPairsContext'
import { useFullscreen } from '../../../../contexts/FullscreenContext'
import { SetupPhase } from './SetupPhase'
import { GamePhase } from './GamePhase'
import { ResultsPhase } from './ResultsPhase'
@@ -8,6 +10,15 @@ import { css } from '../../../../../styled-system/css'
export function MemoryPairsGame() {
const { state } = useMemoryPairs()
const { enterFullscreen } = useFullscreen()
useEffect(() => {
// Check if we should enter fullscreen (from URL parameter)
const urlParams = new URLSearchParams(window.location.search)
if (urlParams.get('fullscreen') === 'true') {
enterFullscreen()
}
}, [enterFullscreen])
return (
<div className={css({

View File

@@ -1,16 +1,19 @@
import { MemoryPairsProvider } from './context/MemoryPairsContext'
import { UserProfileProvider } from '../../../contexts/UserProfileContext'
import { GameModeProvider } from '../../../contexts/GameModeContext'
import { FullscreenProvider } from '../../../contexts/FullscreenContext'
import { MemoryPairsGame } from './components/MemoryPairsGame'
export default function MatchingPage() {
return (
<UserProfileProvider>
<GameModeProvider>
<MemoryPairsProvider>
<MemoryPairsGame />
</MemoryPairsProvider>
</GameModeProvider>
</UserProfileProvider>
<FullscreenProvider>
<UserProfileProvider>
<GameModeProvider>
<MemoryPairsProvider>
<MemoryPairsGame />
</MemoryPairsProvider>
</GameModeProvider>
</UserProfileProvider>
</FullscreenProvider>
)
}