From a9f2a0832f774d534658a7497bf6f8e4655d2331 Mon Sep 17 00:00:00 2001 From: Robin MacPherson Date: Thu, 27 Jun 2024 18:25:19 +0100 Subject: [PATCH] Handle most of the remaining pages --- packages/web/pages/settings/account.tsx | 22 ++++++++++--- packages/web/pages/settings/profile.tsx | 33 ++++++++++++++++---- packages/web/pages/settings/subscription.tsx | 29 +++++++++++++---- packages/web/pages/settings/tutorials.tsx | 19 ++++++++--- packages/web/pages/user/[handle]/index.tsx | 29 ++++++++++++++--- 5 files changed, 107 insertions(+), 25 deletions(-) diff --git a/packages/web/pages/settings/account.tsx b/packages/web/pages/settings/account.tsx index 95049d12..20e0fc4e 100644 --- a/packages/web/pages/settings/account.tsx +++ b/packages/web/pages/settings/account.tsx @@ -8,7 +8,9 @@ import LoadingSpinner from '@/components/Icons/LoadingSpinner' import UpdatePasswordForm from '@/components/Dashboard/Settings/UpdatePasswordForm' import NotificationSettingsForm from '@/components/Dashboard/Settings/NotificationSettingsForm' import UILanguageForm from '@/components/Dashboard/Settings/UILanguageForm' -import { useSettingsFormDataQuery } from '@/generated/graphql' +import { SettingsFormDataDocument, useSettingsFormDataQuery } from '@/generated/graphql' +import { journalyMiddleware } from '@/lib/journalyMiddleware' +import { getUiLanguage } from '@/utils/getUiLanguage' const Account: NextPage = () => { const uiLanguage = useUILanguage() @@ -56,8 +58,20 @@ const Account: NextPage = () => { ) } -Account.getInitialProps = async () => ({ - namespacesRequired: ['common', 'settings'], -}) +Account.getInitialProps = async (ctx) => { + const props = await journalyMiddleware(ctx, async (apolloClient) => { + await apolloClient.query({ + query: SettingsFormDataDocument, + variables: { + uiLanguage: getUiLanguage(ctx), + }, + }) + }) + + return { + ...props, + namespacesRequired: ['common', 'settings'], + } +} export default withApollo(Account) diff --git a/packages/web/pages/settings/profile.tsx b/packages/web/pages/settings/profile.tsx index ced46377..9d78af3f 100644 --- a/packages/web/pages/settings/profile.tsx +++ b/packages/web/pages/settings/profile.tsx @@ -1,6 +1,5 @@ import React from 'react' import { NextPage } from 'next' -import { withApollo } from '@/lib/apollo' import useUILanguage from '@/hooks/useUILanguage' import SettingsPageLayout from '@/components/Layouts/SettingsPageLayout' import LoadingSpinner from '@/components/Icons/LoadingSpinner' @@ -10,7 +9,13 @@ import BioForm from '@/components/Dashboard/Settings/BioForm' import InterestsForm from '@/components/Dashboard/Settings/InterestsForm' import SocialForm from '@/components/Dashboard/Settings/SocialForm' import AuthGate from '@/components/AuthGate' -import { useSettingsFormDataQuery } from '@/generated/graphql' +import { + CurrentUserDocument, + SettingsFormDataDocument, + useSettingsFormDataQuery, +} from '@/generated/graphql' +import { journalyMiddleware } from '@/lib/journalyMiddleware' +import { getUiLanguage } from '@/utils/getUiLanguage' const ProfileInfo: NextPage = () => { const uiLanguage = useUILanguage() @@ -67,8 +72,24 @@ const ProfileInfo: NextPage = () => { ) } -ProfileInfo.getInitialProps = async () => ({ - namespacesRequired: ['settings', 'common', 'badge'], -}) +ProfileInfo.getInitialProps = async (ctx) => { + const props = await journalyMiddleware(ctx, async (apolloClient) => { + await apolloClient.query({ + query: SettingsFormDataDocument, + variables: { + uiLanguage: getUiLanguage(ctx), + }, + }) -export default withApollo(ProfileInfo) + await apolloClient.query({ + query: CurrentUserDocument, + }) + }) + + return { + ...props, + namespacesRequired: ['common', 'settings', 'badge'], + } +} + +export default ProfileInfo diff --git a/packages/web/pages/settings/subscription.tsx b/packages/web/pages/settings/subscription.tsx index e2ab9f6a..2cac2851 100644 --- a/packages/web/pages/settings/subscription.tsx +++ b/packages/web/pages/settings/subscription.tsx @@ -1,11 +1,15 @@ import React from 'react' import { NextPage } from 'next' -import { withApollo } from '@/lib/apollo' import SettingsPageLayout from '@/components/Layouts/SettingsPageLayout' import AuthGate from '@/components/AuthGate' import SubscriptionForm from '@/components/Dashboard/Settings/Subscription/SubscriptionForm' -import { useSubscriptionSettingsPageQuery } from '@/generated/graphql' +import { + CurrentUserDocument, + SubscriptionSettingsPageDocument, + useSubscriptionSettingsPageQuery, +} from '@/generated/graphql' import theme from '@/theme' +import { journalyMiddleware } from '@/lib/journalyMiddleware' const Subscription: NextPage = () => { const { loading, data, refetch: refetchUser } = useSubscriptionSettingsPageQuery() @@ -36,8 +40,21 @@ const Subscription: NextPage = () => { ) } -Subscription.getInitialProps = async () => ({ - namespacesRequired: ['common', 'settings', 'marketing'], -}) +Subscription.getInitialProps = async (ctx) => { + const props = await journalyMiddleware(ctx, async (apolloClient) => { + await apolloClient.query({ + query: SubscriptionSettingsPageDocument, + }) -export default withApollo(Subscription) + await apolloClient.query({ + query: CurrentUserDocument, + }) + }) + + return { + ...props, + namespacesRequired: ['common', 'settings', 'marketing'], + } +} + +export default Subscription diff --git a/packages/web/pages/settings/tutorials.tsx b/packages/web/pages/settings/tutorials.tsx index 961092c5..bb2b2f6f 100644 --- a/packages/web/pages/settings/tutorials.tsx +++ b/packages/web/pages/settings/tutorials.tsx @@ -4,6 +4,8 @@ import { withApollo } from '@/lib/apollo' import SettingsPageLayout from '@/components/Layouts/SettingsPageLayout' import AuthGate from '@/components/AuthGate' import theme from '@/theme' +import { journalyMiddleware } from '@/lib/journalyMiddleware' +import { CurrentUserDocument } from '@/generated/graphql' const Tutorials: NextPage = () => { return ( @@ -247,8 +249,17 @@ const Tutorials: NextPage = () => { ) } -Tutorials.getInitialProps = async () => ({ - namespacesRequired: ['common', 'tutorials'], -}) +Tutorials.getInitialProps = async (ctx) => { + const props = await journalyMiddleware(ctx, async (apolloClient) => { + await apolloClient.query({ + query: CurrentUserDocument, + }) + }) -export default withApollo(Tutorials) + return { + ...props, + namespacesRequired: ['common', 'tutorials'], + } +} + +export default Tutorials diff --git a/packages/web/pages/user/[handle]/index.tsx b/packages/web/pages/user/[handle]/index.tsx index 7eb58921..7c97ff87 100644 --- a/packages/web/pages/user/[handle]/index.tsx +++ b/packages/web/pages/user/[handle]/index.tsx @@ -5,9 +5,10 @@ import { useRouter } from 'next/router' import { withApollo } from '@/lib/apollo' import LoadingWrapper from '@/components/LoadingWrapper' import DashboardLayout from '@/components/Layouts/DashboardLayout' -import { useProfilePageQuery } from '@/generated/graphql' +import { ProfilePageDocument, UiLanguage, useProfilePageQuery } from '@/generated/graphql' import useUILanguage from '@/hooks/useUILanguage' import Profile from '@/components/Dashboard/Profile' +import { journalyMiddleware } from '@/lib/journalyMiddleware' interface InitialProps { namespacesRequired: string[] @@ -40,8 +41,26 @@ const ProfilePage: NextPage = () => { ) } -ProfilePage.getInitialProps = async () => ({ - namespacesRequired: ['common', 'profile', 'post'], -}) +ProfilePage.getInitialProps = async (ctx) => { + const props = await journalyMiddleware(ctx, async (apolloClient) => { + const userHandle = ctx.query.handle as string -export default withApollo(ProfilePage) + // const uiLanguage = useUILanguage() + // const { i18n: { language } } = React.useContext(I18nContext) + // return langCodeToUILangMap[language] || UILanguage.English + + await apolloClient.query({ + query: ProfilePageDocument, + variables: { + uiLanguage: UiLanguage.English, + userHandle, + }, + }) + }) + return { + ...props, + namespacesRequired: ['common', 'profile', 'post'], + } +} + +export default ProfilePage