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 1441653c9c..8c1639e941 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 3c75b2973c..3e9fe2ea00 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 e7b954a576..be77f0967b 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
}