Skip to content

Commit bd6ee31

Browse files
fix(ui): req not being threaded through to views (#12213)
1 parent 5617087 commit bd6ee31

File tree

6 files changed

+46
-45
lines changed

6 files changed

+46
-45
lines changed
Lines changed: 30 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,36 @@
1-
import type { DefaultDocumentIDType, NavPreferences, Payload, User } from 'payload'
1+
import type { NavPreferences, PayloadRequest } from 'payload'
22

33
import { cache } from 'react'
44

5-
export const getNavPrefs = cache(
6-
async (
7-
payload: Payload,
8-
userID: DefaultDocumentIDType,
9-
userSlug: string,
10-
): Promise<NavPreferences> => {
11-
return userSlug
12-
? await payload
13-
.find({
14-
collection: 'payload-preferences',
15-
depth: 0,
16-
limit: 1,
17-
pagination: false,
18-
where: {
19-
and: [
20-
{
21-
key: {
22-
equals: 'nav',
23-
},
5+
export const getNavPrefs = cache(async (req: PayloadRequest): Promise<NavPreferences> => {
6+
return req?.user?.collection
7+
? await req.payload
8+
.find({
9+
collection: 'payload-preferences',
10+
depth: 0,
11+
limit: 1,
12+
pagination: false,
13+
req,
14+
where: {
15+
and: [
16+
{
17+
key: {
18+
equals: 'nav',
2419
},
25-
{
26-
'user.relationTo': {
27-
equals: userSlug,
28-
},
20+
},
21+
{
22+
'user.relationTo': {
23+
equals: req.user.collection,
2924
},
30-
{
31-
'user.value': {
32-
equals: userID,
33-
},
25+
},
26+
{
27+
'user.value': {
28+
equals: req?.user?.id,
3429
},
35-
],
36-
},
37-
})
38-
?.then((res) => res?.docs?.[0]?.value)
39-
: null
40-
},
41-
)
30+
},
31+
],
32+
},
33+
})
34+
?.then((res) => res?.docs?.[0]?.value)
35+
: null
36+
})

packages/next/src/elements/Nav/index.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { EntityToGroup } from '@payloadcms/ui/shared'
2-
import type { ServerProps } from 'payload'
2+
import type { PayloadRequest, ServerProps } from 'payload'
33

44
import { Logout } from '@payloadcms/ui'
55
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'
@@ -15,7 +15,9 @@ const baseClass = 'nav'
1515
import { getNavPrefs } from './getNavPrefs.js'
1616
import { DefaultNavClient } from './index.client.js'
1717

18-
export type NavProps = ServerProps
18+
export type NavProps = {
19+
req?: PayloadRequest
20+
} & ServerProps
1921

2022
export const DefaultNav: React.FC<NavProps> = async (props) => {
2123
const {
@@ -25,6 +27,7 @@ export const DefaultNav: React.FC<NavProps> = async (props) => {
2527
params,
2628
payload,
2729
permissions,
30+
req,
2831
searchParams,
2932
user,
3033
viewType,
@@ -68,7 +71,7 @@ export const DefaultNav: React.FC<NavProps> = async (props) => {
6871
i18n,
6972
)
7073

71-
const navPreferences = await getNavPrefs(payload, user?.id, user?.collection)
74+
const navPreferences = await getNavPrefs(req)
7275

7376
const LogoutComponent = RenderServerComponent({
7477
clientProps: {

packages/next/src/layouts/Root/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export const RootLayout = async ({
7979
})
8080
}
8181

82-
const navPrefs = await getNavPrefs(req.payload, req.user?.id, req.user?.collection)
82+
const navPrefs = await getNavPrefs(req)
8383

8484
const clientConfig = getClientConfig({
8585
config,

packages/next/src/templates/Default/index.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type {
22
CustomComponent,
33
DocumentSubViewTypes,
4+
PayloadRequest,
45
ServerProps,
56
ViewTypes,
67
VisibleEntities,
@@ -32,6 +33,7 @@ export type DefaultTemplateProps = {
3233
docID?: number | string
3334
documentSubViewType?: DocumentSubViewTypes
3435
globalSlug?: string
36+
req?: PayloadRequest
3537
viewActions?: CustomComponent[]
3638
viewType?: ViewTypes
3739
visibleEntities: VisibleEntities
@@ -49,6 +51,7 @@ export const DefaultTemplate: React.FC<DefaultTemplateProps> = ({
4951
params,
5052
payload,
5153
permissions,
54+
req,
5255
searchParams,
5356
user,
5457
viewActions,
@@ -84,6 +87,7 @@ export const DefaultTemplate: React.FC<DefaultTemplateProps> = ({
8487
params,
8588
payload,
8689
permissions,
90+
req,
8791
searchParams,
8892
user,
8993
}),
@@ -98,6 +102,7 @@ export const DefaultTemplate: React.FC<DefaultTemplateProps> = ({
98102
globalSlug,
99103
collectionSlug,
100104
docID,
105+
req,
101106
],
102107
)
103108

packages/next/src/views/Document/getDocumentData.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export const getDocumentData = async ({
2929
}: Args): Promise<null | Record<string, unknown> | TypeWithID> => {
3030
const id = sanitizeID(idArg)
3131
let resolvedData: Record<string, unknown> | TypeWithID = null
32+
const { transactionID, ...rest } = req
3233

3334
try {
3435
if (collectionSlug && id) {
@@ -41,9 +42,7 @@ export const getDocumentData = async ({
4142
locale: locale?.code,
4243
overrideAccess: false,
4344
req: {
44-
query: req?.query,
45-
search: req?.search,
46-
searchParams: req?.searchParams,
45+
...rest,
4746
},
4847
user,
4948
})
@@ -58,9 +57,7 @@ export const getDocumentData = async ({
5857
locale: locale?.code,
5958
overrideAccess: false,
6059
req: {
61-
query: req?.query,
62-
search: req?.search,
63-
searchParams: req?.searchParams,
60+
...rest,
6461
},
6562
user,
6663
})

packages/next/src/views/Root/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ export const RootPage = async ({
167167
params={params}
168168
payload={initPageResult?.req.payload}
169169
permissions={initPageResult?.permissions}
170+
req={initPageResult?.req}
170171
searchParams={searchParams}
171172
user={initPageResult?.req.user}
172173
viewActions={serverProps.viewActions}

0 commit comments

Comments
 (0)