diff --git a/src/components/layout/Templates/BoardLayout.tsx b/src/components/layout/Templates/BoardLayout.tsx index 642f3c768..92e4d3c71 100644 --- a/src/components/layout/Templates/BoardLayout.tsx +++ b/src/components/layout/Templates/BoardLayout.tsx @@ -13,6 +13,7 @@ import Consola from 'consola'; import { useSession } from 'next-auth/react'; import { Trans, useTranslation } from 'next-i18next'; import Link from 'next/link'; +import { useRouter } from 'next/router'; import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore'; import { useNamedWrapperColumnCount } from '~/components/Dashboard/Wrappers/gridstack/store'; import { BoardHeadOverride } from '~/components/layout/Meta/BoardHeadOverride'; @@ -74,10 +75,11 @@ const DockerButton = () => { const CustomizeBoardButton = () => { const { name } = useConfigContext(); const { t } = useTranslation('boards/common'); + const href = useBoardLink(`/board/${name}/customize`); return ( - + @@ -223,3 +225,11 @@ const BackgroundImage = () => { /> ); }; + +export const useBoardLink = ( + link: '/board' | `/board/${string}/customize` | `/board/${string}` +) => { + const router = useRouter(); + + return router.asPath.startsWith('/board') ? link : link.replace('/board', '/b'); +}; diff --git a/src/components/layout/header/AvatarMenu.tsx b/src/components/layout/header/AvatarMenu.tsx index 4f7daaf88..5f46a12ff 100644 --- a/src/components/layout/header/AvatarMenu.tsx +++ b/src/components/layout/header/AvatarMenu.tsx @@ -21,6 +21,7 @@ import { useColorScheme } from '~/hooks/use-colorscheme'; import { usePackageAttributesStore } from '~/tools/client/zustands/usePackageAttributesStore'; import { REPO_URL } from '../../../../data/constants'; +import { useBoardLink } from '../Templates/BoardLayout'; export const AvatarMenu = () => { const { t } = useTranslation('layout/header'); @@ -30,6 +31,7 @@ export const AvatarMenu = () => { const newVersionAvailable = useNewVersionAvailable(); const Icon = colorScheme === 'dark' ? IconSun : IconMoonStars; + const defaultBoardHref = useBoardLink('/board'); return ( <> @@ -51,7 +53,11 @@ export const AvatarMenu = () => { > {t('actions.avatar.preferences')} - }> + } + > {t('actions.avatar.defaultBoard')} }> diff --git a/src/pages/b/[slug]/customize.tsx b/src/pages/b/[slug]/customize.tsx new file mode 100644 index 000000000..6b7334e77 --- /dev/null +++ b/src/pages/b/[slug]/customize.tsx @@ -0,0 +1 @@ +export { default, getServerSideProps } from '../../board/[slug]/customize'; diff --git a/src/pages/board/[slug]/customize.tsx b/src/pages/board/[slug]/customize.tsx index d7c264b95..fe60e9d99 100644 --- a/src/pages/board/[slug]/customize.tsx +++ b/src/pages/board/[slug]/customize.tsx @@ -37,6 +37,7 @@ import { BoardCustomizationFormProvider, useBoardCustomizationForm, } from '~/components/Board/Customize/form'; +import { useBoardLink } from '~/components/layout/Templates/BoardLayout'; import { MainLayout } from '~/components/layout/Templates/MainLayout'; import { createTrpcServersideHelpers } from '~/server/api/helper'; import { getServerAuthSession } from '~/server/auth'; @@ -87,6 +88,8 @@ export default function CustomizationPage() { validateInputOnBlur: true, }); + const backToBoardHref = useBoardLink(`/board/${query.slug}`); + const handleSubmit = async (values: z.infer) => { if (isLoading) return; showNotification({ @@ -190,7 +193,7 @@ export default function CustomizationPage() {