From e1e1f716a5eb564f016dc0ce877e5f37a834bd1f Mon Sep 17 00:00:00 2001 From: Frederic Beaudoin Date: Mon, 10 Feb 2025 08:30:57 -0500 Subject: [PATCH] fix(headless commerce): handle action dispatched by renew access token middleware in commerce configuration slice (#4947) https://coveord.atlassian.net/browse/KIT-3949 This is most likely what's causing issues in projects migrating from v2 to v3 that have a renewAccessToken function. --- .../configuration/configuration-slice.test.ts | 41 ++++++++++++++++++- .../configuration/configuration-slice.ts | 7 +++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/packages/headless/src/features/commerce/configuration/configuration-slice.test.ts b/packages/headless/src/features/commerce/configuration/configuration-slice.test.ts index 648563ed22f..7e41261ddfe 100644 --- a/packages/headless/src/features/commerce/configuration/configuration-slice.test.ts +++ b/packages/headless/src/features/commerce/configuration/configuration-slice.test.ts @@ -1,8 +1,9 @@ +import {updateBasicConfiguration} from '../../configuration/configuration-actions.js'; import { disableAnalytics, enableAnalytics, updateAnalyticsConfiguration, - updateBasicConfiguration, + updateBasicConfiguration as updateBasicCommerceConfiguration, updateProxyBaseUrl, } from './configuration-actions.js'; import {configurationReducer} from './configuration-slice.js'; @@ -65,6 +66,44 @@ describe('commerce configuration slice', () => { }); }); + describe('updateBasicCommerceConfiguration', () => { + it('works on initial state', () => { + expect( + configurationReducer( + undefined, + updateBasicCommerceConfiguration({ + accessToken: 'my-new-access-token', + environment: 'hipaa', + organizationId: 'my-new-org-id', + }) + ) + ).toEqual({ + ...getConfigurationInitialState(), + accessToken: 'my-new-access-token', + environment: 'hipaa', + organizationId: 'my-new-org-id', + }); + }); + + it('works on an existing state', () => { + expect( + configurationReducer( + existingState, + updateBasicCommerceConfiguration({ + accessToken: 'my-new-access-token', + environment: 'hipaa', + organizationId: 'my-new-org-id', + }) + ) + ).toEqual({ + ...existingState, + accessToken: 'my-new-access-token', + environment: 'hipaa', + organizationId: 'my-new-org-id', + }); + }); + }); + describe('updateProxBaseUrl', () => { it('works on initial state', () => { expect( diff --git a/packages/headless/src/features/commerce/configuration/configuration-slice.ts b/packages/headless/src/features/commerce/configuration/configuration-slice.ts index 259adf58597..6585ea62c94 100644 --- a/packages/headless/src/features/commerce/configuration/configuration-slice.ts +++ b/packages/headless/src/features/commerce/configuration/configuration-slice.ts @@ -1,11 +1,12 @@ import {isNullOrUndefined} from '@coveo/bueno'; import {createReducer} from '@reduxjs/toolkit'; +import {updateBasicConfiguration} from '../../configuration/configuration-actions.js'; import { disableAnalytics, enableAnalytics, updateAnalyticsConfiguration, UpdateAnalyticsConfigurationPayload, - updateBasicConfiguration, + updateBasicConfiguration as updateBasicCommerceConfiguration, UpdateBasicConfigurationPayload, updateProxyBaseUrl, UpdateProxyBaseUrlPayload, @@ -19,6 +20,10 @@ export const configurationReducer = createReducer( getConfigurationInitialState(), (builder) => builder + .addCase(updateBasicCommerceConfiguration, (state, action) => { + handleUpdateBasicConfiguration(state, action.payload); + }) + // This is to handle the renew access token middleware .addCase(updateBasicConfiguration, (state, action) => { handleUpdateBasicConfiguration(state, action.payload); })