import { createEffect, createResource, Show } from "solid-js" import { Router, Route, useLocation, useNavigate } from "@solidjs/router" import type { Component } from "solid-js" import Navbar from "./components/Navbar" import Home from "./pages/Home" import Login from "./pages/Login" import RelayList from "./pages/relays/RelayList" import RelayNew from "./pages/relays/RelayNew" import RelayDetail from "./pages/relays/RelayDetail" import RelayEdit from "./pages/relays/RelayEdit" import Account from "./pages/Account" import AdminTenants from "./pages/admin/AdminTenants" import AdminTenantDetail from "./pages/admin/AdminTenantDetail" import AdminRelays from "./pages/admin/AdminRelays" import AdminRelayDetail from "./pages/admin/AdminRelayDetail" import AdminRelayEdit from "./pages/admin/AdminRelayEdit" import { useActiveAccount } from "./lib/nostr" import { adminCheck as fetchAdminCheck } from "./lib/api" function Layout(props: { children?: any }) { const location = useLocation() createEffect(() => { // Reinitialize Preline components on route change location.pathname window.HSStaticMethods?.autoInit() }) return (
{props.children}
) } export default function App() { const withTenantAuth = (Page: Component): Component => { return () => { const navigate = useNavigate() const account = useActiveAccount() createEffect(() => { if (!account()) navigate("/login", { replace: true }) }) return } } const withAdminAuth = (Page: Component): Component => { return () => { const navigate = useNavigate() const account = useActiveAccount() const [adminCheck] = createResource( () => account()?.id, () => fetchAdminCheck(), ) createEffect(() => { if (!account()) navigate("/login", { replace: true }) }) return ( Checking admin access...}> You do not have admin access.} > ) } } return ( ) }