From 456e3d645920050fe155f54527dbf65528f3fd22 Mon Sep 17 00:00:00 2001 From: Dan Ribbens Date: Thu, 25 Sep 2025 11:14:19 -0400 Subject: [PATCH] revert: "feat: adds new experimental.localizeStatus option (#13207)" (#13928) This reverts commit 0f6d748365484f9cb8975e91dbee7daa31a7af8b. # Conflicts: # docs/configuration/overview.mdx # docs/experimental/overview.mdx # packages/ui/src/elements/Status/index.tsx --- docs/configuration/localization.mdx | 23 ---- docs/configuration/overview.mdx | 1 - docs/experimental/overview.mdx | 66 ----------- .../db-mongodb/src/createGlobalVersion.ts | 2 - packages/db-mongodb/src/createVersion.ts | 2 - packages/db-mongodb/src/queryDrafts.ts | 7 -- packages/drizzle/src/createGlobalVersion.ts | 2 - packages/drizzle/src/createVersion.ts | 2 - packages/drizzle/src/queryDrafts.ts | 20 ++-- .../Versions/cells/AutosaveCell/index.tsx | 1 - .../src/collections/operations/create.ts | 1 - .../operations/utilities/update.ts | 1 - packages/payload/src/config/client.ts | 10 -- packages/payload/src/config/defaults.ts | 2 - packages/payload/src/config/types.ts | 15 --- packages/payload/src/database/types.ts | 2 - .../payload/src/globals/operations/update.ts | 1 - packages/payload/src/versions/baseFields.ts | 21 ---- .../src/versions/buildCollectionFields.ts | 19 +-- .../payload/src/versions/buildGlobalFields.ts | 19 +-- .../drafts/replaceWithDraftIfAvailable.ts | 6 - packages/payload/src/versions/saveVersion.ts | 111 +++++------------- packages/payload/src/versions/types.ts | 1 - packages/ui/src/elements/Status/index.tsx | 26 ++-- test/localization/config.ts | 3 - test/localization/e2e.spec.ts | 27 ----- test/versions/e2e.spec.ts | 4 +- 27 files changed, 54 insertions(+), 341 deletions(-) delete mode 100644 docs/experimental/overview.mdx diff --git a/docs/configuration/localization.mdx b/docs/configuration/localization.mdx index 8a0163595..9174804a7 100644 --- a/docs/configuration/localization.mdx +++ b/docs/configuration/localization.mdx @@ -131,29 +131,6 @@ localization: { Since the filtering happens at the root level of the application and its result is not calculated every time you navigate to a new page, you may want to call `router.refresh` in a custom component that watches when values that affect the result change. In the example above, you would want to do this when `supportedLocales` changes on the tenant document. -## Experimental Options - -Experimental options are features that may not be fully stable and may change or be removed in future releases. - -These options can be enabled in your Payload Config under the `experimental` key. You can set them like this: - -```ts -import { buildConfig } from 'payload' - -export default buildConfig({ - // ... - experimental: { - localizeStatus: true, - }, -}) -``` - -The following experimental options are available related to localization: - -| Option | Description | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **`localizeStatus`** | **Boolean.** When `true`, shows document status per locale in the admin panel instead of always showing the latest overall status. Opt-in for backwards compatibility. Defaults to `false`. | - ## Field Localization Payload Localization works on a **field** level—not a document level. In addition to configuring the base Payload Config to support Localization, you need to specify each field that you would like to localize. diff --git a/docs/configuration/overview.mdx b/docs/configuration/overview.mdx index 6f62d6563..dd697723c 100644 --- a/docs/configuration/overview.mdx +++ b/docs/configuration/overview.mdx @@ -70,7 +70,6 @@ The following options are available: | **`admin`** | The configuration options for the Admin Panel, including Custom Components, Live Preview, etc. [More details](../admin/overview#admin-options). | | **`bin`** | Register custom bin scripts for Payload to execute. [More Details](#custom-bin-scripts). | | **`editor`** | The Rich Text Editor which will be used by `richText` fields. [More details](../rich-text/overview). | -| **`experimental`** | Configure experimental features for Payload. These may be unstable and may change or be removed in future releases. [More details](../experimental/overview). | | **`db`** \* | The Database Adapter which will be used by Payload. [More details](../database/overview). | | **`serverURL`** | A string used to define the absolute URL of your app. This includes the protocol, for example `https://example.com`. No paths allowed, only protocol, domain and (optionally) port. | | **`collections`** | An array of Collections for Payload to manage. [More details](./collections). | diff --git a/docs/experimental/overview.mdx b/docs/experimental/overview.mdx deleted file mode 100644 index 57bb84699..000000000 --- a/docs/experimental/overview.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Experimental Features -label: Overview -order: 10 -desc: Enable and configure experimental functionality within Payload. These features may be unstable and may change or be removed without notice. -keywords: experimental, unstable, beta, preview, features, configuration, Payload, cms, headless, javascript, node, react, nextjs ---- - -Experimental features allow you to try out new functionality before it becomes a stable part of Payload. These features may still be in active development, may have incomplete functionality, and can change or be removed in future releases without warning. - -## How It Works - -Experimental features are configured via the root-level `experimental` property in your [Payload Config](../configuration/overview). This property contains individual feature flags, each flag can be configured independently, allowing you to selectively opt into specific functionality. - -```ts -import { buildConfig } from 'payload' - -const config = buildConfig({ - // ... - experimental: { - localizeStatus: true, // highlight-line - }, -}) -``` - -## Experimental Options - -The following options are available: - -| Option | Description | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **`localizeStatus`** | **Boolean.** When `true`, shows document status per locale in the admin panel instead of always showing the latest overall status. Opt-in for backwards compatibility. Defaults to `false`. | - -This list may change without notice. - -## When to Use Experimental Features - -You might enable an experimental feature when: - -- You want early access to new capabilities before their stable release. -- You can accept the risks of using potentially unstable functionality. -- You are testing new features in a development or staging environment. -- You wish to provide feedback to the Payload team on new functionality. - -If you are working on a production application, carefully evaluate whether the benefits outweigh the risks. For most stable applications, it is recommended to wait until the feature is officially released. - - - Tip: To stay up to date on experimental features or share - your feedback, visit the{' '} - - Payload GitHub Discussions - {' '} - or{' '} - - open an issue - - . - diff --git a/packages/db-mongodb/src/createGlobalVersion.ts b/packages/db-mongodb/src/createGlobalVersion.ts index 0541ada01..c948881b5 100644 --- a/packages/db-mongodb/src/createGlobalVersion.ts +++ b/packages/db-mongodb/src/createGlobalVersion.ts @@ -12,7 +12,6 @@ export const createGlobalVersion: CreateGlobalVersion = async function createGlo autosave, createdAt, globalSlug, - localeStatus, parent, publishedLocale, req, @@ -34,7 +33,6 @@ export const createGlobalVersion: CreateGlobalVersion = async function createGlo autosave, createdAt, latest: true, - localeStatus, parent, publishedLocale, snapshot, diff --git a/packages/db-mongodb/src/createVersion.ts b/packages/db-mongodb/src/createVersion.ts index a0af56ac5..a6a7b5c2c 100644 --- a/packages/db-mongodb/src/createVersion.ts +++ b/packages/db-mongodb/src/createVersion.ts @@ -12,7 +12,6 @@ export const createVersion: CreateVersion = async function createVersion( autosave, collectionSlug, createdAt, - localeStatus, parent, publishedLocale, req, @@ -38,7 +37,6 @@ export const createVersion: CreateVersion = async function createVersion( autosave, createdAt, latest: true, - localeStatus, parent, publishedLocale, snapshot, diff --git a/packages/db-mongodb/src/queryDrafts.ts b/packages/db-mongodb/src/queryDrafts.ts index 62c6f9114..1dd0e84da 100644 --- a/packages/db-mongodb/src/queryDrafts.ts +++ b/packages/db-mongodb/src/queryDrafts.ts @@ -179,13 +179,6 @@ export const queryDrafts: QueryDrafts = async function queryDrafts( for (let i = 0; i < result.docs.length; i++) { const id = result.docs[i].parent - - const localeStatus = result.docs[i].localeStatus || {} - if (locale && localeStatus[locale]) { - result.docs[i].status = localeStatus[locale] - result.docs[i].version._status = localeStatus[locale] - } - result.docs[i] = result.docs[i].version ?? {} result.docs[i].id = id } diff --git a/packages/drizzle/src/createGlobalVersion.ts b/packages/drizzle/src/createGlobalVersion.ts index bb33fbe6d..5ac12fa8c 100644 --- a/packages/drizzle/src/createGlobalVersion.ts +++ b/packages/drizzle/src/createGlobalVersion.ts @@ -15,7 +15,6 @@ export async function createGlobalVersion( autosave, createdAt, globalSlug, - localeStatus, publishedLocale, req, returning, @@ -36,7 +35,6 @@ export async function createGlobalVersion( autosave, createdAt, latest: true, - localeStatus, publishedLocale, snapshot, updatedAt, diff --git a/packages/drizzle/src/createVersion.ts b/packages/drizzle/src/createVersion.ts index 12c41dd0c..cb612b85b 100644 --- a/packages/drizzle/src/createVersion.ts +++ b/packages/drizzle/src/createVersion.ts @@ -15,7 +15,6 @@ export async function createVersion( autosave, collectionSlug, createdAt, - localeStatus, parent, publishedLocale, req, @@ -41,7 +40,6 @@ export async function createVersion( autosave, createdAt, latest: true, - localeStatus, parent, publishedLocale, snapshot, diff --git a/packages/drizzle/src/queryDrafts.ts b/packages/drizzle/src/queryDrafts.ts index 4e066e670..474f3f2a4 100644 --- a/packages/drizzle/src/queryDrafts.ts +++ b/packages/drizzle/src/queryDrafts.ts @@ -36,17 +36,15 @@ export const queryDrafts: QueryDrafts = async function queryDrafts( where: combinedWhere, }) - for (let i = 0; i < result.docs.length; i++) { - const id = result.docs[i].parent - const localeStatus = result.docs[i].localeStatus || {} - if (locale && localeStatus[locale]) { - result.docs[i].status = localeStatus[locale] - result.docs[i].version._status = localeStatus[locale] - } + return { + ...result, + docs: result.docs.map((doc) => { + doc = { + id: doc.parent, + ...doc.version, + } - result.docs[i] = result.docs[i].version ?? {} - result.docs[i].id = id + return doc + }), } - - return result } diff --git a/packages/next/src/views/Versions/cells/AutosaveCell/index.tsx b/packages/next/src/views/Versions/cells/AutosaveCell/index.tsx index 8d17f30f4..ee1876710 100644 --- a/packages/next/src/views/Versions/cells/AutosaveCell/index.tsx +++ b/packages/next/src/views/Versions/cells/AutosaveCell/index.tsx @@ -19,7 +19,6 @@ type AutosaveCellProps = { rowData: { autosave?: boolean id: number | string - localeStatus?: Record publishedLocale?: string version: { _status: string diff --git a/packages/payload/src/collections/operations/create.ts b/packages/payload/src/collections/operations/create.ts index 27828aeeb..ac6c91d7a 100644 --- a/packages/payload/src/collections/operations/create.ts +++ b/packages/payload/src/collections/operations/create.ts @@ -289,7 +289,6 @@ export const createOperation = async < autosave, collection: collectionConfig, docWithLocales: result, - locale, operation: 'create', payload, publishSpecificLocale, diff --git a/packages/payload/src/collections/operations/utilities/update.ts b/packages/payload/src/collections/operations/utilities/update.ts index 93bbeff3d..b5bffebe4 100644 --- a/packages/payload/src/collections/operations/utilities/update.ts +++ b/packages/payload/src/collections/operations/utilities/update.ts @@ -317,7 +317,6 @@ export const updateDocument = async < collection: collectionConfig, docWithLocales: result, draft: shouldSaveDraft, - locale, operation: 'update', payload, publishSpecificLocale, diff --git a/packages/payload/src/config/client.ts b/packages/payload/src/config/client.ts index dc267f46d..72422968a 100644 --- a/packages/payload/src/config/client.ts +++ b/packages/payload/src/config/client.ts @@ -223,16 +223,6 @@ export const createClientConfig = ({ break - case 'experimental': - if (config.experimental) { - clientConfig.experimental = {} - if (config.experimental?.localizeStatus) { - clientConfig.experimental.localizeStatus = config.experimental.localizeStatus - } - } - - break - case 'folders': if (config.folders) { clientConfig.folders = { diff --git a/packages/payload/src/config/defaults.ts b/packages/payload/src/config/defaults.ts index aa8c01a0b..77dc94677 100644 --- a/packages/payload/src/config/defaults.ts +++ b/packages/payload/src/config/defaults.ts @@ -47,7 +47,6 @@ export const defaults: Omit = { defaultDepth: 2, defaultMaxTextLength: 40000, endpoints: [], - experimental: {}, globals: [], graphQL: { disablePlaygroundInProduction: true, @@ -122,7 +121,6 @@ export const addDefaultsToConfig = (config: Config): Config => { config.defaultDepth = config.defaultDepth ?? 2 config.defaultMaxTextLength = config.defaultMaxTextLength ?? 40000 config.endpoints = config.endpoints ?? [] - config.experimental = config.experimental ?? {} config.globals = config.globals ?? [] config.graphQL = { disableIntrospectionInProduction: true, diff --git a/packages/payload/src/config/types.ts b/packages/payload/src/config/types.ts index 1e4b04293..a76832e80 100644 --- a/packages/payload/src/config/types.ts +++ b/packages/payload/src/config/types.ts @@ -726,14 +726,6 @@ export type ImportMapGenerators = Array< }) => void > -/** - * Experimental features. - * These may be unstable and may change or be removed in future releases. - */ -export type ExperimentalConfig = { - localizeStatus?: boolean -} - export type AfterErrorHook = ( args: AfterErrorHookArgs, ) => AfterErrorResult | Promise @@ -1069,12 +1061,6 @@ export type Config = { email?: EmailAdapter | Promise /** Custom REST endpoints */ endpoints?: Endpoint[] - /** - * Configure experimental features for Payload. - * - * These features may be unstable and may change or be removed in future releases. - */ - experimental?: ExperimentalConfig /** * Options for folder view within the admin panel * @@ -1344,7 +1330,6 @@ export type SanitizedConfig = { /** Default richtext editor to use for richText fields */ editor?: RichTextAdapter endpoints: Endpoint[] - experimental?: ExperimentalConfig globals: SanitizedGlobalConfig[] i18n: Required jobs: SanitizedJobsConfig diff --git a/packages/payload/src/database/types.ts b/packages/payload/src/database/types.ts index df55f9479..145102514 100644 --- a/packages/payload/src/database/types.ts +++ b/packages/payload/src/database/types.ts @@ -390,7 +390,6 @@ export type CreateVersionArgs = { autosave: boolean collectionSlug: CollectionSlug createdAt: string - localeStatus?: Record /** ID of the parent document for which the version should be created for */ parent: number | string publishedLocale?: string @@ -415,7 +414,6 @@ export type CreateGlobalVersionArgs = { autosave: boolean createdAt: string globalSlug: GlobalSlug - localeStatus?: Record /** ID of the parent document for which the version should be created for */ parent: number | string publishedLocale?: string diff --git a/packages/payload/src/globals/operations/update.ts b/packages/payload/src/globals/operations/update.ts index 863bdeab0..7b209efa6 100644 --- a/packages/payload/src/globals/operations/update.ts +++ b/packages/payload/src/globals/operations/update.ts @@ -302,7 +302,6 @@ export const updateOperation = async < docWithLocales: result, draft: shouldSaveDraft, global: globalConfig, - locale, operation: 'update', payload, publishSpecificLocale, diff --git a/packages/payload/src/versions/baseFields.ts b/packages/payload/src/versions/baseFields.ts index a0e542204..91435afc6 100644 --- a/packages/payload/src/versions/baseFields.ts +++ b/packages/payload/src/versions/baseFields.ts @@ -1,5 +1,4 @@ // @ts-strict-ignore -import type { SanitizedConfig } from '../config/types.js' import type { CheckboxField, Field, Option } from '../fields/config/types.js' export const statuses: Option[] = [ @@ -44,23 +43,3 @@ export const versionSnapshotField: CheckboxField = { }, index: true, } - -export function buildLocaleStatusField(config: SanitizedConfig): Field[] { - if (!config.localization || !config.localization.locales) { - return [] - } - - return config.localization.locales.map((locale) => { - const code = typeof locale === 'string' ? locale : locale.code - - return { - name: code, - type: 'select', - index: true, - options: [ - { label: ({ t }) => t('version:draft'), value: 'draft' }, - { label: ({ t }) => t('version:published'), value: 'published' }, - ], - } - }) -} diff --git a/packages/payload/src/versions/buildCollectionFields.ts b/packages/payload/src/versions/buildCollectionFields.ts index f047373f8..089659189 100644 --- a/packages/payload/src/versions/buildCollectionFields.ts +++ b/packages/payload/src/versions/buildCollectionFields.ts @@ -2,7 +2,7 @@ import type { SanitizedCollectionConfig } from '../collections/config/types.js' import type { SanitizedConfig } from '../config/types.js' import type { Field, FlattenedField } from '../fields/config/types.js' -import { buildLocaleStatusField, versionSnapshotField } from './baseFields.js' +import { versionSnapshotField } from './baseFields.js' export const buildVersionCollectionFields = ( config: SanitizedConfig, @@ -62,23 +62,6 @@ export const buildVersionCollectionFields = ( return locale.code }), }) - - if (config.experimental?.localizeStatus) { - const localeStatusFields = buildLocaleStatusField(config) - - fields.push({ - name: 'localeStatus', - type: 'group', - admin: { - disableBulkEdit: true, - disabled: true, - }, - fields: localeStatusFields, - ...(flatten && { - flattenedFields: localeStatusFields as FlattenedField[], - })!, - }) - } } fields.push({ diff --git a/packages/payload/src/versions/buildGlobalFields.ts b/packages/payload/src/versions/buildGlobalFields.ts index b9675ddbd..06c1a067c 100644 --- a/packages/payload/src/versions/buildGlobalFields.ts +++ b/packages/payload/src/versions/buildGlobalFields.ts @@ -2,7 +2,7 @@ import type { SanitizedConfig } from '../config/types.js' import type { Field, FlattenedField } from '../fields/config/types.js' import type { SanitizedGlobalConfig } from '../globals/config/types.js' -import { buildLocaleStatusField, versionSnapshotField } from './baseFields.js' +import { versionSnapshotField } from './baseFields.js' export const buildVersionGlobalFields = ( config: SanitizedConfig, @@ -56,23 +56,6 @@ export const buildVersionGlobalFields = ( return locale.code }), }) - - if (config.experimental.localizeStatus) { - const localeStatusFields = buildLocaleStatusField(config) - - fields.push({ - name: 'localeStatus', - type: 'group', - admin: { - disableBulkEdit: true, - disabled: true, - }, - fields: localeStatusFields, - ...(flatten && { - flattenedFields: localeStatusFields as FlattenedField[], - })!, - }) - } } fields.push({ diff --git a/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts b/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts index f4d0ac25e..25fcc45b2 100644 --- a/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts +++ b/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts @@ -111,12 +111,6 @@ export const replaceWithDraftIfAvailable = async ({ draft.version = {} as T } - // Lift locale status from version data if available - const localeStatus = draft.localeStatus || {} - if (locale && localeStatus[locale]) { - ;(draft.version as { _status?: string })['_status'] = localeStatus[locale] - } - // Disregard all other draft content at this point, // Only interested in the version itself. // Operations will handle firing hooks, etc. diff --git a/packages/payload/src/versions/saveVersion.ts b/packages/payload/src/versions/saveVersion.ts index d101aa05c..24b6feef3 100644 --- a/packages/payload/src/versions/saveVersion.ts +++ b/packages/payload/src/versions/saveVersion.ts @@ -1,5 +1,3 @@ -import { version } from 'os' - // @ts-strict-ignore import type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js' import type { SanitizedGlobalConfig } from '../globals/config/types.js' @@ -18,7 +16,6 @@ type Args = { draft?: boolean global?: SanitizedGlobalConfig id?: number | string - locale?: null | string operation?: 'create' | 'restoreVersion' | 'update' payload: Payload publishSpecificLocale?: string @@ -34,7 +31,6 @@ export const saveVersion = async ({ docWithLocales: doc, draft, global, - locale, operation, payload, publishSpecificLocale, @@ -46,7 +42,6 @@ export const saveVersion = async ({ let createNewVersion = true const now = new Date().toISOString() const versionData = deepCopyObjectSimple(doc) - if (draft) { versionData._status = 'draft' } @@ -60,39 +55,39 @@ export const saveVersion = async ({ } try { - let docs - const findVersionArgs = { - limit: 1, - pagination: false, - req, - sort: '-updatedAt', - } - - if (collection) { - ;({ docs } = await payload.db.findVersions({ - ...findVersionArgs, - collection: collection.slug, - limit: 1, - pagination: false, - req, - where: { - parent: { - equals: id, - }, - }, - })) - } else { - ;({ docs } = await payload.db.findGlobalVersions({ - ...findVersionArgs, - global: global!.slug, - limit: 1, - pagination: false, - req, - })) - } - const [latestVersion] = docs - if (autosave) { + let docs + const findVersionArgs = { + limit: 1, + pagination: false, + req, + sort: '-updatedAt', + } + + if (collection) { + ;({ docs } = await payload.db.findVersions({ + ...findVersionArgs, + collection: collection.slug, + limit: 1, + pagination: false, + req, + where: { + parent: { + equals: id, + }, + }, + })) + } else { + ;({ docs } = await payload.db.findGlobalVersions({ + ...findVersionArgs, + global: global!.slug, + limit: 1, + pagination: false, + req, + })) + } + const [latestVersion] = docs + // overwrite the latest version if it's set to autosave if (latestVersion && 'autosave' in latestVersion && latestVersion.autosave === true) { createNewVersion = false @@ -130,53 +125,11 @@ export const saveVersion = async ({ } if (createNewVersion) { - let localeStatus = {} - const localizationEnabled = - payload.config.localization && payload.config.localization.locales.length > 0 - - if ( - localizationEnabled && - payload.config.localization !== false && - payload.config.experimental?.localizeStatus - ) { - const allLocales = ( - (payload.config.localization && payload.config.localization?.locales) || - [] - ).map((locale) => (typeof locale === 'string' ? locale : locale.code)) - - // If `publish all`, set all locales to published - if (versionData._status === 'published' && !publishSpecificLocale) { - localeStatus = Object.fromEntries(allLocales.map((code) => [code, 'published'])) - } else if (publishSpecificLocale || (locale && versionData._status === 'draft')) { - const status: 'draft' | 'published' = publishSpecificLocale ? 'published' : 'draft' - const incomingLocale = String(publishSpecificLocale || locale) - const existing = latestVersion?.localeStatus - - // If no locale statuses are set, set it and set all others to draft - if (!existing) { - localeStatus = { - ...Object.fromEntries( - allLocales.filter((code) => code !== incomingLocale).map((code) => [code, 'draft']), - ), - [incomingLocale]: status, - } - } else { - // If locales already exist, update the status for the incoming locale - const { [incomingLocale]: _, ...rest } = existing - localeStatus = { - ...rest, - [incomingLocale]: status, - } - } - } - } - const createVersionArgs = { autosave: Boolean(autosave), collectionSlug: undefined as string | undefined, createdAt: operation === 'restoreVersion' ? versionData.createdAt : now, globalSlug: undefined as string | undefined, - localeStatus, parent: collection ? id : undefined, publishedLocale: publishSpecificLocale || undefined, req, diff --git a/packages/payload/src/versions/types.ts b/packages/payload/src/versions/types.ts index d79c59d53..efbc4e3c9 100644 --- a/packages/payload/src/versions/types.ts +++ b/packages/payload/src/versions/types.ts @@ -122,7 +122,6 @@ export type SanitizedGlobalVersions = { export type TypeWithVersion = { createdAt: string id: string - localeStatus: Record parent: number | string publishedLocale?: string snapshot?: boolean diff --git a/packages/ui/src/elements/Status/index.tsx b/packages/ui/src/elements/Status/index.tsx index 852f1ba96..fc59f452b 100644 --- a/packages/ui/src/elements/Status/index.tsx +++ b/packages/ui/src/elements/Status/index.tsx @@ -24,7 +24,6 @@ export const Status: React.FC = () => { hasPublishedDoc, incrementVersionCount, isTrashed, - savedDocumentData: doc, setHasPublishedDoc, setMostRecentVersionIsAutosaved, setUnpublishedVersionCount, @@ -38,7 +37,6 @@ export const Status: React.FC = () => { routes: { api }, serverURL, }, - getEntityConfig, } = useConfig() const { reset: resetForm } = useForm() @@ -48,22 +46,16 @@ export const Status: React.FC = () => { const unPublishModalSlug = `confirm-un-publish-${id}` const revertModalSlug = `confirm-revert-${id}` - let statusToRender: 'changed' | 'draft' | 'published' = 'draft' + let statusToRender: 'changed' | 'draft' | 'published' - const collectionConfig = getEntityConfig({ collectionSlug }) - const globalConfig = getEntityConfig({ globalSlug }) - - const docConfig = collectionConfig || globalConfig - const autosaveEnabled = - typeof docConfig?.versions?.drafts === 'object' ? docConfig.versions.drafts.autosave : false - - if (autosaveEnabled) { - if (hasPublishedDoc) { - statusToRender = unpublishedVersionCount > 0 ? 'changed' : 'published' - } - } else { - statusToRender = doc._status || 'draft' + if (unpublishedVersionCount > 0 && hasPublishedDoc) { + statusToRender = 'changed' + } else if (!hasPublishedDoc) { + statusToRender = 'draft' + } else if (hasPublishedDoc && unpublishedVersionCount <= 0) { + statusToRender = 'published' } + const displayStatusKey = isTrashed ? hasPublishedDoc ? 'previouslyPublished' @@ -201,7 +193,7 @@ export const Status: React.FC = () => { {!isTrashed && canUpdate && hasPublishedDoc && - (statusToRender === 'changed' || statusToRender === 'draft') && ( + statusToRender === 'changed' && (  —