import React from 'react';
import {NavigationContainer} from '@react-navigation/native';
import {createNativeStackNavigator} from '@react-navigation/native-stack';
import MMKVStorage from 'react-native-mmkv-storage';
import HomeScreen from './src/screens/Home';
import JournalScreen from './src/screens/Journal';
import PageScreen from './src/screens/Page';
import {ThemeProvider} from 'styled-components/native';
import {CantoThemes} from './src/styles';
import {metadata} from './src';

const Stack = createNativeStackNavigator();

const App = () => {
  const MMKV = new MMKVStorage.Loader()
    .withInstanceID(metadata.mmkvInstance)
    .initialize();
  const theme = MMKV.getMap('theme') ?? {name: 'main'};
  console.log(
    `\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    CANTO DEBUG\n-----------------------------------
    Theme: ${theme.name}
    Time: ${new Date().toLocaleString()}\n\n`,
  );

  return (
    <ThemeProvider theme={CantoThemes[theme.name]}>
      <NavigationContainer>
        <Stack.Navigator initialRouteName="Home">
          <Stack.Screen
            name="Home"
            component={HomeScreen}
            options={{headerShown: false}}
          />
          <Stack.Screen
            name="Journal"
            component={JournalScreen}
            options={{
              headerStyle: {
                backgroundColor: theme.headerBg,
                color: theme.textColor,
              },
              headerTintColor: theme.textColor,
            }}
          />
          <Stack.Screen
            name="Page"
            component={PageScreen}
            options={{headerShown: false}}
          />
        </Stack.Navigator>
      </NavigationContainer>
    </ThemeProvider>
  );
};

export default App;