From 7a1e6394831fb07e303c5ed0900dfe1ea4820de5 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Wed, 24 Apr 2024 12:12:47 +0200 Subject: [chore] Refactor settings panel routing (and other fixes) (#2864) --- web/source/settings/lib/navigation/components.jsx | 201 ---------------------- 1 file changed, 201 deletions(-) delete mode 100644 web/source/settings/lib/navigation/components.jsx (limited to 'web/source/settings/lib/navigation/components.jsx') diff --git a/web/source/settings/lib/navigation/components.jsx b/web/source/settings/lib/navigation/components.jsx deleted file mode 100644 index 64ed160b6..000000000 --- a/web/source/settings/lib/navigation/components.jsx +++ /dev/null @@ -1,201 +0,0 @@ -/* - GoToSocial - Copyright (C) GoToSocial Authors admin@gotosocial.org - SPDX-License-Identifier: AGPL-3.0-or-later - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ - -const React = require("react"); -const { Link, Route, Redirect, Switch, useLocation, useRouter } = require("wouter"); -const syncpipe = require("syncpipe"); - -const { - RoleContext, - useHasPermission, - checkPermission, - BaseUrlContext -} = require("./util"); - -const ActiveRouteCtx = React.createContext(); -function useActiveRoute() { - return React.useContext(ActiveRouteCtx); -} - -function Sidebar(menuTree, routing) { - const components = menuTree.map((m) => m.MenuEntry); - - return function SidebarComponent() { - const router = useRouter(); - const [location] = useLocation(); - - let activeRoute = routing.find((l) => { - let [match] = router.matcher(l.routingUrl, location); - return match; - })?.routingUrl; - - return ( - - ); - }; -} - -function ViewRouter(routing, defaultRoute) { - return function ViewRouterComponent() { - const permissions = React.useContext(RoleContext); - - const filteredRoutes = React.useMemo(() => { - return syncpipe(routing, [ - (_) => _.filter((route) => checkPermission(route.permissions, permissions)), - (_) => _.map((route) => { - return ( - - - {/* FIXME: implement reset */} - - {route.view} - - - - ); - }) - ]); - }, [permissions]); - - return ( - - {filteredRoutes} - - - ); - }; -} - -function MenuComponent({ type, name, url, icon, permissions, links, level, children }) { - const activeRoute = useActiveRoute(); - - if (!useHasPermission(permissions)) { - return null; - } - - const classes = [type]; - - if (level == 0) { - classes.push("top-level"); - } else if (level == 1) { - classes.push("expanding"); - } else { - classes.push("nested"); - } - - const isActive = links.includes(activeRoute); - if (isActive) { - classes.push("active"); - } - - const className = classes.join(" "); - - return ( -
  • - - - {icon &&