import AsyncStorage from '@react-native-async-storage/async-storage'; import {createMaterialTopTabNavigator} from '@react-navigation/material-top-tabs'; import { DarkTheme, DefaultTheme, NavigationContainer, } from '@react-navigation/native'; import React, {useEffect, useState} from 'react'; import {StatusBar, useColorScheme} from 'react-native'; import { DarkTheme as DarkThemePaper, DefaultTheme as DefaultThemePaper, Provider, } from 'react-native-paper'; import {SQLiteDatabase} from 'react-native-sqlite-storage'; import Ionicon from 'react-native-vector-icons/Ionicons'; import BestPage from './BestPage'; import {createPlans, createSets, getDb} from './db'; import HomePage from './HomePage'; import PlanPage from './PlanPage'; import SettingsPage from './SettingsPage'; const Tab = createMaterialTopTabNavigator(); export type RootStackParamList = { Home: {}; Settings: {}; Best: {}; Plan: {}; }; export const DatabaseContext = React.createContext({} as any); const {getItem, setItem} = AsyncStorage; const App = () => { const [db, setDb] = useState(null); const dark = useColorScheme() === 'dark'; const init = async () => { const gotDb = await getDb(); await gotDb.executeSql(createPlans); await gotDb.executeSql(createSets); setDb(gotDb); const minutes = await getItem('minutes'); if (minutes === null) await setItem('minutes', '3'); const seconds = await getItem('seconds'); if (seconds === null) await setItem('seconds', '30'); const alarmEnabled = await getItem('alarmEnabled'); if (alarmEnabled === null) await setItem('alarmEnabled', 'false'); }; useEffect(() => { init(); }, []); return ( }}> {db && ( )} ); }; export default App;