import '../global.css'
import { useEffect } from 'react'
import { Stack } from 'expo-router'
import { SplashScreen } from 'expo-router'
import { QueryClientProvider } from '@tanstack/react-query'
import { queryClient } from '@/lib/trpc'
import { TRPCProvider } from '@/lib/trpc'
import { useAuthStore } from '@/store/auth.store'
import { setupPushNotifications } from '@/lib/notifications'

SplashScreen.preventAutoHideAsync()

export default function RootLayout() {
  const initAuth = useAuthStore((s) => s.initialize)
  const isInitialized = useAuthStore((s) => s.isInitialized)

  useEffect(() => {
    initAuth().finally(() => SplashScreen.hideAsync())
  }, [initAuth])

  useEffect(() => {
    setupPushNotifications().catch(console.error)
  }, [])

  if (!isInitialized) return null

  return (
    <TRPCProvider>
      <Stack screenOptions={{ headerShown: false }}>
        <Stack.Screen name="index" />
        <Stack.Screen name="(auth)" options={{ animation: 'fade' }} />
        <Stack.Screen name="(app)" options={{ animation: 'fade' }} />
        <Stack.Screen name="stellen-public" />
      </Stack>
    </TRPCProvider>
  )
}
