From 6a645983f9ea407fe21e0efc153f4b747cc3fbce Mon Sep 17 00:00:00 2001 From: joel Date: Wed, 18 Dec 2024 14:07:12 -0800 Subject: [PATCH] sigh --- .../src/server/get-middleware-response.ts | 3 --- apps/epic-web/src/server/user-cookies.ts | 20 ++++++++++++++++++- .../src/server/user-cookies.ts | 20 ++++++++++++++++++- 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/apps/epic-web/src/server/get-middleware-response.ts b/apps/epic-web/src/server/get-middleware-response.ts index be9498ef6a..581be5f3cc 100644 --- a/apps/epic-web/src/server/get-middleware-response.ts +++ b/apps/epic-web/src/server/get-middleware-response.ts @@ -28,8 +28,5 @@ export async function getMiddlewareResponse(req: NextRequest) { } } - // Delete ck_subscriber cookie if it exists - response.cookies.delete('ck_subscriber') - return response } diff --git a/apps/epic-web/src/server/user-cookies.ts b/apps/epic-web/src/server/user-cookies.ts index 8d393031f7..12cbe2493f 100644 --- a/apps/epic-web/src/server/user-cookies.ts +++ b/apps/epic-web/src/server/user-cookies.ts @@ -3,7 +3,7 @@ import {Subscriber} from 'schemas/subscriber' export function setUserCookie(res: NextResponse, subscriber: Subscriber) { if (subscriber) { - res.cookies.set('ck_subscriber', JSON.stringify(subscriber), { + res.cookies.set('ck_subscriber', JSON.stringify(deepOmitNull(subscriber)), { secure: process.env.NODE_ENV === 'production', path: '/', httpOnly: true, @@ -18,3 +18,21 @@ export function setUserCookie(res: NextResponse, subscriber: Subscriber) { export function clearUserCookie(res: NextResponse) { res.cookies.delete('ck_subscriber') } + +function deepOmitNull(obj: any): any { + if (Array.isArray(obj)) { + return obj.map(deepOmitNull).filter((x) => x !== null) + } + + if (obj && typeof obj === 'object') { + return Object.entries(obj).reduce((acc, [key, value]) => { + const cleaned = deepOmitNull(value) + if (cleaned !== null) { + acc[key] = cleaned + } + return acc + }, {} as Record) + } + + return obj === null ? undefined : obj +} diff --git a/apps/total-typescript/src/server/user-cookies.ts b/apps/total-typescript/src/server/user-cookies.ts index c62f1ea4fc..c408137b3f 100644 --- a/apps/total-typescript/src/server/user-cookies.ts +++ b/apps/total-typescript/src/server/user-cookies.ts @@ -3,7 +3,7 @@ import {Subscriber} from '@skillrecordings/skill-lesson/schemas/subscriber' export function setUserCookie(res: NextResponse, subscriber: Subscriber) { if (subscriber) { - res.cookies.set('ck_subscriber', JSON.stringify(subscriber), { + res.cookies.set('ck_subscriber', JSON.stringify(deepOmitNull(subscriber)), { secure: process.env.NODE_ENV === 'production', path: '/', httpOnly: true, @@ -18,3 +18,21 @@ export function setUserCookie(res: NextResponse, subscriber: Subscriber) { export function clearUserCookie(res: NextResponse) { res.cookies.delete('ck_subscriber') } + +function deepOmitNull(obj: any): any { + if (Array.isArray(obj)) { + return obj.map(deepOmitNull).filter((x) => x !== null) + } + + if (obj && typeof obj === 'object') { + return Object.entries(obj).reduce((acc, [key, value]) => { + const cleaned = deepOmitNull(value) + if (cleaned !== null) { + acc[key] = cleaned + } + return acc + }, {} as Record) + } + + return obj === null ? undefined : obj +}