Skip to content

Commit 60cbc3f

Browse files
chore(sdk): Updated urlContentMap response inside JS client SDK (#32939)
https://github.com/user-attachments/assets/7dfc7d01-8b3c-45d7-a560-338aecdd2263 This change merge graphql responses in urlContentMap inside one `_map` response. Check the video for more context This PR fixes: #32862 --------- Co-authored-by: Kevin <[email protected]>
1 parent f345901 commit 60cbc3f

File tree

3 files changed

+43
-9
lines changed

3 files changed

+43
-9
lines changed

core-web/libs/sdk/analytics/src/lib/react/components/DotContentAnalyticsProvider.spec.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import { render } from '@testing-library/react';
44
import { DotContentAnalyticsProvider } from './DotContentAnalyticsProvider';
55

66
import { initializeContentAnalytics } from '../../dotAnalytics/dot-content-analytics';
7-
import { DotContentAnalyticsConfig } from '../../dotAnalytics/shared/dot-content-analytics.model';
7+
import { DotCMSAnalyticsConfig } from '../../dotAnalytics/shared/dot-content-analytics.model';
88
import * as RouterTrackerHook from '../hook/useRouterTracker';
99

1010
// Mock dependencies
1111
jest.mock('../../dotAnalytics/dot-content-analytics');
1212
jest.mock('../hook/useRouterTracker');
1313

1414
describe('DotContentAnalyticsProvider', () => {
15-
const mockConfig: DotContentAnalyticsConfig = {
15+
const mockConfig: DotCMSAnalyticsConfig = {
1616
siteKey: 'test-key',
1717
server: 'test-server',
1818
debug: false

core-web/libs/sdk/client/src/lib/utils/graphql/transforms.spec.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,4 +247,29 @@ describe('GraphQL Parser', () => {
247247
expectedResult.containers['//test/container/'].contentlets['test-uuid'][0]
248248
);
249249
});
250+
251+
it('should merge urlContentMap keys into _map', () => {
252+
const graphqlResponse = {
253+
...GRAPHQL_RESPONSE_MOCK,
254+
page: {
255+
...GRAPHQL_RESPONSE_MOCK.page,
256+
urlContentMap: {
257+
_map: {
258+
customField: 'custom value',
259+
someOtherField: 'empty'
260+
},
261+
someOtherField: 'some other value by relationship'
262+
}
263+
}
264+
};
265+
266+
const pageEntity = graphqlToPageEntity(
267+
graphqlResponse as unknown as DotCMSGraphQLPageResponse
268+
);
269+
270+
expect(pageEntity?.urlContentMap).toEqual({
271+
customField: 'custom value',
272+
someOtherField: 'some other value by relationship'
273+
});
274+
});
250275
});

core-web/libs/sdk/client/src/lib/utils/graphql/transforms.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import {
88
DotCMSPageContainerContentlets,
99
DotCMSPage,
1010
DotCMSPageAsset,
11-
DotCMSContainer
11+
DotCMSContainer,
12+
DotCMSURLContentMap
1213
} from '@dotcms/types';
1314

1415
/**
@@ -48,11 +49,19 @@ export const graphqlToPageEntity = (
4849

4950
const typedPageAsset = pageAsset as unknown as DotCMSPage;
5051

51-
// To prevent type errors, we cast the urlContentMap to an object
52-
const urlContentMapObject = urlContentMap;
53-
54-
// Extract the _map data from the urlContentMap object
55-
const urlContentMapData = urlContentMapObject?.['_map'];
52+
// Merge all urlContentMap keys into _map, except _map itself
53+
const mergedUrlContentMap = {
54+
...(urlContentMap?._map || {}),
55+
...Object.entries(urlContentMap || {}).reduce<Record<string, unknown>>(
56+
(acc, [key, value]) => {
57+
if (key !== '_map') {
58+
acc[key] = value;
59+
}
60+
return acc;
61+
},
62+
{}
63+
)
64+
} as DotCMSURLContentMap;
5665

5766
return {
5867
layout,
@@ -61,7 +70,7 @@ export const graphqlToPageEntity = (
6170
vanityUrl,
6271
runningExperimentId,
6372
site: host,
64-
urlContentMap: urlContentMapData,
73+
urlContentMap: mergedUrlContentMap,
6574
containers: parseContainers(containers as []),
6675
page: {
6776
...data,

0 commit comments

Comments
 (0)