diff --git a/src/page/wedding/WeddingPage.tsx b/src/page/wedding/WeddingPage.tsx index e0a3604..701a4d6 100644 --- a/src/page/wedding/WeddingPage.tsx +++ b/src/page/wedding/WeddingPage.tsx @@ -4,6 +4,8 @@ import weddingApi from "@remote/api/WeddingApi"; import {useParams} from "react-router-dom"; import {Row} from "@designsystem/component/flexLayout"; import TemplateComponent from "@src/component/template/TemplateComponent"; +import {getDeviceType} from "@remote/enumeration/Device"; +import Cookies from "js-cookie"; function WeddingPage() { const {url} = useParams(); @@ -12,8 +14,19 @@ function WeddingPage() { useEffect(() => { if (!url) return; + const cookieKey = `firstVisitor_${url}`; + + const isFirstVisitor = !Cookies.get(cookieKey); + + if (isFirstVisitor) { + Cookies.set(cookieKey, "false", { expires: 365 }); // 1년 동안 유지 + } + (async () => { - const {data} = await weddingApi.getWedding(url); + const {data} = await weddingApi.getWeddingInvitation(url, { + deviceType: getDeviceType(), + firstVisitor: isFirstVisitor + }); setWedding(data); })(); }, []); diff --git a/src/remote/enumeration/Device.ts b/src/remote/enumeration/Device.ts index 5f3979d..92d2cd2 100644 --- a/src/remote/enumeration/Device.ts +++ b/src/remote/enumeration/Device.ts @@ -3,4 +3,12 @@ enum Device { DESKTOP = 'DESKTOP', } +export function getDeviceType(): Device { + const userAgent = navigator.userAgent.toLowerCase(); + if (/mobile|android|iphone|ipad|ipod|blackberry|iemobile|opera mini/.test(userAgent)) { + return Device.MOBILE; + } + return Device.DESKTOP; +} + export default Device; \ No newline at end of file