From f8dfa0d7f00c3cd0aa1106310ebe7750f2c80e31 Mon Sep 17 00:00:00 2001 From: Thomas Camlong <49837342+ajnart@users.noreply.github.com> Date: Sun, 22 Oct 2023 18:00:16 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Improve=20customizations=20page=20l?= =?UTF-8?q?oad=20speed=20with=20SSR=20(#1477)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/board/[slug]/customize.tsx | 29 ++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/pages/board/[slug]/customize.tsx b/src/pages/board/[slug]/customize.tsx index b027098be..3cf8ec665 100644 --- a/src/pages/board/[slug]/customize.tsx +++ b/src/pages/board/[slug]/customize.tsx @@ -18,17 +18,19 @@ import { IconChartCandle, IconCheck, IconDragDrop, - IconLayout, IconLock, + IconLayout, + IconLock, IconX, TablerIconsProps, } from '@tabler/icons-react'; -import { GetServerSideProps } from 'next'; +import { GetServerSideProps, InferGetServerSidePropsType } from 'next'; import { useTranslation } from 'next-i18next'; import Head from 'next/head'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { ReactNode } from 'react'; import { z } from 'zod'; +import { AccessCustomization } from '~/components/Board/Customize/Access/AccessCustomization'; import { AppearanceCustomization } from '~/components/Board/Customize/Appearance/AppearanceCustomization'; import { GridstackCustomization } from '~/components/Board/Customize/Gridstack/GridstackCustomization'; import { LayoutCustomization } from '~/components/Board/Customize/Layout/LayoutCustomization'; @@ -46,21 +48,30 @@ import { firstUpperCase } from '~/tools/shared/strings'; import { api } from '~/utils/api'; import { useI18nZodResolver } from '~/utils/i18n-zod-resolver'; import { boardCustomizationSchema } from '~/validations/boards'; -import { AccessCustomization } from '~/components/Board/Customize/Access/AccessCustomization'; const notificationId = 'board-customization-notification'; -export default function CustomizationPage() { - const query = useRouter().query as { slug: string }; +export default function CustomizationPage({ + initialConfig, +}: InferGetServerSidePropsType) { + const query = useRouter().query as { + slug: string; + }; const utils = api.useContext(); - const { data: config } = api.config.byName.useQuery({ name: query.slug }); + const { data: config } = api.config.byName.useQuery( + { name: query.slug }, + { + initialData: initialConfig, + refetchOnMount: false, + } + ); const { mutateAsync: saveCusomization, isLoading } = api.config.saveCusomization.useMutation(); const { i18nZodResolver } = useI18nZodResolver(); const { t } = useTranslation('boards/customize'); const form = useBoardCustomizationForm({ initialValues: { access: { - allowGuests: config?.settings.access.allowGuests ?? false + allowGuests: config?.settings.access.allowGuests ?? false, }, layout: { leftSidebarEnabled: config?.settings.customization.layout.enabledLeftSidebar ?? false, @@ -143,6 +154,7 @@ export default function CustomizationPage() {