fix: admin view props

This commit is contained in:
Jacob Fletcher
2024-03-04 12:15:08 -05:00
parent 2dc3e9af5e
commit 87463c7e70
13 changed files with 86 additions and 108 deletions

View File

@@ -2,7 +2,6 @@ import type { Metadata } from 'next'
import type {
Data,
DocumentPreferences,
InitPageResult,
SanitizedConfig,
ServerSideEditViewProps,
} from 'payload/types'
@@ -17,6 +16,8 @@ import {
import { notFound } from 'next/navigation'
import React, { Fragment } from 'react'
import type { AdminViewProps } from '../Root'
import { getNextI18n } from '../../utilities/getNextI18n'
import { meta } from '../../utilities/meta'
import { EditView } from '../Edit'
@@ -41,13 +42,7 @@ export const generateMetadata = async ({
})
}
export const Account = async ({
initPageResult,
searchParams,
}: {
initPageResult: InitPageResult
searchParams: { [key: string]: string | string[] | undefined }
}) => {
export const Account: React.FC<AdminViewProps> = async ({ initPageResult, searchParams }) => {
const {
locale,
permissions,

View File

@@ -1,11 +1,13 @@
import type { Metadata } from 'next'
import type { Field, InitPageResult } from 'payload/types'
import type { Field } from 'payload/types'
import type { SanitizedConfig } from 'payload/types'
import { Form, FormSubmit, buildStateFromSchema } from '@payloadcms/ui'
import { redirect } from 'next/navigation'
import React from 'react'
import type { AdminViewProps } from '../Root'
import { getNextI18n } from '../../utilities/getNextI18n'
import { meta } from '../../utilities/meta'
import { CreateFirstUserFields } from './index.client'
@@ -30,19 +32,19 @@ export const generateMetadata = async ({
})
}
type Props = {
page: InitPageResult
params: { [key: string]: string | string[] }
searchParams: { [key: string]: string | string[] }
}
export const CreateFirstUser: React.FC<Props> = async ({ page }) => {
const { req } = page
const { config } = req.payload
export const CreateFirstUser: React.FC<AdminViewProps> = async ({ initPageResult }) => {
const {
admin: { user: userSlug },
routes: { admin: adminRoute, api: apiRoute },
serverURL,
} = config
req,
req: {
payload: {
config: {
admin: { user: userSlug },
routes: { admin: adminRoute, api: apiRoute },
serverURL,
},
},
},
} = initPageResult
if (req.user) {
redirect(adminRoute)

View File

@@ -1,11 +1,12 @@
import type { Metadata } from 'next'
import type { InitPageResult, SanitizedConfig } from 'payload/types'
import type { SanitizedConfig } from 'payload/types'
import { HydrateClientUser, RenderCustomComponent } from '@payloadcms/ui'
import Link from 'next/link'
import { isEntityHidden } from 'payload/utilities'
import React, { Fragment } from 'react'
import type { AdminViewProps } from '../Root'
import type { DashboardProps } from './Default'
import { getNextI18n } from '../../utilities/getNextI18n'
@@ -31,12 +32,9 @@ export const generateMetadata = async ({
})
}
export const Dashboard = ({
export const Dashboard: React.FC<AdminViewProps> = ({
initPageResult,
// searchParams,
}: {
initPageResult: InitPageResult
searchParams: { [key: string]: string | string[] | undefined }
}) => {
const {
permissions,

View File

@@ -4,7 +4,6 @@ import type {
DocumentPreferences,
Document as DocumentType,
Field,
InitPageResult,
SanitizedConfig,
ServerSideEditViewProps,
} from 'payload/types'
@@ -24,6 +23,8 @@ import { notFound } from 'next/navigation'
import queryString from 'qs'
import React, { Fragment } from 'react'
import type { AdminViewProps } from '../Root'
import { getMetaBySegment } from './getMetaBySegment'
import { getViewsFromConfig } from './getViewsFromConfig'
@@ -36,14 +37,10 @@ export const generateMetadata = async (args: {
}
}) => getMetaBySegment(args)
export const Document = async ({
export const Document: React.FC<AdminViewProps> = async ({
initPageResult,
params,
searchParams,
}: {
initPageResult: InitPageResult
params: { [key: string]: string | string[] }
searchParams: { [key: string]: string | string[] | undefined }
}) => {
const {
collectionConfig,

View File

@@ -1,10 +1,12 @@
import type { Metadata } from 'next'
import type { InitPageResult, SanitizedConfig } from 'payload/types'
import type { SanitizedConfig } from 'payload/types'
import { Button, Email, Form, FormSubmit, Translation } from '@payloadcms/ui'
import Link from 'next/link'
import React, { Fragment } from 'react'
import type { AdminViewProps } from '../Root'
import { getNextI18n } from '../../utilities/getNextI18n'
import { meta } from '../../utilities/meta'
@@ -27,18 +29,14 @@ export const generateMetadata = async ({
})
}
type Props = {
baseClass: string
page: InitPageResult
}
export const ForgotPassword: React.FC<Props> = async ({ page }) => {
const { req } = page
export const ForgotPassword: React.FC<AdminViewProps> = ({ initPageResult }) => {
const {
i18n,
payload: { config },
user,
} = req
req: {
i18n,
payload: { config },
user,
},
} = initPageResult
const {
admin: { user: userSlug },

View File

@@ -1,5 +1,5 @@
import type { Metadata } from 'next'
import type { InitPageResult, SanitizedConfig } from 'payload/types'
import type { SanitizedConfig } from 'payload/types'
import { getTranslation } from '@payloadcms/translations'
import {
@@ -12,6 +12,7 @@ import { notFound } from 'next/navigation'
import { isEntityHidden } from 'payload/utilities'
import React, { Fragment } from 'react'
import type { AdminViewProps } from '../Root'
import type { DefaultListViewProps, ListPreferences } from './Default/types'
import { getNextI18n } from '../../utilities/getNextI18n'
@@ -55,14 +56,7 @@ export const generateMetadata = async ({
})
}
export const ListView = async ({
initPageResult,
searchParams,
}: {
initPageResult: InitPageResult
params: { [key: string]: string | string[] }
searchParams: { [key: string]: string | string[] | undefined }
}) => {
export const ListView: React.FC<AdminViewProps> = async ({ initPageResult, searchParams }) => {
const {
collectionConfig,
permissions,

View File

@@ -1,10 +1,12 @@
import type { Metadata } from 'next'
import type { InitPageResult, SanitizedConfig } from 'payload/types'
import type { SanitizedConfig } from 'payload/types'
import { Logo } from '@payloadcms/ui'
import { redirect } from 'next/navigation'
import React, { Fragment } from 'react'
import type { AdminViewProps } from '../Root'
import { getNextI18n } from '../../utilities/getNextI18n'
import { meta } from '../../utilities/meta'
import { LoginForm } from './LoginForm'
@@ -29,13 +31,8 @@ export const generateMetadata = async ({
})
}
type Props = {
baseClass: string
page: InitPageResult
searchParams: { [key: string]: string | string[] | undefined }
}
export const Login: React.FC<Props> = ({ baseClass, page, searchParams }) => {
const { req } = page
export const Login: React.FC<AdminViewProps> = ({ baseClass, initPageResult, searchParams }) => {
const { req } = initPageResult
const {
payload: { config },

View File

@@ -1,9 +1,11 @@
import type { Metadata } from 'next'
import type { InitPageResult, SanitizedConfig } from 'payload/types'
import type { SanitizedConfig } from 'payload/types'
import { MinimalTemplate } from '@payloadcms/ui'
import React from 'react'
import type { AdminViewProps } from '../Root'
import { getNextI18n } from '../../utilities/getNextI18n'
import { meta } from '../../utilities/meta'
import { LogoutClient } from './LogoutClient'
@@ -30,24 +32,20 @@ export const generateMetadata = async ({
})
}
type Props = {
baseClass: string
page: InitPageResult
searchParams: { [key: string]: string | string[] }
} & {
inactivity?: boolean
}
export const Logout: React.FC<Props> = ({ inactivity, page, searchParams }) => {
export const Logout: React.FC<
AdminViewProps & {
inactivity?: boolean
}
> = ({ inactivity, initPageResult, searchParams }) => {
const {
req: {
payload: { config },
payload: {
config: {
routes: { admin },
},
},
},
} = page
const {
routes: { admin },
} = config
} = initPageResult
return (
<MinimalTemplate className={baseClass}>
@@ -62,6 +60,6 @@ export const Logout: React.FC<Props> = ({ inactivity, page, searchParams }) => {
)
}
export const LogoutInactivity: React.FC<Props> = (props) => {
export const LogoutInactivity: React.FC<AdminViewProps> = (props) => {
return <Logout inactivity {...props} />
}

View File

@@ -1,5 +1,5 @@
import type { Metadata } from 'next'
import type { InitPageResult, SanitizedConfig } from 'payload/types'
import type { SanitizedConfig } from 'payload/types'
import {
Button,
@@ -14,6 +14,8 @@ import {
import Link from 'next/link'
import React from 'react'
import type { AdminViewProps } from '../Root'
import { getNextI18n } from '../../utilities/getNextI18n'
import { meta } from '../../utilities/meta'
import './index.scss'
@@ -39,14 +41,9 @@ export const generateMetadata = async ({
})
}
type Props = {
page: InitPageResult
params: { [key: string]: string | string[] }
searchParams: { [key: string]: string | string[] }
}
export const ResetPassword: React.FC<AdminViewProps> = ({ initPageResult, params }) => {
const { req } = initPageResult
export const ResetPassword: React.FC<Props> = ({ page, params }) => {
const { req } = page
const { token } = params
const {

View File

@@ -28,6 +28,13 @@ type Args = {
}
}
export type AdminViewProps = {
baseClass?: string
initPageResult: InitPageResult
params?: { [key: string]: string | string[] | undefined }
searchParams: { [key: string]: string | string[] | undefined }
}
const baseClasses = {
forgot: 'forgot-password',
login: 'login',
@@ -46,7 +53,7 @@ const oneSegmentViews = {
export const RootPage = async ({ config: configPromise, params, searchParams }: Args) => {
const config = await configPromise
let ViewToRender
let ViewToRender: React.FC<AdminViewProps>
let templateClassName
let initPageResult: InitPageResult
let templateType: 'default' | 'minimal' = 'default'

View File

@@ -3,6 +3,8 @@ import type { InitPageResult } from 'payload/types'
import React from 'react'
import type { AdminViewProps } from '../Root'
import { meta } from '../../utilities/meta'
import { UnauthorizedClient } from './UnauthorizedClient'
@@ -22,20 +24,17 @@ export const generateMetadata = async ({ page }: { page: InitPageResult }): Prom
})
}
type Props = {
page: InitPageResult
}
export const Unauthorized: React.FC<Props> = ({ page }) => {
export const Unauthorized: React.FC<AdminViewProps> = ({ initPageResult }) => {
const {
req: {
payload: { config },
payload: {
config: {
admin: { logoutRoute },
routes: { admin },
},
},
},
} = page
const {
admin: { logoutRoute },
routes: { admin },
} = config
} = initPageResult
return <UnauthorizedClient logoutRoute={`${admin}${logoutRoute}`} />
}

View File

@@ -1,10 +1,12 @@
import type { Metadata } from 'next'
import type { InitPageResult, SanitizedConfig } from 'payload/types'
import type { SanitizedConfig } from 'payload/types'
import { Logo } from '@payloadcms/ui'
import { redirect } from 'next/navigation'
import React from 'react'
import type { AdminViewProps } from '../Root'
import { getNextI18n } from '../../utilities/getNextI18n'
import { meta } from '../../utilities/meta'
import './index.scss'
@@ -30,17 +32,11 @@ export const generateMetadata = async ({
})
}
type Props = {
page: InitPageResult
params: { [key: string]: string | string[] }
searchParams: { [key: string]: string | string[] }
}
export const Verify: React.FC<Props> = async ({ page, params }) => {
export const Verify: React.FC<AdminViewProps> = async ({ initPageResult, params }) => {
// /:collectionSlug/verify/:token
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const [collectionSlug, verify, token] = params.segments
const { req } = page
const { req } = initPageResult
const {
payload: { config },

View File

@@ -115,4 +115,4 @@
"app/**/*.tsx",
"scripts/**/*.ts"
]
}
}