From 20ddc9c48a4ebd2395f228e52ee8e9bff24bfb22 Mon Sep 17 00:00:00 2001 From: Joel Date: Thu, 2 Apr 2026 11:22:46 +0800 Subject: [PATCH] fix: url query change record cookie --- .../__tests__/cookie-recorder.spec.tsx | 18 ++++++++++++++++++ .../billing/partner-stack/cookie-recorder.tsx | 4 ++-- .../components/billing/partner-stack/index.tsx | 4 ++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/web/app/components/billing/partner-stack/__tests__/cookie-recorder.spec.tsx b/web/app/components/billing/partner-stack/__tests__/cookie-recorder.spec.tsx index 1441653c9ce..8c1639e941b 100644 --- a/web/app/components/billing/partner-stack/__tests__/cookie-recorder.spec.tsx +++ b/web/app/components/billing/partner-stack/__tests__/cookie-recorder.spec.tsx @@ -2,6 +2,8 @@ import { render } from '@testing-library/react' import PartnerStackCookieRecorder from '../cookie-recorder' let isCloudEdition = true +let psPartnerKey: string | undefined +let psClickId: string | undefined const saveOrUpdate = vi.fn() @@ -13,6 +15,8 @@ vi.mock('@/config', () => ({ vi.mock('../use-ps-info', () => ({ default: () => ({ + psPartnerKey, + psClickId, saveOrUpdate, }), })) @@ -21,6 +25,8 @@ describe('PartnerStackCookieRecorder', () => { beforeEach(() => { vi.clearAllMocks() isCloudEdition = true + psPartnerKey = undefined + psClickId = undefined }) it('should call saveOrUpdate once on mount when running in cloud edition', () => { @@ -42,4 +48,16 @@ describe('PartnerStackCookieRecorder', () => { expect(container.innerHTML).toBe('') }) + + it('should call saveOrUpdate again when partner stack query changes', () => { + const { rerender } = render() + + expect(saveOrUpdate).toHaveBeenCalledTimes(1) + + psPartnerKey = 'updated-partner' + psClickId = 'updated-click' + rerender() + + expect(saveOrUpdate).toHaveBeenCalledTimes(2) + }) }) diff --git a/web/app/components/billing/partner-stack/cookie-recorder.tsx b/web/app/components/billing/partner-stack/cookie-recorder.tsx index 3c75b2973c6..3e9fe2ea00a 100644 --- a/web/app/components/billing/partner-stack/cookie-recorder.tsx +++ b/web/app/components/billing/partner-stack/cookie-recorder.tsx @@ -5,13 +5,13 @@ import { IS_CLOUD_EDITION } from '@/config' import usePSInfo from './use-ps-info' const PartnerStackCookieRecorder = () => { - const { saveOrUpdate } = usePSInfo() + const { psPartnerKey, psClickId, saveOrUpdate } = usePSInfo() useEffect(() => { if (!IS_CLOUD_EDITION) return saveOrUpdate() - }, []) + }, [psPartnerKey, psClickId, saveOrUpdate]) return null } diff --git a/web/app/components/billing/partner-stack/index.tsx b/web/app/components/billing/partner-stack/index.tsx index e7b954a5767..be77f0967b9 100644 --- a/web/app/components/billing/partner-stack/index.tsx +++ b/web/app/components/billing/partner-stack/index.tsx @@ -6,7 +6,7 @@ import { IS_CLOUD_EDITION } from '@/config' import usePSInfo from './use-ps-info' const PartnerStack: FC = () => { - const { saveOrUpdate, bind } = usePSInfo() + const { psPartnerKey, psClickId, saveOrUpdate, bind } = usePSInfo() useEffect(() => { if (!IS_CLOUD_EDITION) return @@ -14,7 +14,7 @@ const PartnerStack: FC = () => { saveOrUpdate() // bind PartnerStack info after user logged in bind() - }, []) + }, [psPartnerKey, psClickId, saveOrUpdate, bind]) return null }