import { Route, Router } from "@solidjs/router"; import { ThemeProvider } from "@suid/material"; import { Component, createRenderEffect, createSignal, ErrorBoundary, lazy, onCleanup, } from "solid-js"; import { useRootTheme } from "./material/mui.js"; import { Provider as ClientProvider, createMastoClientFor, type Session, } from "./masto/clients.js"; import { $accounts } from "./accounts/stores.js"; import { useStore } from "@nanostores/solid"; import { DateFnScope, useLanguage } from "./platform/i18n.jsx"; const AccountSignIn = lazy(() => import("./accounts/SignIn.js")); const AccountMastodonOAuth2Callback = lazy( () => import("./accounts/MastodonOAuth2Callback.js"), ); const TimelineHome = lazy(() => import("./timelines/Home.js")); const Settings = lazy(() => import("./settings/Settings.js")); const TootBottomSheet = lazy(() => import("./timelines/TootBottomSheet.js")); const MotionSettings = lazy(() => import("./settings/Motions.js")); const LanguageSettings = lazy(() => import("./settings/Language.js")); const RegionSettings = lazy(() => import("./settings/Region.jsx")); const Routing: Component = () => { return ( ); }; const App: Component = () => { const theme = useRootTheme(); const accts = useStore($accounts); const clientStore = createSignal([]); const lang = useLanguage(); createRenderEffect(() => { const [, setClients] = clientStore; setClients( accts().map((x) => ({ account: x, client: createMastoClientFor(x) })), ); }); createRenderEffect(() => { const root = document.querySelector(":root")!; root.setAttribute("lang", lang()); }); onCleanup(() => { const root = document.querySelector(":root")!; root.removeAttribute("lang"); }); const UnexpectedError = lazy(() => import("./UnexpectedError.js")); return ( { console.error(err); return ; }} > ); }; export default App;