mirror of
https://github.com/johndoe6345789/low-code-react-app-b.git
synced 2026-04-24 21:54:56 +00:00
Generated by Spark: I see loading screen, which is fine but we need really good console.log trace logging so i can trace the initialisation flow
This commit is contained in:
@@ -2,75 +2,108 @@ import { useCallback, useState } from 'react'
|
||||
import seedDataConfig from '@/config/seed-data.json'
|
||||
|
||||
export function useSeedData() {
|
||||
console.log('[SEED] 🌱 useSeedData hook initializing')
|
||||
const [isLoaded, setIsLoaded] = useState(false)
|
||||
const [isLoading, setIsLoading] = useState(false)
|
||||
|
||||
const loadSeedData = useCallback(async () => {
|
||||
if (isLoading || isLoaded) return
|
||||
console.log('[SEED] 🔍 loadSeedData called - isLoading:', isLoading, 'isLoaded:', isLoaded)
|
||||
|
||||
if (isLoading || isLoaded) {
|
||||
console.log('[SEED] ⏭️ Skipping seed data load (already loading or loaded)')
|
||||
return
|
||||
}
|
||||
|
||||
console.log('[SEED] 🚀 Starting seed data load')
|
||||
setIsLoading(true)
|
||||
console.time('[SEED] Seed data load duration')
|
||||
|
||||
try {
|
||||
console.log('[SEED] 🔌 Checking Spark KV availability')
|
||||
if (!window.spark?.kv) {
|
||||
console.warn('Spark KV not available, skipping seed data')
|
||||
console.warn('[SEED] ⚠️ Spark KV not available, skipping seed data')
|
||||
return
|
||||
}
|
||||
console.log('[SEED] ✅ Spark KV is available')
|
||||
|
||||
console.log('[SEED] 📋 Fetching existing keys from KV store')
|
||||
const keys = await window.spark.kv.keys()
|
||||
console.log('[SEED] 📊 Found', keys.length, 'existing keys:', keys)
|
||||
|
||||
console.log('[SEED] 📦 Seed data config entries:', Object.keys(seedDataConfig).length)
|
||||
let seededCount = 0
|
||||
let skippedCount = 0
|
||||
|
||||
for (const [key, value] of Object.entries(seedDataConfig)) {
|
||||
if (!keys.includes(key)) {
|
||||
console.log('[SEED] ➕ Seeding key:', key)
|
||||
await window.spark.kv.set(key, value)
|
||||
seededCount++
|
||||
} else {
|
||||
console.log('[SEED] ⏭️ Skipping existing key:', key)
|
||||
skippedCount++
|
||||
}
|
||||
}
|
||||
|
||||
console.log('[SEED] ✅ Seed data load complete - seeded:', seededCount, 'skipped:', skippedCount)
|
||||
setIsLoaded(true)
|
||||
} catch (error) {
|
||||
console.error('Failed to load seed data:', error)
|
||||
console.error('[SEED] ❌ Failed to load seed data:', error)
|
||||
setIsLoaded(true)
|
||||
} finally {
|
||||
setIsLoading(false)
|
||||
console.timeEnd('[SEED] Seed data load duration')
|
||||
}
|
||||
}, [isLoading, isLoaded])
|
||||
|
||||
const resetSeedData = useCallback(async () => {
|
||||
console.log('[SEED] 🔄 Resetting seed data')
|
||||
setIsLoading(true)
|
||||
try {
|
||||
if (!window.spark?.kv) {
|
||||
console.warn('Spark KV not available')
|
||||
console.warn('[SEED] ⚠️ Spark KV not available')
|
||||
return
|
||||
}
|
||||
|
||||
console.log('[SEED] 🔄 Overwriting all seed data keys')
|
||||
for (const [key, value] of Object.entries(seedDataConfig)) {
|
||||
console.log('[SEED] 📝 Setting key:', key)
|
||||
await window.spark.kv.set(key, value)
|
||||
}
|
||||
console.log('[SEED] ✅ Seed data reset complete')
|
||||
setIsLoaded(true)
|
||||
} catch (error) {
|
||||
console.error('Failed to reset seed data:', error)
|
||||
console.error('[SEED] ❌ Failed to reset seed data:', error)
|
||||
} finally {
|
||||
setIsLoading(false)
|
||||
}
|
||||
}, [])
|
||||
|
||||
const clearAllData = useCallback(async () => {
|
||||
console.log('[SEED] 🗑️ Clearing all data')
|
||||
setIsLoading(true)
|
||||
try {
|
||||
if (!window.spark?.kv) {
|
||||
console.warn('Spark KV not available')
|
||||
console.warn('[SEED] ⚠️ Spark KV not available')
|
||||
return
|
||||
}
|
||||
|
||||
const keys = await window.spark.kv.keys()
|
||||
console.log('[SEED] 📋 Deleting', keys.length, 'keys')
|
||||
for (const key of keys) {
|
||||
console.log('[SEED] 🗑️ Deleting key:', key)
|
||||
await window.spark.kv.delete(key)
|
||||
}
|
||||
console.log('[SEED] ✅ All data cleared')
|
||||
setIsLoaded(false)
|
||||
} catch (error) {
|
||||
console.error('Failed to clear data:', error)
|
||||
console.error('[SEED] ❌ Failed to clear data:', error)
|
||||
} finally {
|
||||
setIsLoading(false)
|
||||
}
|
||||
}, [])
|
||||
|
||||
console.log('[SEED] 📤 Returning seed data hook methods')
|
||||
return {
|
||||
isLoaded,
|
||||
isLoading,
|
||||
|
||||
@@ -134,9 +134,22 @@ const DEFAULT_FILES: ProjectFile[] = [
|
||||
]
|
||||
|
||||
export function useProjectState() {
|
||||
console.log('[STATE] 🔧 useProjectState hook initializing')
|
||||
console.time('[STATE] Project state initialization')
|
||||
|
||||
console.log('[STATE] 📁 Loading files from KV')
|
||||
const [files, setFiles] = useKV<ProjectFile[]>('project-files', DEFAULT_FILES)
|
||||
console.log('[STATE] ✅ Files loaded:', files?.length || 0, 'files')
|
||||
|
||||
console.log('[STATE] 🗃️ Loading models from KV')
|
||||
const [models, setModels] = useKV<PrismaModel[]>('project-models', [])
|
||||
console.log('[STATE] ✅ Models loaded:', models?.length || 0, 'models')
|
||||
|
||||
console.log('[STATE] 🧩 Loading components from KV')
|
||||
const [components, setComponents] = useKV<ComponentNode[]>('project-components', [])
|
||||
console.log('[STATE] ✅ Components loaded:', components?.length || 0, 'components')
|
||||
|
||||
console.log('[STATE] 🌳 Loading component trees from KV')
|
||||
const [componentTrees, setComponentTrees] = useKV<ComponentTree[]>('project-component-trees', [
|
||||
{
|
||||
id: 'default-tree',
|
||||
@@ -147,17 +160,49 @@ export function useProjectState() {
|
||||
updatedAt: Date.now(),
|
||||
},
|
||||
])
|
||||
console.log('[STATE] ✅ Component trees loaded:', componentTrees?.length || 0, 'trees')
|
||||
|
||||
console.log('[STATE] 🔄 Loading workflows from KV')
|
||||
const [workflows, setWorkflows] = useKV<Workflow[]>('project-workflows', [])
|
||||
console.log('[STATE] ✅ Workflows loaded:', workflows?.length || 0, 'workflows')
|
||||
|
||||
console.log('[STATE] λ Loading lambdas from KV')
|
||||
const [lambdas, setLambdas] = useKV<Lambda[]>('project-lambdas', [])
|
||||
console.log('[STATE] ✅ Lambdas loaded:', lambdas?.length || 0, 'lambdas')
|
||||
|
||||
console.log('[STATE] 🎨 Loading theme from KV')
|
||||
const [theme, setTheme] = useKV<ThemeConfig>('project-theme', DEFAULT_THEME)
|
||||
console.log('[STATE] ✅ Theme loaded')
|
||||
|
||||
console.log('[STATE] 🎭 Loading Playwright tests from KV')
|
||||
const [playwrightTests, setPlaywrightTests] = useKV<PlaywrightTest[]>('project-playwright-tests', [])
|
||||
console.log('[STATE] ✅ Playwright tests loaded:', playwrightTests?.length || 0, 'tests')
|
||||
|
||||
console.log('[STATE] 📚 Loading Storybook stories from KV')
|
||||
const [storybookStories, setStorybookStories] = useKV<StorybookStory[]>('project-storybook-stories', [])
|
||||
console.log('[STATE] ✅ Storybook stories loaded:', storybookStories?.length || 0, 'stories')
|
||||
|
||||
console.log('[STATE] 🧪 Loading unit tests from KV')
|
||||
const [unitTests, setUnitTests] = useKV<UnitTest[]>('project-unit-tests', [])
|
||||
console.log('[STATE] ✅ Unit tests loaded:', unitTests?.length || 0, 'tests')
|
||||
|
||||
console.log('[STATE] 🐍 Loading Flask config from KV')
|
||||
const [flaskConfig, setFlaskConfig] = useKV<FlaskConfig>('project-flask-config', DEFAULT_FLASK_CONFIG)
|
||||
console.log('[STATE] ✅ Flask config loaded')
|
||||
|
||||
console.log('[STATE] ⚛️ Loading Next.js config from KV')
|
||||
const [nextjsConfig, setNextjsConfig] = useKV<NextJsConfig>('project-nextjs-config', DEFAULT_NEXTJS_CONFIG)
|
||||
console.log('[STATE] ✅ Next.js config loaded')
|
||||
|
||||
console.log('[STATE] 📦 Loading NPM settings from KV')
|
||||
const [npmSettings, setNpmSettings] = useKV<NpmSettings>('project-npm-settings', DEFAULT_NPM_SETTINGS)
|
||||
console.log('[STATE] ✅ NPM settings loaded')
|
||||
|
||||
console.log('[STATE] 🎚️ Loading feature toggles from KV')
|
||||
const [featureToggles, setFeatureToggles] = useKV<FeatureToggles>('project-feature-toggles', DEFAULT_FEATURE_TOGGLES)
|
||||
console.log('[STATE] ✅ Feature toggles loaded')
|
||||
|
||||
console.log('[STATE] 🛡️ Creating safe array wrappers')
|
||||
const safeFiles = Array.isArray(files) ? files : []
|
||||
const safeModels = Array.isArray(models) ? models : []
|
||||
const safeComponents = Array.isArray(components) ? components : []
|
||||
@@ -172,7 +217,11 @@ export function useProjectState() {
|
||||
const safeNextjsConfig = nextjsConfig || DEFAULT_NEXTJS_CONFIG
|
||||
const safeNpmSettings = npmSettings || DEFAULT_NPM_SETTINGS
|
||||
const safeFeatureToggles = featureToggles || DEFAULT_FEATURE_TOGGLES
|
||||
console.log('[STATE] ✅ Safe wrappers created')
|
||||
|
||||
console.log('[STATE] 📤 Returning project state object')
|
||||
console.timeEnd('[STATE] Project state initialization')
|
||||
|
||||
return {
|
||||
files: safeFiles,
|
||||
setFiles,
|
||||
|
||||
Reference in New Issue
Block a user