import '../global.css';

import React, { useEffect } from 'react';
import { Stack } from 'expo-router';
import { StatusBar } from 'expo-status-bar';
import { View } from 'react-native';
import { SafeAreaProvider } from 'react-native-safe-area-context';
// GestureHandlerRootView обязателен для работы gesture-handler'а
// на всех страницах: Pan/LongPress/Tap жестах внутри чатов.
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import { loadKeyFile, loadSettings } from '@/lib/storage';
import { setNodeUrl } from '@/lib/api';
import { useStore } from '@/lib/store';

export default function RootLayout() {
  const setKeyFile  = useStore(s => s.setKeyFile);
  const setSettings = useStore(s => s.setSettings);
  const booted      = useStore(s => s.booted);
  const setBooted   = useStore(s => s.setBooted);

  // Bootstrap: load key + settings from storage синхронно до первого
  // render'а экранов. Пока `booted=false` мы рендерим чёрный экран —
  // это убирает "мелькание" welcome'а при старте, когда ключи уже есть
  // в AsyncStorage, но ещё не успели загрузиться в store.
  useEffect(() => {
    (async () => {
      try {
        const [kf, settings] = await Promise.all([loadKeyFile(), loadSettings()]);
        if (kf) setKeyFile(kf);
        setSettings(settings);
        setNodeUrl(settings.nodeUrl);
      } finally {
        setBooted(true);
      }
    })();
  }, []);

  return (
    <GestureHandlerRootView style={{ flex: 1 }}>
      <SafeAreaProvider>
        <View className="flex-1 bg-background">
          <StatusBar style="light" />
          {booted ? (
            <Stack
              screenOptions={{
                headerShown:   false,
                contentStyle:  { backgroundColor: '#000000' },
                animation:     'slide_from_right',
              }}
            />
          ) : (
            // Пустой чёрный экран пока bootstrap идёт — без flicker'а.
            <View style={{ flex: 1, backgroundColor: '#000000' }} />
          )}
        </View>
      </SafeAreaProvider>
    </GestureHandlerRootView>
  );
}
