This commit is contained in:
Tickbase
2025-05-18 09:48:13 +02:00
parent 0be15f83e7
commit accbd1e058

View File

@@ -1,4 +1,4 @@
import { useState, useCallback, useEffect } from 'react' import { useState, useCallback, useEffect, useRef } from 'react'
import { useAppContext } from '@/contexts/useAppContext' import { useAppContext } from '@/contexts/useAppContext'
interface UseAppLogicOptions { interface UseAppLogicOptions {
@@ -25,6 +25,7 @@ export function useAppLogic(options: UseAppLogicOptions = {}) {
const [filter, setFilter] = useState('all') const [filter, setFilter] = useState('all')
const [searchQuery, setSearchQuery] = useState('') const [searchQuery, setSearchQuery] = useState('')
const [isInitialLoad, setIsInitialLoad] = useState(true) const [isInitialLoad, setIsInitialLoad] = useState(true)
const isInitializedRef = useRef(false)
const [scanProgress, setScanProgress] = useState({ const [scanProgress, setScanProgress] = useState({
message: 'Initializing...', message: 'Initializing...',
progress: 0 progress: 0
@@ -54,43 +55,32 @@ export function useAppLogic(options: UseAppLogicOptions = {}) {
// Handle initial loading with simulated progress // Handle initial loading with simulated progress
useEffect(() => { useEffect(() => {
if (autoLoad && isInitialLoad) { if (!autoLoad || !isInitialLoad || isInitializedRef.current) return
const initialLoad = async () => {
try {
// Show scanning message
setScanProgress({ message: 'Scanning for games...', progress: 20 })
// Small delay to show loading screen isInitializedRef.current = true
await new Promise(resolve => setTimeout(resolve, 800)) console.log("[APP LOGIC #2] Starting initialization")
// Update progress const initialLoad = async () => {
setScanProgress({ message: 'Loading game information...', progress: 50 }) try {
setScanProgress({ message: 'Scanning for games...', progress: 20 })
await new Promise(resolve => setTimeout(resolve, 800))
// Load games data setScanProgress({ message: 'Loading game information...', progress: 50 })
await loadGames() await loadGames()
// Update progress setScanProgress({ message: 'Finishing up...', progress: 90 })
setScanProgress({ message: 'Finishing up...', progress: 90 }) await new Promise(resolve => setTimeout(resolve, 500))
// Small delay for animation setScanProgress({ message: 'Ready!', progress: 100 })
await new Promise(resolve => setTimeout(resolve, 500)) setTimeout(() => setIsInitialLoad(false), 500)
} catch (error) {
// Complete setScanProgress({ message: `Error: ${error}`, progress: 100 })
setScanProgress({ message: 'Ready!', progress: 100 }) showToast(`Failed to load: ${error}`, 'error')
setTimeout(() => setIsInitialLoad(false), 2000)
// Exit loading screen after a moment
setTimeout(() => setIsInitialLoad(false), 500)
} catch (error) {
setScanProgress({ message: `Error: ${error}`, progress: 100 })
showToast(`Failed to load: ${error}`, 'error')
// Allow exit even on error
setTimeout(() => setIsInitialLoad(false), 2000)
}
} }
initialLoad()
} }
initialLoad()
}, [autoLoad, isInitialLoad, loadGames, showToast]) }, [autoLoad, isInitialLoad, loadGames, showToast])
// Force a refresh // Force a refresh