diff --git a/package.json b/package.json index 4e409a5..5b0cba3 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,6 @@ "@next/bundle-analyzer": "16.1.1", "@next/mdx": "16.1.1", "codehike": "1.0.7", - "cookie": "^1.1.1", "dayjs": "^1.11.19", "jotai": "^2.16.0", "lucide-react": "^0.562.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 505d6b5..272ce2e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,9 +33,6 @@ importers: codehike: specifier: 1.0.7 version: 1.0.7 - cookie: - specifier: ^1.1.1 - version: 1.1.1 dayjs: specifier: ^1.11.19 version: 1.11.19 @@ -1489,10 +1486,6 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie@1.1.1: - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} - engines: {node: '>=18'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -4709,8 +4702,6 @@ snapshots: convert-source-map@2.0.0: {} - cookie@1.1.1: {} - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 diff --git a/src/app/article/2024-10/check-target/tester.tsx b/src/app/article/2024-10/check-target/tester.tsx index 821cfed..b7a3eae 100644 --- a/src/app/article/2024-10/check-target/tester.tsx +++ b/src/app/article/2024-10/check-target/tester.tsx @@ -98,7 +98,7 @@ export const Tester: React.FC = () => { return (
-
+

립스틱 배너 조건 설정 (AND)

@@ -171,7 +171,10 @@ export const Tester: React.FC = () => { value={target.operator} onChange={(value) => { const newTargets = [...targets]; - newTargets[index] = { ...target, operator: value }; + newTargets[index] = { + ...target, + operator: value, + }; setTargets(newTargets); }} />{" "} @@ -225,7 +228,7 @@ export const Tester: React.FC = () => {
{JSON.stringify(root, null, 2)}
-
+

방문자

diff --git a/src/app/set-locale/route.ts b/src/app/set-locale/route.ts deleted file mode 100644 index 659ccdc..0000000 --- a/src/app/set-locale/route.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { NextResponse } from "next/server"; -import { i18n, type Locale } from "@/modules/i18n/types"; - -export async function GET(req: Request) { - const { searchParams } = new URL(req.url); - const locale = searchParams.get("locale") as Locale | null; - const to = searchParams.get("to") || "/"; - - if (!locale || !(i18n.locales as readonly string[]).includes(locale)) { - return NextResponse.redirect(new URL(to, req.url)); - } - - const res = NextResponse.redirect(new URL(to, req.url)); - res.cookies.set("locale", locale, { - path: "/", - maxAge: 60 * 60 * 24 * 365, // 1y - sameSite: "lax", - }); - return res; -} diff --git a/src/modules/article/ArticleHeader.tsx b/src/modules/article/ArticleHeader.tsx index 982dbaf..bff1fd4 100644 --- a/src/modules/article/ArticleHeader.tsx +++ b/src/modules/article/ArticleHeader.tsx @@ -41,7 +41,7 @@ export default function ArticleHeader({ if (available.length >= 2) { languageLinks = available.map((l) => ({ locale: l, - href: `/set-locale?locale=${l}&to=/${l}/${slug}`, + href: `/${l}/${slug}`, })); } } catch { diff --git a/src/modules/i18n/useLocale.ts b/src/modules/i18n/useLocale.ts index 9fe4162..e935abe 100644 --- a/src/modules/i18n/useLocale.ts +++ b/src/modules/i18n/useLocale.ts @@ -2,24 +2,16 @@ import { i18n, type Locale } from "@/modules/i18n/types"; import { usePathname } from "next/navigation"; -import { getLocaleFromPathname, isLocale } from "./util"; -import * as cookie from "cookie"; - -function getLocaleFromCookie(): Locale | null { - if (typeof document === "undefined") { - return null; - } - - const cookies = cookie.parse(document.cookie); - const localeRaw = cookies.locale || ""; - return isLocale(localeRaw) ? localeRaw : null; -} +import { getLocaleFromPathname } from "./util"; +/** + * URL pathname 기반으로 locale을 결정합니다. + * - /ko/... 또는 /en/... 경로: 해당 locale 사용 + * - 그 외 모든 경로: 기본 locale(ko) 사용 + * + * 쿠키 기반 locale은 사용하지 않습니다. (일관성 유지) + */ export function useLocale(): Locale { const pathname = usePathname(); - const localeFromCooikie = getLocaleFromCookie(); - - return ( - getLocaleFromPathname(pathname) || localeFromCooikie || i18n.defaultLocale - ); + return getLocaleFromPathname(pathname) ?? i18n.defaultLocale; } diff --git a/src/proxy.ts b/src/proxy.ts index aba3700..74ab948 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -40,7 +40,6 @@ export default function proxy(req: NextRequest) { pathname.startsWith("/_next") || pathname.match(/\.[^/]+$/) || seg1 === "api" || - seg1 === "set-locale" || (i18n.locales as readonly string[]).includes(seg1) ) { return NextResponse.next();