diff --git a/apps/jurumarble/src/app/main/containers/HydratedHotDrinkContainer.tsx b/apps/jurumarble/src/app/main/containers/HydratedHotDrinkContainer.tsx new file mode 100644 index 00000000..6a5f69ac --- /dev/null +++ b/apps/jurumarble/src/app/main/containers/HydratedHotDrinkContainer.tsx @@ -0,0 +1,17 @@ +import { dehydrate } from "@tanstack/query-core"; +import { getHotDrinkList } from "lib/apis/vote/getHotDrinkList"; +import getQueryClient from "src/modules/getQueryClient"; +import HydrateOnClient from "src/modules/hydrateOnClient"; +import HotDrinkContainer from "../components/HotDrinkContainer"; +import { hotDrinkListQueryKey } from "../services/queryKey"; + +export const HydratedHotDrinkContainer = async () => { + const qc = getQueryClient(); + await qc.prefetchQuery([hotDrinkListQueryKey], getHotDrinkList); + const dehydratedState = dehydrate(qc); + return ( + + + + ); +}; diff --git a/apps/jurumarble/src/app/main/services/queryKey.ts b/apps/jurumarble/src/app/main/services/queryKey.ts index b141f098..24c5e757 100644 --- a/apps/jurumarble/src/app/main/services/queryKey.ts +++ b/apps/jurumarble/src/app/main/services/queryKey.ts @@ -1 +1,2 @@ export const hotDrinkVoteQueryKey = "hotDrinkVote"; +export const hotDrinkListQueryKey = "searchDrinkList"; diff --git a/apps/jurumarble/src/app/main/services/useGetHotDrinkListService.ts b/apps/jurumarble/src/app/main/services/useGetHotDrinkListService.ts index 090aa9b7..087dbddf 100644 --- a/apps/jurumarble/src/app/main/services/useGetHotDrinkListService.ts +++ b/apps/jurumarble/src/app/main/services/useGetHotDrinkListService.ts @@ -1,11 +1,10 @@ import { useQuery } from "@tanstack/react-query"; import { getHotDrinkList } from "lib/apis/drink"; import { queryKeys } from "lib/queryKeys"; - -const getQueryKey = () => [queryKeys.SEARCH_DRINK_LIST]; +import { hotDrinkListQueryKey } from "./queryKey"; export default function useGetHotDrinkListService() { - const { data } = useQuery(getQueryKey(), getHotDrinkList); + const { data } = useQuery([hotDrinkListQueryKey], getHotDrinkList); return { data }; } diff --git a/apps/jurumarble/src/app/page.tsx b/apps/jurumarble/src/app/page.tsx index 165c3c7d..57d1c69c 100644 --- a/apps/jurumarble/src/app/page.tsx +++ b/apps/jurumarble/src/app/page.tsx @@ -4,6 +4,7 @@ import dynamic from "next/dynamic"; import { getClassNames } from "lib/styles/getClassNames"; import styles from "./page.module.css"; import { HydratedDrinkVoteContainer } from "./main/containers/HydratedDrinkVoteContainer"; +import { HydratedHotDrinkContainer } from "./main/containers/HydratedHotDrinkContainer"; const DynamicHotDrinkContainer = dynamic(() => import("./main/components/HotDrinkContainer"), { ssr: false, @@ -34,7 +35,8 @@ function MainPage() {
- + {/* @ts-expect-error Server Component */} +
diff --git a/apps/jurumarble/src/lib/apis/vote/getHotDrinkList.ts b/apps/jurumarble/src/lib/apis/vote/getHotDrinkList.ts new file mode 100644 index 00000000..71235d2f --- /dev/null +++ b/apps/jurumarble/src/lib/apis/vote/getHotDrinkList.ts @@ -0,0 +1,13 @@ +import { SERVER_URL } from "lib/env"; + +export interface GetHotDrinkResponse { + drinkId: number; + name: string; + manufactureAddress: string; + image: string; +} +export const getHotDrinkList = async () => { + const res = await fetch(`${SERVER_URL}api/drinks/hot`); + const data = await res.json(); + return data as GetHotDrinkResponse[]; +};