import { usePrefersDark } from '@solid-primitives/media' import { Navigate, Route, Routes, useNavigate } from '@solidjs/router' import { Show, createEffect, lazy, onMount } from 'solid-js' import { Toaster } from 'solid-toast' import { twMerge } from 'tailwind-merge' import { Header } from '~/components' import { ROUTES } from '~/constants' import { I18nProvider, locale } from '~/i18n' import { WsMsg, autoSwitchTheme, curTheme, endpoint, favDayTheme, favNightTheme, setCurTheme, setLatestConnectionMsg, useProxies, useTwemoji, useWsRequest, } from '~/signals' const Setup = lazy(() => import('~/pages/Setup')) const Overview = lazy(() => import('~/pages/Overview')) const Connections = lazy(() => import('~/pages/Connections')) const Logs = lazy(() => import('~/pages/Logs')) const Proxies = lazy(() => import('~/pages/Proxies')) const Rules = lazy(() => import('~/pages/Rules')) const Config = lazy(() => import('~/pages/Config')) const ProtectedResources = () => { const { fetchProxies } = useProxies() onMount(fetchProxies) const latestConnectionMsg = useWsRequest('connections') createEffect(() => { setLatestConnectionMsg(latestConnectionMsg()) }) return null } export const App = () => { const navigate = useNavigate() const prefersDark = usePrefersDark() createEffect(() => { if (autoSwitchTheme()) { setCurTheme(prefersDark() ? favNightTheme() : favDayTheme()) } }) onMount(() => { if (!endpoint()) { navigate(ROUTES.Setup) } }) return (
} />
) }