mirror of
https://github.com/SrIzan10/featheroom.git
synced 2026-06-06 00:56:49 +00:00
53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
import { QueryClientProvider } from '@tanstack/react-query'
|
|
import { Slot } from 'expo-router'
|
|
import * as SecureStore from 'expo-secure-store'
|
|
import { useEffect, useState } from 'react'
|
|
import { useColorScheme } from 'react-native'
|
|
import { PaperProvider } from 'react-native-paper'
|
|
|
|
import { queryClient } from '@/lib/clients/classroom'
|
|
import { AuthProvider } from '@/lib/providers/auth'
|
|
import { Setting } from '@/lib/types'
|
|
import { Themes } from '@/lib/ui'
|
|
|
|
import '../global.css'
|
|
|
|
export default function Root() {
|
|
const colorScheme = useColorScheme()
|
|
const [settings, setSettings] = useState<Setting>({
|
|
theme: 'auto',
|
|
color: 'default',
|
|
})
|
|
|
|
// Load settings from the device
|
|
useEffect(() => {
|
|
SecureStore.getItemAsync('settings').then((result) => {
|
|
if (result === null) {
|
|
SecureStore.setItemAsync('settings', JSON.stringify(settings)).then(
|
|
(res) => console.log(res),
|
|
)
|
|
}
|
|
|
|
setSettings(JSON.parse(result ?? JSON.stringify(settings)))
|
|
})
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}, [])
|
|
|
|
return (
|
|
<PaperProvider
|
|
theme={
|
|
Themes[
|
|
settings.theme === 'auto' ? (colorScheme ?? 'dark') : settings.theme
|
|
][settings.color]
|
|
}
|
|
>
|
|
<QueryClientProvider client={queryClient}>
|
|
<AuthProvider>
|
|
<Slot />
|
|
</AuthProvider>
|
|
</QueryClientProvider>
|
|
</PaperProvider>
|
|
)
|
|
}
|