webapp/src/app.tsx

51 lines
1.6 KiB
TypeScript
Raw Normal View History

2024-06-25 11:25:20 +00:00
import { Meta, MetaProvider } from '@solidjs/meta'
2024-06-24 17:50:27 +00:00
import { Router } from '@solidjs/router'
import { FileRoutes } from '@solidjs/start/router'
import { type JSX, Suspense } from 'solid-js'
import { Loading } from './components/_shared/Loading'
2024-07-12 11:19:58 +00:00
import { AuthorsProvider } from './context/authors'
2024-06-25 11:25:20 +00:00
import { EditorProvider } from './context/editor'
2024-06-24 17:50:27 +00:00
import { FeedProvider } from './context/feed'
2024-06-28 10:48:11 +00:00
import { LocalizeProvider } from './context/localize'
2024-06-24 17:50:27 +00:00
import { SessionProvider } from './context/session'
import { TopicsProvider } from './context/topics'
import { UIProvider } from './context/ui' // snackbar included
import '~/styles/app.scss'
2024-09-15 16:41:02 +00:00
import { AuthToken } from '@authorizerdev/authorizer-js'
2024-06-24 17:50:27 +00:00
export const Providers = (props: { children?: JSX.Element }) => {
2024-09-15 16:41:02 +00:00
const sessionStateChanged = (payload: AuthToken) => {
console.debug(payload)
// TODO: maybe load subs here
}
2024-06-24 17:50:27 +00:00
return (
<LocalizeProvider>
2024-09-15 16:41:02 +00:00
<SessionProvider onStateChangeCallback={sessionStateChanged}>
2024-07-30 19:06:17 +00:00
<TopicsProvider>
<FeedProvider>
<MetaProvider>
<Meta name="viewport" content="width=device-width, initial-scale=1" />
<UIProvider>
<EditorProvider>
<AuthorsProvider>
<Suspense fallback={<Loading />}>{props.children}</Suspense>
</AuthorsProvider>
</EditorProvider>
</UIProvider>
</MetaProvider>
</FeedProvider>
</TopicsProvider>
2024-06-24 17:50:27 +00:00
</SessionProvider>
</LocalizeProvider>
)
}
export const App = () => (
<Router root={Providers}>
<FileRoutes />
</Router>
)
export default App