chore: consolidates server-side edit view props

This commit is contained in:
Jacob Fletcher
2024-03-04 10:46:22 -05:00
parent a90b7a65de
commit 2c3da88b44
8 changed files with 95 additions and 97 deletions

View File

@@ -112,19 +112,14 @@ export const Account = async ({
action: `${serverURL}${api}/${userSlug}/${data?.id}?locale=${locale.code}`,
apiURL: `${serverURL}${api}/${userSlug}/${data?.id}?locale=${locale.code}`,
collectionSlug: userSlug,
config,
data,
docPermissions: collectionPermissions,
docPreferences,
hasSavePermission: collectionPermissions?.update?.permission,
i18n: req.i18n,
initPageResult: page,
initialState,
locale,
payload,
permissions,
searchParams,
updatedAt: '', // TODO
user,
}
return (

View File

@@ -53,7 +53,6 @@ export const Document = async ({ page, params, searchParams }: Props) => {
const isEditing = Boolean(globalSlug || (collectionSlug && !!id))
const {
i18n,
payload,
payload: { config },
user,
@@ -185,24 +184,18 @@ export const Document = async ({ page, params, searchParams }: Props) => {
action: `${action}?${queryString.stringify(formQueryParams)}`,
apiURL,
canAccessAdmin: permissions?.canAccessAdmin,
collectionConfig,
collectionSlug,
config,
data,
docPermissions,
docPreferences,
globalConfig,
globalSlug,
hasSavePermission,
i18n,
initPageResult: page,
initialState,
isEditing,
locale,
payload,
permissions,
params,
searchParams,
updatedAt: data?.updatedAt?.toString(),
user,
}
return (

View File

@@ -4,12 +4,9 @@ import type { ServerSideEditViewProps } from './types'
export const sanitizeEditViewProps = (props: ServerSideEditViewProps) => {
const clientSideProps = { ...props }
delete clientSideProps.payload
delete clientSideProps.config
delete clientSideProps.initPageResult.req
delete clientSideProps.initPageResult.collectionConfig
delete clientSideProps.initPageResult.globalConfig
delete clientSideProps.searchParams
delete clientSideProps.i18n
delete clientSideProps.collectionConfig
delete clientSideProps.globalConfig
return clientSideProps as EditViewProps
}

View File

@@ -1,37 +1,25 @@
import type { I18n } from '@payloadcms/translations'
import type { FormState } from '@payloadcms/ui'
import type { Permissions, User } from 'payload/auth'
import type { EditViewProps, Locale } from 'payload/config'
import type {
Data,
DocumentPermissions,
DocumentPreferences,
Payload,
SanitizedConfig,
} from 'payload/types'
import type { EditViewProps } from 'payload/config'
import type { Data, DocumentPermissions, DocumentPreferences } from 'payload/types'
import type { InitPageResult } from '../../utilities/initPage'
export type ServerSideEditViewProps = EditViewProps & {
action?: string
apiURL: string
canAccessAdmin?: boolean
collectionConfig?: SanitizedConfig['collections'][0]
config: SanitizedConfig
data: Data
disableActions?: boolean
disableLeaveWithoutSaving?: boolean
docPermissions: DocumentPermissions
docPreferences: DocumentPreferences
globalConfig?: SanitizedConfig['globals'][0]
hasSavePermission?: boolean
i18n: I18n
id?: string
initPageResult: InitPageResult
initialState?: FormState
isEditing?: boolean
locale: Locale
payload: Payload
permissions: Permissions
params?: { [key: string]: string | string[] }
searchParams: { [key: string]: string | string[] | undefined }
// isLoading: boolean
updatedAt: string
user: User
}

View File

@@ -1,21 +1,15 @@
import type { LivePreviewConfig } from 'payload/config'
import type { Data } from 'payload/types'
import React from 'react'
import type { InitPageResult } from '../../utilities/initPage'
import type { ServerSideEditViewProps } from '../Edit/types'
import { LivePreviewClient } from './index.client'
import './index.scss'
type Props = {
data: Data
page: InitPageResult
params: { [key: string]: string | string[] }
searchParams: { [key: string]: string | string[] | undefined }
}
export const LivePreviewView: React.FC = async (props: Props) => {
const { page } = props
export const LivePreviewView: React.FC = async (props: ServerSideEditViewProps) => {
const { initPageResult } = props
const {
collectionConfig,
globalConfig,
@@ -27,7 +21,7 @@ export const LivePreviewView: React.FC = async (props: Props) => {
},
} = {},
} = {},
} = page
} = initPageResult
// TODO(JAKE): not sure what `data` is or what it should be
const { data = {} } = props

View File

@@ -5,23 +5,19 @@ import type { Document } from 'payload/types'
import { notFound } from 'next/navigation'
import React from 'react'
import type { InitPageResult } from '../../utilities/initPage'
import type { ServerSideEditViewProps } from '../Edit/types'
import { DefaultVersionView } from './Default'
type Props = {
page: InitPageResult
params: { [key: string]: string | string[] }
searchParams: { [key: string]: string | string[] | undefined }
}
export const VersionView: React.FC = async (props: Props) => {
const { page, params } = props
export const VersionView: React.FC = async (props: ServerSideEditViewProps) => {
const { initPageResult, params } = props
const {
collectionConfig,
globalConfig,
permissions,
req: { payload, payload: { config } = {}, user } = {},
} = page
} = initPageResult
// /entityType/:entitySlug/:id/versions/:versionID
const [entityType, entitySlug, id, versions, versionID] = params.segments

View File

@@ -1,4 +1,3 @@
import { getTranslation } from '@payloadcms/translations'
import { Gutter } from '@payloadcms/ui'
import { notFound } from 'next/navigation'
import React from 'react'
@@ -14,25 +13,28 @@ import './index.scss'
export const baseClass = 'versions'
export const VersionsView: React.FC<ServerSideEditViewProps> = async (props) => {
const { config, i18n, payload, searchParams, user } = props
const { id, initPageResult, searchParams } = props
const id = 'id' in props ? props.id : undefined
const collectionConfig = 'collectionConfig' in props && props?.collectionConfig
const globalConfig = 'globalConfig' in props && props?.globalConfig
const {
collectionConfig,
globalConfig,
req: {
i18n,
payload,
payload: { config },
user,
},
} = initPageResult
const collectionSlug = collectionConfig?.slug
const globalSlug = globalConfig?.slug
const { limit, page, sort } = searchParams
const {
routes: { admin: adminRoute, api: apiRoute },
routes: { api: apiRoute },
serverURL,
} = config
let docURL: string
let entityLabel: string
let slug: string
let editURL: string
let versionsData
if (collectionSlug) {
@@ -51,12 +53,8 @@ export const VersionsView: React.FC<ServerSideEditViewProps> = async (props) =>
},
})
} catch (error) {
console.error(error)
console.error(error) // eslint-disable-line no-console
}
docURL = `${serverURL}${apiRoute}/${slug}/${id}`
entityLabel = getTranslation(collectionConfig.labels.singular, i18n)
editURL = `${adminRoute}/collections/${collectionSlug}/${id}`
}
if (globalSlug) {
@@ -74,16 +72,12 @@ export const VersionsView: React.FC<ServerSideEditViewProps> = async (props) =>
},
})
} catch (error) {
console.error(error)
console.error(error) // eslint-disable-line no-console
}
if (!versionsData) {
return notFound()
}
docURL = `${serverURL}${apiRoute}/globals/${globalSlug}`
entityLabel = getTranslation(globalConfig.label, i18n)
editURL = `${adminRoute}/globals/${globalSlug}`
}
const columns = buildVersionColumns({

View File

@@ -10,7 +10,11 @@
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"jsx": "preserve",
"lib": ["dom", "dom.iterable", "esnext"],
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"noEmit": true,
"outDir": "./dist",
"resolveJsonModule": true,
@@ -18,7 +22,11 @@
"skipLibCheck": true,
"sourceMap": true,
"strict": false,
"types": ["jest", "node", "@types/jest"],
"types": [
"jest",
"node",
"@types/jest"
],
"incremental": true,
"isolatedModules": true,
"plugins": [
@@ -27,26 +35,59 @@
}
],
"paths": {
"payload": ["./packages/payload/src"],
"payload/*": ["./packages/payload/src/exports/*"],
"@payloadcms/db-mongodb": ["./packages/db-mongodb/src"],
"@payloadcms/richtext-lexical": ["./packages/richtext-lexical/src"],
"@payloadcms/ui": ["./packages/ui/src/exports/index.ts"],
"@payloadcms/ui/*": ["./packages/ui/src/exports/*"],
"@payloadcms/ui/scss": ["./packages/ui/src/scss/styles.scss"],
"@payloadcms/ui/scss/app.scss": ["./packages/ui/src/scss/app.scss"],
"@payloadcms/translations": ["./packages/translations/src/exports/index.ts"],
"payload": [
"./packages/payload/src"
],
"payload/*": [
"./packages/payload/src/exports/*"
],
"@payloadcms/db-mongodb": [
"./packages/db-mongodb/src"
],
"@payloadcms/richtext-lexical": [
"./packages/richtext-lexical/src"
],
"@payloadcms/ui": [
"./packages/ui/src/exports/index.ts"
],
"@payloadcms/ui/*": [
"./packages/ui/src/exports/*"
],
"@payloadcms/ui/scss": [
"./packages/ui/src/scss/styles.scss"
],
"@payloadcms/ui/scss/app.scss": [
"./packages/ui/src/scss/app.scss"
],
"@payloadcms/translations": [
"./packages/translations/src/exports/index.ts"
],
"@payloadcms/translations/client": [
"./packages/translations/src/_generatedFiles_/client/index.ts"
],
"@payloadcms/translations/api": ["./packages/translations/src/_generatedFiles_/api/index.ts"],
"@payloadcms/next/*": ["./packages/next/src/*"],
"@payloadcms/next": ["./packages/next/src/exports/*"],
"@payloadcms/graphql": ["./packages/graphql/src"],
"@payload-config": ["./test/_community/config.ts"]
"@payloadcms/translations/api": [
"./packages/translations/src/_generatedFiles_/api/index.ts"
],
"@payloadcms/next/*": [
"./packages/next/src/*"
],
"@payloadcms/next": [
"./packages/next/src/exports/*"
],
"@payloadcms/graphql": [
"./packages/graphql/src"
],
"@payload-config": [
"./test/_community/config.ts"
]
}
},
"exclude": ["dist", "build", "temp", "node_modules"],
"exclude": [
"dist",
"build",
"temp",
"node_modules"
],
"composite": true,
"references": [
{