feat(next): strongly type getNextRequestI18n (#7157)
Fixes https://github.com/payloadcms/payload/issues/7137
This commit is contained in:
@@ -1,4 +1,10 @@
|
||||
import type { I18n } from '@payloadcms/translations'
|
||||
import type {
|
||||
ClientTranslationsObject,
|
||||
DefaultTranslationKeys,
|
||||
DefaultTranslationsObject,
|
||||
I18n,
|
||||
I18nClient,
|
||||
} from '@payloadcms/translations'
|
||||
import type { SanitizedConfig } from 'payload'
|
||||
|
||||
import { initI18n } from '@payloadcms/translations'
|
||||
@@ -11,9 +17,23 @@ import { getRequestLanguage } from './getRequestLanguage.js'
|
||||
*
|
||||
* It must be called on the server side, and within the lifecycle of a request since it relies on the request headers and cookies.
|
||||
*/
|
||||
export const getNextRequestI18n = async ({ config }: { config: SanitizedConfig }): Promise<I18n> =>
|
||||
initI18n({
|
||||
export const getNextRequestI18n = async <
|
||||
TAdditionalTranslations = {},
|
||||
TAdditionalClientTranslationKeys extends string = never,
|
||||
>({
|
||||
config,
|
||||
}: {
|
||||
config: SanitizedConfig
|
||||
}): Promise<
|
||||
[TAdditionalClientTranslationKeys] extends [never]
|
||||
? I18nClient
|
||||
: TAdditionalTranslations extends object
|
||||
? I18nClient<TAdditionalTranslations, TAdditionalClientTranslationKeys>
|
||||
: I18nClient<ClientTranslationsObject, TAdditionalClientTranslationKeys>
|
||||
> => {
|
||||
return (await initI18n({
|
||||
config: config.i18n,
|
||||
context: 'client',
|
||||
language: getRequestLanguage({ config, cookies: cookies(), headers: headers() }),
|
||||
})
|
||||
})) as any
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { I18n } from '@payloadcms/translations'
|
||||
import type { I18nClient } from '@payloadcms/translations'
|
||||
import type { Metadata } from 'next'
|
||||
import type { SanitizedConfig } from 'payload'
|
||||
|
||||
@@ -9,7 +9,7 @@ export const generateNotFoundMeta = async ({
|
||||
i18n,
|
||||
}: {
|
||||
config: SanitizedConfig
|
||||
i18n: I18n
|
||||
i18n: I18nClient
|
||||
}): Promise<Metadata> =>
|
||||
meta({
|
||||
description: i18n.t('general:pageNotFound'),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { I18n } from '@payloadcms/translations'
|
||||
import type { I18nClient } from '@payloadcms/translations'
|
||||
import type { Metadata } from 'next'
|
||||
import type { SanitizedConfig } from 'payload'
|
||||
|
||||
@@ -15,7 +15,7 @@ export { generatePageMetadata } from './meta.js'
|
||||
|
||||
export type GenerateViewMetadata = (args: {
|
||||
config: SanitizedConfig
|
||||
i18n: I18n
|
||||
i18n: I18nClient
|
||||
isEditing?: boolean
|
||||
params?: { [key: string]: string | string[] }
|
||||
}) => Promise<Metadata>
|
||||
|
||||
Reference in New Issue
Block a user