feat(live-preview): expose requestHandler to subscribe.ts (#10947)
### What? As described in https://github.com/payloadcms/payload/discussions/10946, allow passing a custom `collectionPopulationRequestHandler` function to `subscribe`, which passes it along to `handleMessage` and `mergeData` ### Why? `mergeData` already supports a custom function for this, that functionality however isn't exposed. My use case so far was passing along custom Authorization headers. ### How? Move the functions type defined in `mergeData` to a dedicated `CollectionPopulationRequestHandler` type, reuse it across `subscribe`, `handleMessage` and `mergeData`. --------- Co-authored-by: Jacob Fletcher <jacobsfletch@gmail.com>
This commit is contained in:
@@ -13,9 +13,9 @@ import { fileURLToPath } from 'url'
|
||||
|
||||
import type { NextRESTClient } from '../helpers/NextRESTClient.js'
|
||||
import type { Media, Page, Post, Tenant } from './payload-types.js'
|
||||
import config from './config.js'
|
||||
|
||||
import { Pages } from './collections/Pages.js'
|
||||
import config from './config.js'
|
||||
import { postsSlug, tenantsSlug } from './shared.js'
|
||||
|
||||
const filename = fileURLToPath(import.meta.url)
|
||||
@@ -28,7 +28,7 @@ let restClient: NextRESTClient
|
||||
|
||||
import { initPayloadInt } from '../helpers/initPayloadInt.js'
|
||||
|
||||
function collectionPopulationRequestHandler({ endpoint }: { endpoint: string }) {
|
||||
function requestHandler({ endpoint }: { endpoint: string }) {
|
||||
return restClient.GET(`/${endpoint}`)
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(mergedData.title).toEqual('Test Page (Changed)')
|
||||
@@ -198,7 +198,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(mergedData.arrayOfRelationships).toEqual([])
|
||||
@@ -217,7 +217,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(mergedData2.arrayOfRelationships).toEqual([])
|
||||
@@ -243,7 +243,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(mergedData.hero.media).toMatchObject(media)
|
||||
@@ -262,7 +262,7 @@ describe('Collections - Live Preview', () => {
|
||||
},
|
||||
initialData: mergedData,
|
||||
serverURL,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(mergedDataWithoutUpload.hero.media).toBeFalsy()
|
||||
@@ -290,7 +290,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1.richTextSlate).toHaveLength(1)
|
||||
@@ -317,7 +317,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge2.richTextSlate).toHaveLength(1)
|
||||
@@ -377,7 +377,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1.richTextLexical.root.children).toHaveLength(2)
|
||||
@@ -423,7 +423,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge2.richTextLexical.root.children).toHaveLength(1)
|
||||
@@ -446,7 +446,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1._numberOfRequests).toEqual(1)
|
||||
@@ -468,7 +468,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1._numberOfRequests).toEqual(1)
|
||||
@@ -490,7 +490,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1._numberOfRequests).toEqual(1)
|
||||
@@ -515,7 +515,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1._numberOfRequests).toEqual(1)
|
||||
@@ -545,7 +545,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge2._numberOfRequests).toEqual(0)
|
||||
@@ -571,7 +571,7 @@ describe('Collections - Live Preview', () => {
|
||||
},
|
||||
initialData,
|
||||
serverURL,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1.tab.relationshipInTab).toMatchObject(testPost)
|
||||
@@ -608,7 +608,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1._numberOfRequests).toEqual(1)
|
||||
@@ -665,7 +665,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData: merge1,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge2._numberOfRequests).toEqual(1)
|
||||
@@ -741,7 +741,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1._numberOfRequests).toEqual(2)
|
||||
@@ -804,7 +804,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData: merge1,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge2._numberOfRequests).toEqual(1)
|
||||
@@ -870,7 +870,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1._numberOfRequests).toEqual(2)
|
||||
@@ -937,7 +937,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData: merge1,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge2._numberOfRequests).toEqual(1)
|
||||
@@ -991,7 +991,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1._numberOfRequests).toEqual(0)
|
||||
@@ -1051,7 +1051,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
// Check that the relationship on the first has been removed
|
||||
@@ -1080,7 +1080,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge1._numberOfRequests).toEqual(1)
|
||||
@@ -1126,7 +1126,7 @@ describe('Collections - Live Preview', () => {
|
||||
externallyUpdatedRelationship,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
expect(merge2._numberOfRequests).toEqual(1)
|
||||
@@ -1183,7 +1183,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
locale: 'es',
|
||||
})
|
||||
|
||||
@@ -1332,7 +1332,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
// Check that the blocks have been reordered
|
||||
@@ -1365,7 +1365,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
// Check that the block has been removed
|
||||
@@ -1385,7 +1385,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler,
|
||||
requestHandler,
|
||||
})
|
||||
|
||||
// Check that the block has been removed
|
||||
@@ -1445,7 +1445,7 @@ describe('Collections - Live Preview', () => {
|
||||
initialData,
|
||||
serverURL,
|
||||
returnNumberOfRequests: true,
|
||||
collectionPopulationRequestHandler: customRequestHandler,
|
||||
requestHandler: customRequestHandler,
|
||||
})
|
||||
|
||||
expect(mergedData.relationshipPolyHasMany).toMatchObject([
|
||||
|
||||
Reference in New Issue
Block a user