import {useAsyncStorage} 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 {createPlans, createSets, getDb} from './db'; import BestPage from './BestPage'; 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 App = () => { const [db, setDb] = useState(null); const dark = useColorScheme() === 'dark'; const {getItem: getMinutes, setItem: setMinutes} = useAsyncStorage('minutes'); const {getItem: getSeconds, setItem: setSeconds} = useAsyncStorage('seconds'); const {getItem: getAlarmEnabled, setItem: setAlarmEnabled} = useAsyncStorage('alarmEnabled'); const init = async () => { const gotDb = await getDb(); await gotDb.executeSql(createPlans); await gotDb.executeSql(createSets); setDb(gotDb); const minutes = await getMinutes(); if (minutes === null) await setMinutes('3'); const seconds = await getSeconds(); if (seconds === null) await setSeconds('30'); const alarmEnabled = await getAlarmEnabled(); if (alarmEnabled === null) await setAlarmEnabled('false'); }; useEffect(() => { init(); }, []); return ( }}> {db && ( )} ); }; export default App;