= props => {
|
@@ -107,8 +115,9 @@ const Page: NextPage = props => {
);
};
-export const getStaticProps: GetStaticProps = async context => {
+export const getServerSideProps: GetServerSideProps = async context => {
const apolloClient = initializeApollo();
+
await contentfulQuery(apolloClient, {
query: GET_LEGAL_PAGE,
variables: {
@@ -117,10 +126,13 @@ export const getStaticProps: GetStaticProps = async context => {
},
});
- return addApolloState(apolloClient, {
+ return addApolloState(apolloClient, {
props: {
...(await serverSideTranslations(context.locale)),
+ session: await getSession(context),
+ providers: await getProviders(),
locale: context.locale,
+ consent: getServerSideCookieConsent(context),
},
});
};
diff --git a/src/templates/wishlist/index.tsx b/src/templates/wishlist/index.tsx
index c25b7f1a..b6bfb348 100644
--- a/src/templates/wishlist/index.tsx
+++ b/src/templates/wishlist/index.tsx
@@ -1,12 +1,12 @@
import { StyledButton } from "@/atoms/button/styled";
import Typography from "@/atoms/typography";
import Layout from "@/groups/layout";
-import { AddWishModalProvider, useAddWishModal } from "@/ions/contexts/add-wish-modal";
import { RawBreadcrumb } from "@/ions/contexts/breadcrumbs/types";
-import { SigninModalProvider, useSigninModal } from "@/ions/contexts/signin-modal";
-import { WishProvider } from "@/ions/contexts/wish";
-import { useWishlist, WishlistProvider } from "@/ions/contexts/wishlist";
import { useScrollY } from "@/ions/hooks/scroll-y";
+import { useError } from "@/ions/stores/error";
+import { useSigninModal } from "@/ions/stores/modal/signin";
+import { useAddWishModal } from "@/ions/stores/modal/wish";
+import { useWish } from "@/ions/stores/wish";
import { pxToRem } from "@/ions/utils/unit";
import { Column, Grid, Row } from "@/molecules/grid";
import Breadcrumbs from "@/organisms/breadcrumbs";
@@ -16,7 +16,7 @@ import { css, Global } from "@emotion/react";
import { useSession } from "next-auth/client";
import { useTranslation } from "next-i18next";
import dynamic from "next/dynamic";
-import React, { FC, memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
+import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
import { StyledButtonWrapper, StyledWishWrapper } from "./styled";
const Snackbar = dynamic(async () => import("@/molecules/snackbar"));
@@ -27,11 +27,17 @@ export interface WishlistProps {
data: { wishes: Wish[] };
}
-const Wishlist = () => {
+const Wishlist = ({ data: { wishes } }: WishlistProps) => {
const [session] = useSession();
- const { wishes, error, setError } = useWishlist();
- const { open: openAddWishModal, isOpen: isAddWishModalOpen } = useAddWishModal();
- const { open: openSigninModal, isOpen: isSigninModalOpen } = useSigninModal();
+ const setError = useError(state => state.setError);
+ const error = useError(state => state.error);
+ const isAddWishModalOpen = useAddWishModal(state => state.isOpen);
+ const openAddWishModal = useAddWishModal(state => state.open);
+ const isSigninModalOpen = useSigninModal(state => state.isOpen);
+ const openSigninModal = useSigninModal(state => state.open);
+ const setId = useWish(state => state.setId);
+ const setBody = useWish(state => state.setBody);
+ const setSubject = useWish(state => state.setSubject);
const scrollY = useScrollY(true);
const { t } = useTranslation(["navigation", "common", "wishlist", "meta"]);
const breadcrumbs: RawBreadcrumb[] = useMemo(
@@ -92,6 +98,9 @@ const Wishlist = () => {
primary
type="button"
onClick={() => {
+ setId();
+ setBody();
+ setSubject();
openAddWishModal();
}}
>
@@ -130,20 +139,4 @@ const Wishlist = () => {
);
};
-const MemoizedWishlist = memo(Wishlist);
-
-const StatefulWishlist: FC = ({ data }) => {
- return (
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default StatefulWishlist;
+export default memo(Wishlist);
diff --git a/src/types/index.ts b/src/types/index.ts
index 17dcd96a..624eac25 100644
--- a/src/types/index.ts
+++ b/src/types/index.ts
@@ -2,6 +2,7 @@ import { APOLLO_STATE_PROP_NAME } from "@/ions/constants";
import { NormalizedCacheObject } from "@apollo/client";
import { Session } from "next-auth";
import { ClientSafeProvider } from "next-auth/client";
+import { AppProps as NextAppProps } from "next/app";
import { CookieConsent } from "use-cookie-consent";
export interface SigninFormProps {
@@ -30,3 +31,7 @@ export interface StaticPageProps {
locale: string;
[APOLLO_STATE_PROP_NAME]?: NormalizedCacheObject;
}
+
+export interface AppProps extends NextAppProps {
+ pageProps: PageProps;
+}
diff --git a/yarn.lock b/yarn.lock
index 43cb7347..66eef3d4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -12592,6 +12592,11 @@ zen-observable@0.8.15, zen-observable@^0.8.0:
resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15"
integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==
+zustand@3.5.10:
+ version "3.5.10"
+ resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.5.10.tgz#d2622efd64530ffda285ee5b13ff645b68ab0faf"
+ integrity sha512-upluvSRWrlCiExu2UbkuMIPJ9AigyjRFoO7O9eUossIj7rPPq7pcJ0NKk6t2P7KF80tg/UdPX6/pNKOSbs9DEg==
+
zwitch@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"