From 73e637e20bd3c4ef0360e0bcaa64576ddb840d4e Mon Sep 17 00:00:00 2001 From: Robin MacPherson Date: Thu, 27 Jun 2024 18:40:43 +0100 Subject: [PATCH] Fix up the final pages! --- packages/web/pages/post/[id]/edit.tsx | 64 +++++++++++++------ packages/web/pages/post/[id]/index.tsx | 6 -- .../web/pages/post/private/[id]/index.tsx | 29 +++++++-- 3 files changed, 68 insertions(+), 31 deletions(-) diff --git a/packages/web/pages/post/[id]/edit.tsx b/packages/web/pages/post/[id]/edit.tsx index 98884006..f5ba80c3 100644 --- a/packages/web/pages/post/[id]/edit.tsx +++ b/packages/web/pages/post/[id]/edit.tsx @@ -1,7 +1,6 @@ import React from 'react' import { NextPage } from 'next' import { useRouter } from 'next/router' -import { withApollo } from '@/lib/apollo' import { useTranslation } from '@/config/i18n' import { TElement } from '@udecode/plate' @@ -13,12 +12,19 @@ import PostEditor, { } from '@/components/PostEditor' import theme from '@/theme' import Button, { ButtonVariant } from '@/components/Button' -import { useEditPostQuery, useUpdatePostMutation } from '@/generated/graphql' +import { + EditPostDocument, + PostPageDocument, + useEditPostQuery, + useUpdatePostMutation, +} from '@/generated/graphql' import AuthGate from '@/components/AuthGate' import ConfirmationModal from '@/components/Modals/ConfirmationModal' import useUILanguage from '@/hooks/useUILanguage' import useAuthCheck from '@/hooks/useAuthCheck' import useUploadInlineImages from '@/hooks/useUploadInlineImages' +import { journalyMiddleware } from '@/lib/journalyMiddleware' +import { getUiLanguage } from '@/utils/getUiLanguage' const EditPostPage: NextPage = () => { const router = useRouter() @@ -123,19 +129,15 @@ const EditPostPage: NextPage = () => { clear() setSaving(false) router.push({ pathname: `/post/${postId}` }) - }, [ - setSaving, - setErrorMessage, - dataRef, - uploadInlineImages, - updatePost, - router, - ]) - - const onSaveClick = React.useCallback((e: React.MouseEvent) => { - e.preventDefault() - savePost() - }, [savePost]) + }, [setSaving, setErrorMessage, dataRef, uploadInlineImages, updatePost, router]) + + const onSaveClick = React.useCallback( + (e: React.MouseEvent) => { + e.preventDefault() + savePost() + }, + [savePost], + ) return ( @@ -225,8 +227,32 @@ const EditPostPage: NextPage = () => { ) } -EditPostPage.getInitialProps = async () => ({ - namespacesRequired: ['common', 'post'], -}) +EditPostPage.getInitialProps = async (ctx) => { + const props = await journalyMiddleware(ctx, async (apolloClient) => { + const idStr = ctx.query.id as string + const id = parseInt(idStr, 10) + + await apolloClient.query({ + query: PostPageDocument, + variables: { + id, + uiLanguage: getUiLanguage(ctx), + }, + }) + + await apolloClient.query({ + query: EditPostDocument, + variables: { + id, + uiLanguage: getUiLanguage(ctx), + }, + }) + }) + + return { + ...props, + namespacesRequired: ['common', 'post'], + } +} -export default withApollo(EditPostPage) +export default EditPostPage diff --git a/packages/web/pages/post/[id]/index.tsx b/packages/web/pages/post/[id]/index.tsx index d2144bb2..10993c6d 100644 --- a/packages/web/pages/post/[id]/index.tsx +++ b/packages/web/pages/post/[id]/index.tsx @@ -78,12 +78,6 @@ PostPage.getInitialProps = async (ctx) => { const idStr = ctx.query.id as string const id = parseInt(idStr, 10) - // const uiLanguage = useUILanguage() - - // const { i18n: { language } } = React.useContext(I18nContext) - - // return langCodeToUILangMap[language] || UILanguage.English - await apolloClient.query({ query: PostPageDocument, variables: { diff --git a/packages/web/pages/post/private/[id]/index.tsx b/packages/web/pages/post/private/[id]/index.tsx index d47a8271..02107402 100644 --- a/packages/web/pages/post/private/[id]/index.tsx +++ b/packages/web/pages/post/private/[id]/index.tsx @@ -2,15 +2,16 @@ import React from 'react' import { NextPage } from 'next' import { useRouter } from 'next/router' -import { withApollo } from '@/lib/apollo' import Post from '@/components/Dashboard/Post' import LoadingWrapper from '@/components/LoadingWrapper' import DashboardLayout from '@/components/Layouts/DashboardLayout' -import { usePrivatePostPageQuery } from '@/generated/graphql' +import { PostPageDocument, usePrivatePostPageQuery } from '@/generated/graphql' import PostAuthorCard from '@/components/Dashboard/Post/PostAuthorCard' import PostComments from '@/components/Dashboard/Post/PostComments' import useUILanguage from '@/hooks/useUILanguage' import theme from '@/theme' +import { journalyMiddleware } from '@/lib/journalyMiddleware' +import { getUiLanguage } from '@/utils/getUiLanguage' const PostPage: NextPage = () => { const privateShareId = useRouter().query.id as string @@ -66,8 +67,24 @@ const PostPage: NextPage = () => { ) } -PostPage.getInitialProps = async () => ({ - namespacesRequired: ['common', 'post', 'comment', 'post-author-card'], -}) +PostPage.getInitialProps = async (ctx) => { + const props = await journalyMiddleware(ctx, async (apolloClient) => { + const idStr = ctx.query.id as string + const id = parseInt(idStr, 10) -export default withApollo(PostPage) + await apolloClient.query({ + query: PostPageDocument, + variables: { + id, + uiLanguage: getUiLanguage(ctx), + }, + }) + }) + + return { + ...props, + namespacesRequired: ['common', 'post', 'comment', 'post-author-card'], + } +} + +export default PostPage