mirror of
https://github.com/ajnart/homarr.git
synced 2025-11-06 21:45:47 +01:00
♻️ Improve usage of /b and /board
This commit is contained in:
@@ -13,6 +13,7 @@ import Consola from 'consola';
|
|||||||
import { useSession } from 'next-auth/react';
|
import { useSession } from 'next-auth/react';
|
||||||
import { Trans, useTranslation } from 'next-i18next';
|
import { Trans, useTranslation } from 'next-i18next';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
|
import { useRouter } from 'next/router';
|
||||||
import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore';
|
import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore';
|
||||||
import { useNamedWrapperColumnCount } from '~/components/Dashboard/Wrappers/gridstack/store';
|
import { useNamedWrapperColumnCount } from '~/components/Dashboard/Wrappers/gridstack/store';
|
||||||
import { BoardHeadOverride } from '~/components/layout/Meta/BoardHeadOverride';
|
import { BoardHeadOverride } from '~/components/layout/Meta/BoardHeadOverride';
|
||||||
@@ -74,10 +75,11 @@ const DockerButton = () => {
|
|||||||
const CustomizeBoardButton = () => {
|
const CustomizeBoardButton = () => {
|
||||||
const { name } = useConfigContext();
|
const { name } = useConfigContext();
|
||||||
const { t } = useTranslation('boards/common');
|
const { t } = useTranslation('boards/common');
|
||||||
|
const href = useBoardLink(`/board/${name}/customize`);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Tooltip label={t('header.customize')}>
|
<Tooltip label={t('header.customize')}>
|
||||||
<HeaderActionButton component={Link} href={`/board/${name}/customize`}>
|
<HeaderActionButton component={Link} href={href}>
|
||||||
<IconSettings size={20} stroke={1.5} />
|
<IconSettings size={20} stroke={1.5} />
|
||||||
</HeaderActionButton>
|
</HeaderActionButton>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
@@ -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');
|
||||||
|
};
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import { useColorScheme } from '~/hooks/use-colorscheme';
|
|||||||
import { usePackageAttributesStore } from '~/tools/client/zustands/usePackageAttributesStore';
|
import { usePackageAttributesStore } from '~/tools/client/zustands/usePackageAttributesStore';
|
||||||
|
|
||||||
import { REPO_URL } from '../../../../data/constants';
|
import { REPO_URL } from '../../../../data/constants';
|
||||||
|
import { useBoardLink } from '../Templates/BoardLayout';
|
||||||
|
|
||||||
export const AvatarMenu = () => {
|
export const AvatarMenu = () => {
|
||||||
const { t } = useTranslation('layout/header');
|
const { t } = useTranslation('layout/header');
|
||||||
@@ -30,6 +31,7 @@ export const AvatarMenu = () => {
|
|||||||
const newVersionAvailable = useNewVersionAvailable();
|
const newVersionAvailable = useNewVersionAvailable();
|
||||||
|
|
||||||
const Icon = colorScheme === 'dark' ? IconSun : IconMoonStars;
|
const Icon = colorScheme === 'dark' ? IconSun : IconMoonStars;
|
||||||
|
const defaultBoardHref = useBoardLink('/board');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -51,7 +53,11 @@ export const AvatarMenu = () => {
|
|||||||
>
|
>
|
||||||
{t('actions.avatar.preferences')}
|
{t('actions.avatar.preferences')}
|
||||||
</Menu.Item>
|
</Menu.Item>
|
||||||
<Menu.Item component={Link} href="/board" icon={<IconDashboard size="1rem" />}>
|
<Menu.Item
|
||||||
|
component={Link}
|
||||||
|
href={defaultBoardHref}
|
||||||
|
icon={<IconDashboard size="1rem" />}
|
||||||
|
>
|
||||||
{t('actions.avatar.defaultBoard')}
|
{t('actions.avatar.defaultBoard')}
|
||||||
</Menu.Item>
|
</Menu.Item>
|
||||||
<Menu.Item component={Link} href="/manage" icon={<IconHomeShare size="1rem" />}>
|
<Menu.Item component={Link} href="/manage" icon={<IconHomeShare size="1rem" />}>
|
||||||
|
|||||||
1
src/pages/b/[slug]/customize.tsx
Normal file
1
src/pages/b/[slug]/customize.tsx
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export { default, getServerSideProps } from '../../board/[slug]/customize';
|
||||||
@@ -37,6 +37,7 @@ import {
|
|||||||
BoardCustomizationFormProvider,
|
BoardCustomizationFormProvider,
|
||||||
useBoardCustomizationForm,
|
useBoardCustomizationForm,
|
||||||
} from '~/components/Board/Customize/form';
|
} from '~/components/Board/Customize/form';
|
||||||
|
import { useBoardLink } from '~/components/layout/Templates/BoardLayout';
|
||||||
import { MainLayout } from '~/components/layout/Templates/MainLayout';
|
import { MainLayout } from '~/components/layout/Templates/MainLayout';
|
||||||
import { createTrpcServersideHelpers } from '~/server/api/helper';
|
import { createTrpcServersideHelpers } from '~/server/api/helper';
|
||||||
import { getServerAuthSession } from '~/server/auth';
|
import { getServerAuthSession } from '~/server/auth';
|
||||||
@@ -87,6 +88,8 @@ export default function CustomizationPage() {
|
|||||||
validateInputOnBlur: true,
|
validateInputOnBlur: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const backToBoardHref = useBoardLink(`/board/${query.slug}`);
|
||||||
|
|
||||||
const handleSubmit = async (values: z.infer<typeof boardCustomizationSchema>) => {
|
const handleSubmit = async (values: z.infer<typeof boardCustomizationSchema>) => {
|
||||||
if (isLoading) return;
|
if (isLoading) return;
|
||||||
showNotification({
|
showNotification({
|
||||||
@@ -190,7 +193,7 @@ export default function CustomizationPage() {
|
|||||||
</Title>
|
</Title>
|
||||||
<Button
|
<Button
|
||||||
component={Link}
|
component={Link}
|
||||||
href={`/board/${query.slug}`}
|
href={backToBoardHref}
|
||||||
variant="light"
|
variant="light"
|
||||||
leftIcon={<IconArrowLeft size={16} />}
|
leftIcon={<IconArrowLeft size={16} />}
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user