diff --git a/packages/db-mongodb/src/connect.ts b/packages/db-mongodb/src/connect.ts index ced7b6de7a..03734e6dd6 100644 --- a/packages/db-mongodb/src/connect.ts +++ b/packages/db-mongodb/src/connect.ts @@ -24,30 +24,6 @@ export const connect: Connect = async function connect(this: MongooseAdapter) { useFacet: undefined, } - if ([process.env.APP_ENV, process.env.NODE_ENV].includes('test')) { - if (process.env.PAYLOAD_TEST_MONGO_URL) { - urlToConnect = process.env.PAYLOAD_TEST_MONGO_URL - } else { - connectionOptions.dbName = 'payloadmemory' - const { MongoMemoryReplSet } = require('mongodb-memory-server') - const getPort = require('get-port') - - const port = await getPort() - this.mongoMemoryServer = await MongoMemoryReplSet.create({ - instance: { - dbName: 'payloadmemory', - port, - }, - replSet: { - count: 3, - }, - }) - - urlToConnect = this.mongoMemoryServer.getUri() - successfulConnectionMessage = 'Connected to in-memory MongoDB server successfully!' - } - } - try { this.connection = (await mongoose.connect(urlToConnect, connectionOptions)).connection diff --git a/packages/db-postgres/src/migrate.ts b/packages/db-postgres/src/migrate.ts index 78a5796b2d..759b2e3c6a 100644 --- a/packages/db-postgres/src/migrate.ts +++ b/packages/db-postgres/src/migrate.ts @@ -1,12 +1,14 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ import type { Payload } from 'payload' import type { Migration } from 'payload/database' -import type { PayloadRequest } from 'payload/dist/express/types' +import type { PayloadRequest } from 'payload/types' -import { readMigrationFiles } from 'payload/database' -import { commitTransaction } from 'payload/dist/utilities/commitTransaction' -import { initTransaction } from 'payload/dist/utilities/initTransaction' -import { killTransaction } from 'payload/dist/utilities/killTransaction' +import { + commitTransaction, + initTransaction, + killTransaction, + readMigrationFiles, +} from 'payload/database' import prompts from 'prompts' import type { PostgresAdapter } from './types' diff --git a/packages/db-postgres/src/migrateDown.ts b/packages/db-postgres/src/migrateDown.ts index 24f13516ff..75d8d817cb 100644 --- a/packages/db-postgres/src/migrateDown.ts +++ b/packages/db-postgres/src/migrateDown.ts @@ -1,10 +1,13 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ import type { PayloadRequest } from 'payload/types' -import { getMigrations, readMigrationFiles } from 'payload/database' -import { commitTransaction } from 'payload/dist/utilities/commitTransaction' -import { initTransaction } from 'payload/dist/utilities/initTransaction' -import { killTransaction } from 'payload/dist/utilities/killTransaction' +import { + commitTransaction, + getMigrations, + initTransaction, + killTransaction, + readMigrationFiles, +} from 'payload/database' import type { PostgresAdapter } from './types' diff --git a/packages/db-postgres/src/migrateFresh.ts b/packages/db-postgres/src/migrateFresh.ts index ba9cc9e0b5..77fc7a847e 100644 --- a/packages/db-postgres/src/migrateFresh.ts +++ b/packages/db-postgres/src/migrateFresh.ts @@ -1,10 +1,12 @@ import type { PayloadRequest } from 'payload/types' import { sql } from 'drizzle-orm' -import { readMigrationFiles } from 'payload/database' -import { commitTransaction } from 'payload/dist/utilities/commitTransaction' -import { initTransaction } from 'payload/dist/utilities/initTransaction' -import { killTransaction } from 'payload/dist/utilities/killTransaction' +import { + commitTransaction, + initTransaction, + killTransaction, + readMigrationFiles, +} from 'payload/database' import prompts from 'prompts' import type { PostgresAdapter } from './types' diff --git a/packages/db-postgres/src/migrateRefresh.ts b/packages/db-postgres/src/migrateRefresh.ts index d27655ec6b..2942fcbeb5 100644 --- a/packages/db-postgres/src/migrateRefresh.ts +++ b/packages/db-postgres/src/migrateRefresh.ts @@ -1,10 +1,13 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ import type { PayloadRequest } from 'payload/types' -import { getMigrations, readMigrationFiles } from 'payload/database' -import { commitTransaction } from 'payload/dist/utilities/commitTransaction' -import { initTransaction } from 'payload/dist/utilities/initTransaction' -import { killTransaction } from 'payload/dist/utilities/killTransaction' +import { + commitTransaction, + getMigrations, + initTransaction, + killTransaction, + readMigrationFiles, +} from 'payload/database' import type { PostgresAdapter } from './types' diff --git a/packages/db-postgres/src/migrateReset.ts b/packages/db-postgres/src/migrateReset.ts index 67c9b73869..a5bbdff00c 100644 --- a/packages/db-postgres/src/migrateReset.ts +++ b/packages/db-postgres/src/migrateReset.ts @@ -1,10 +1,13 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ import type { PayloadRequest } from 'payload/types' -import { getMigrations, readMigrationFiles } from 'payload/database' -import { commitTransaction } from 'payload/dist/utilities/commitTransaction' -import { initTransaction } from 'payload/dist/utilities/initTransaction' -import { killTransaction } from 'payload/dist/utilities/killTransaction' +import { + commitTransaction, + getMigrations, + initTransaction, + killTransaction, + readMigrationFiles, +} from 'payload/database' import type { PostgresAdapter } from './types' diff --git a/packages/graphql/src/resolvers/auth/access.ts b/packages/graphql/src/resolvers/auth/access.ts index 36033ddb25..491e8ad3a8 100644 --- a/packages/graphql/src/resolvers/auth/access.ts +++ b/packages/graphql/src/resolvers/auth/access.ts @@ -1,7 +1,7 @@ import { accessOperation } from 'payload/operations' import type { SanitizedConfig } from 'payload/types' -import formatName from '../../../graphql/utilities/formatName' +import formatName from '../../utilities/formatName' import { Context } from '../types' import { isolateObjectProperty } from 'payload/utilities' const formatConfigNames = (results, configs) => { diff --git a/packages/next/src/pages/Dashboard/Default/index.tsx b/packages/next/src/pages/Dashboard/Default/index.tsx index 01cf15d043..20da8c2eb8 100644 --- a/packages/next/src/pages/Dashboard/Default/index.tsx +++ b/packages/next/src/pages/Dashboard/Default/index.tsx @@ -1,7 +1,8 @@ -import React, { useEffect } from 'react' import type { SanitizedConfig } from 'payload/types' -import { Gutter, SetStepNav, useActions } from '@payloadcms/ui' +import { Gutter, SetStepNav } from '@payloadcms/ui' +import React from 'react' + import { DefaultDashboardClient } from './index.client' import './index.scss' @@ -26,12 +27,6 @@ export const DefaultDashboard: React.FC = (props) => { visibleGlobals, } = props - const { setViewActions } = useActions() - - useEffect(() => { - setViewActions([]) - }, [setViewActions]) - return (
diff --git a/packages/next/src/pages/Dashboard/index.tsx b/packages/next/src/pages/Dashboard/index.tsx index 25a8be78f7..1ba6e4d3d1 100644 --- a/packages/next/src/pages/Dashboard/index.tsx +++ b/packages/next/src/pages/Dashboard/index.tsx @@ -1,5 +1,5 @@ -import type { SanitizedConfig } from 'payload/types' import type { Metadata } from 'next' +import type { SanitizedConfig } from 'payload/types' import { HydrateClientUser, RenderCustomComponent } from '@payloadcms/ui' import Link from 'next/link' @@ -10,6 +10,7 @@ import type { DashboardProps } from './Default' import { getNextI18n } from '../../utilities/getNextI18n' import { initPage } from '../../utilities/initPage' +import { meta } from '../../utilities/meta' import { DefaultDashboard } from './Default' export const generateMetadata = async ({ diff --git a/packages/next/src/pages/Edit/Default/index.tsx b/packages/next/src/pages/Edit/Default/index.tsx index 49c7ee2b16..2ea1231f01 100644 --- a/packages/next/src/pages/Edit/Default/index.tsx +++ b/packages/next/src/pages/Edit/Default/index.tsx @@ -72,7 +72,6 @@ export const DefaultEditView: React.FC = () => { globalSlug: globalConfig?.slug, }) - const isEditing = 'isEditing' in props ? props.isEditing : undefined const operation = id ? 'update' : 'create' const auth = collectionConfig ? collectionConfig.auth : undefined @@ -184,7 +183,7 @@ export const DefaultEditView: React.FC = () => { collectionSlug={collectionConfig?.slug} globalSlug={globalConfig?.slug} id={id} - isEditing={isEditing || false} + isEditing={Boolean(id) || false} pluralLabel={collectionConfig?.labels?.plural} useAsTitle={collectionConfig?.admin?.useAsTitle} /> @@ -199,7 +198,7 @@ export const DefaultEditView: React.FC = () => { disableActions={disableActions} hasSavePermission={hasSavePermission} id={id} - isEditing={isEditing} + isEditing={Boolean(id)} permissions={docPermissions} slug={collectionConfig?.slug} /> diff --git a/packages/next/src/withPayload.js b/packages/next/src/withPayload.js index 5d38bf6aec..fde756ba5e 100644 --- a/packages/next/src/withPayload.js +++ b/packages/next/src/withPayload.js @@ -8,13 +8,13 @@ const withPayload = (nextConfig = {}) => { '**/*': [ ...(nextConfig.experimental?.outputFileTracingExcludes?.['**/*'] || []), 'drizzle-kit', - 'drizzle-kit/utils', + 'drizzle-kit/payload', ], }, serverComponentsExternalPackages: [ ...(nextConfig?.experimental?.serverComponentsExternalPackages || []), 'drizzle-kit', - 'drizzle-kit/utils', + 'drizzle-kit/payload', 'pino', 'pino-pretty', ], @@ -30,7 +30,7 @@ const withPayload = (nextConfig = {}) => { externals: [ ...(incomingWebpackConfig?.externals || []), 'drizzle-kit', - 'drizzle-kit/utils', + 'drizzle-kit/payload', 'pino', 'pino-pretty', 'sharp', diff --git a/packages/ui/src/elements/EditMany/index.tsx b/packages/ui/src/elements/EditMany/index.tsx index 552b799f01..4c7346b012 100644 --- a/packages/ui/src/elements/EditMany/index.tsx +++ b/packages/ui/src/elements/EditMany/index.tsx @@ -11,7 +11,6 @@ import FormSubmit from '../../forms/Submit' import { X } from '../../icons/X' import { useAuth } from '../../providers/Auth' import { useConfig } from '../../providers/Config' -import { DocumentInfoProvider } from '../../providers/DocumentInfo' import { OperationContext } from '../../providers/OperationProvider' import { useSearchParams } from '../../providers/SearchParams' import { SelectAllStatus, useSelection } from '../../providers/SelectionProvider' @@ -126,56 +125,54 @@ const EditMany: React.FC = (props) => { {t('general:edit')} - - -
-
-
-

- {t('general:editingLabel', { count, label: getTranslation(plural, i18n) })} -

- -
- - [RenderFields] + + +
+
+

+ {t('general:editingLabel', { count, label: getTranslation(plural, i18n) })} +

+ +
+ + [RenderFields] {/* */} -
-
-
-
- {collection.versions ? ( - - - - - ) : ( - +
+
+
+ {collection.versions ? ( + + - )} -
+ + + ) : ( + + )}
- - - +
+ +
) diff --git a/packages/ui/src/forms/fields/Blocks/BlockRow.tsx b/packages/ui/src/forms/fields/Blocks/BlockRow.tsx index 8d35ef09a9..15eaf76f9c 100644 --- a/packages/ui/src/forms/fields/Blocks/BlockRow.tsx +++ b/packages/ui/src/forms/fields/Blocks/BlockRow.tsx @@ -56,7 +56,6 @@ export const BlockRow: React.FC = ({ listeners, moveRow, path: parentPath, - schemaPath, permissions, readOnly, removeRow, diff --git a/packages/ui/src/providers/Auth/HydrateClientUser/index.tsx b/packages/ui/src/providers/Auth/HydrateClientUser/index.tsx deleted file mode 100644 index 4d9936231d..0000000000 --- a/packages/ui/src/providers/Auth/HydrateClientUser/index.tsx +++ /dev/null @@ -1,21 +0,0 @@ -'use client' - -import type { Permissions, User } from 'payload/auth' - -import { useEffect } from 'react' - -import { useAuth } from '..' - -export const HydrateClientUser: React.FC<{ permissions: Permissions; user: User }> = ({ - permissions, - user, -}) => { - const { setPermissions, setUser } = useAuth() - - useEffect(() => { - setUser(user) - setPermissions(permissions) - }, [user, permissions, setUser, setPermissions]) - - return null -} diff --git a/packages/ui/src/providers/DocumentInfo/index.tsx b/packages/ui/src/providers/DocumentInfo/index.tsx index 89699dc2ad..a673aee1e7 100644 --- a/packages/ui/src/providers/DocumentInfo/index.tsx +++ b/packages/ui/src/providers/DocumentInfo/index.tsx @@ -51,10 +51,6 @@ export const DocumentInfoProvider: React.FC< const [unpublishedVersions, setUnpublishedVersions] = useState>>(null) - - - const [title, setTitle] = useState('') - const [title, setTitle] = useState('') const baseURL = `${serverURL}${api}` @@ -77,7 +73,7 @@ export const DocumentInfoProvider: React.FC< } } - const [docPermissions, setDocPermissions] = useState(permissions[pluralType][slug]) + const [docPermissions, setDocPermissions] = useState(null) const getVersions = useCallback(async () => { let versionFetchURL @@ -225,14 +221,14 @@ export const DocumentInfoProvider: React.FC< 'Accept-Language': i18n.language, }, }) - try { - const json = await res.json() - setDocPermissions(json) - } catch (e) { - console.error('Unable to fetch document permissions', e) - } + const json = await res.json() + setDocPermissions(json) + } else { + // fallback to permissions from the entity type + // (i.e. create has no id) + setDocPermissions(permissions?.[pluralType]?.[slug]) } - }, [serverURL, api, pluralType, slug, id, i18n.language, code]) + }, [serverURL, api, pluralType, slug, id, permissions, i18n.language, code]) const getDocPreferences = useCallback(async () => { return getPreference(preferencesKey) @@ -279,13 +275,13 @@ export const DocumentInfoProvider: React.FC< const value: DocumentInfoContext = { ...documentInfo, + docConfig, docPermissions, getDocPermissions, getDocPreferences, getVersions, publishedDoc, setDocFieldPreferences, - docConfig, setDocumentInfo, setDocumentTitle, title,