diff options
| author | 2024-04-24 12:12:47 +0200 | |
|---|---|---|
| committer | 2024-04-24 11:12:47 +0100 | |
| commit | 7a1e6394831fb07e303c5ed0900dfe1ea4820de5 (patch) | |
| tree | bcd526463b19a85fbe821dcad2276da401daec18 /web/source/settings/views/user/routes.tsx | |
| parent | [chore]: Bump codeberg.org/gruf/go-mutexes from 1.4.0 to 1.4.1 (#2860) (diff) | |
| download | gotosocial-7a1e6394831fb07e303c5ed0900dfe1ea4820de5.tar.xz | |
[chore] Refactor settings panel routing (and other fixes) (#2864)
Diffstat (limited to 'web/source/settings/views/user/routes.tsx')
| -rw-r--r-- | web/source/settings/views/user/routes.tsx | 80 | 
1 files changed, 80 insertions, 0 deletions
diff --git a/web/source/settings/views/user/routes.tsx b/web/source/settings/views/user/routes.tsx new file mode 100644 index 000000000..76ac50bc2 --- /dev/null +++ b/web/source/settings/views/user/routes.tsx @@ -0,0 +1,80 @@ +/* +	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 <http://www.gnu.org/licenses/>. +*/ + +import { MenuItem } from "../../lib/navigation/menu"; +import React from "react"; +import { BaseUrlContext, useBaseUrl } from "../../lib/navigation/util"; +import UserProfile from "./profile"; +import UserSettings from "./settings"; +import UserMigration from "./migration"; +import { Redirect, Route, Router, Switch } from "wouter"; + +/** + *  + * Basic user menu. Profile + accounts  + * settings, post settings, migration. + */ +export function UserMenu() {	 +	return ( +		<MenuItem +			name="User" +			itemUrl="user" +			defaultChild="profile" +		> +			{/* Profile */} +			<MenuItem +				name="Profile" +				itemUrl="profile" +				icon="fa-user" +			/> +			{/* Settings */} +			<MenuItem +				name="Settings" +				itemUrl="settings" +				icon="fa-cogs" +			/> +			{/* Migration */} +			<MenuItem +				name="Migration" +				itemUrl="migration" +				icon="fa-exchange" +			/> +		</MenuItem> +	); +} + +export function UserRouter() { +	const baseUrl = useBaseUrl(); +	const thisBase = "/user"; +	const absBase = baseUrl + thisBase; + +	return ( +		<BaseUrlContext.Provider value={absBase}> +			<Router base={thisBase}> +				<Switch> +					<Route path="/profile" component={UserProfile} /> +					<Route path="/settings" component={UserSettings} /> +					<Route path="/migration" component={UserMigration} /> +					{/* Fallback component */} +					<Route><Redirect to="/profile" /></Route> +				</Switch> +			</Router> +		</BaseUrlContext.Provider> +	); +}  | 
