Required for #13005. Opening an autosave-enabled document within a drawer triggers an infinite loop when the root document is also autosave-enabled. This was for two reasons: 1. Autosave would run and change the `updatedAt` timestamp. This would trigger another run of autosave, and so on. The timestamp is now removed before comparison to ensure that sequential autosave runs are skipped. 2. The `dequal()` call was not being given the `.current` property off the ref object. This meant that is was never evaluate to `true` and therefore never skip unnecessary autosaves to begin with. --- - To see the specific tasks where the Asana app for GitHub is being used, see below: - https://app.asana.com/0/0/1210697235723932
101 lines
2.9 KiB
TypeScript
101 lines
2.9 KiB
TypeScript
import { fileURLToPath } from 'node:url'
|
|
import path from 'path'
|
|
const filename = fileURLToPath(import.meta.url)
|
|
const dirname = path.dirname(filename)
|
|
import { buildConfigWithDefaults } from '../buildConfigWithDefaults.js'
|
|
import AutosavePosts from './collections/Autosave.js'
|
|
import AutosaveWithDraftButtonPosts from './collections/AutosaveWithDraftButton.js'
|
|
import AutosaveWithDraftValidate from './collections/AutosaveWithDraftValidate.js'
|
|
import CustomIDs from './collections/CustomIDs.js'
|
|
import { Diff } from './collections/Diff/index.js'
|
|
import DisablePublish from './collections/DisablePublish.js'
|
|
import DraftPosts from './collections/Drafts.js'
|
|
import DraftWithMax from './collections/DraftsWithMax.js'
|
|
import DraftsWithValidate from './collections/DraftsWithValidate.js'
|
|
import ErrorOnUnpublish from './collections/ErrorOnUnpublish.js'
|
|
import LocalizedPosts from './collections/Localized.js'
|
|
import { Media } from './collections/Media.js'
|
|
import { Media2 } from './collections/Media2.js'
|
|
import Posts from './collections/Posts.js'
|
|
import { TextCollection } from './collections/Text.js'
|
|
import VersionPosts from './collections/Versions.js'
|
|
import AutosaveGlobal from './globals/Autosave.js'
|
|
import AutosaveWithDraftButtonGlobal from './globals/AutosaveWithDraftButton.js'
|
|
import DisablePublishGlobal from './globals/DisablePublish.js'
|
|
import DraftGlobal from './globals/Draft.js'
|
|
import DraftWithMaxGlobal from './globals/DraftWithMax.js'
|
|
import LocalizedGlobal from './globals/LocalizedGlobal.js'
|
|
import { MaxVersions } from './globals/MaxVersions.js'
|
|
import { seed } from './seed.js'
|
|
|
|
export default buildConfigWithDefaults({
|
|
admin: {
|
|
importMap: {
|
|
baseDir: path.resolve(dirname),
|
|
},
|
|
// The autosave test uses this format in order to compare timestamps in the UI
|
|
dateFormat: 'MMMM do yyyy, h:mm:ss a',
|
|
},
|
|
collections: [
|
|
DisablePublish,
|
|
Posts,
|
|
AutosavePosts,
|
|
AutosaveWithDraftButtonPosts,
|
|
AutosaveWithDraftValidate,
|
|
DraftPosts,
|
|
DraftWithMax,
|
|
DraftsWithValidate,
|
|
ErrorOnUnpublish,
|
|
LocalizedPosts,
|
|
VersionPosts,
|
|
CustomIDs,
|
|
Diff,
|
|
TextCollection,
|
|
Media,
|
|
Media2,
|
|
],
|
|
globals: [
|
|
AutosaveGlobal,
|
|
AutosaveWithDraftButtonGlobal,
|
|
DraftGlobal,
|
|
DraftWithMaxGlobal,
|
|
DisablePublishGlobal,
|
|
LocalizedGlobal,
|
|
MaxVersions,
|
|
],
|
|
indexSortableFields: true,
|
|
localization: {
|
|
defaultLocale: 'en',
|
|
locales: [
|
|
{
|
|
code: 'en',
|
|
label: 'English',
|
|
},
|
|
{
|
|
code: 'es',
|
|
label: {
|
|
en: 'Spanish',
|
|
es: 'Español',
|
|
de: 'Spanisch',
|
|
},
|
|
},
|
|
{
|
|
code: 'de',
|
|
label: {
|
|
en: 'German',
|
|
es: 'Alemán',
|
|
de: 'Deutsch',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
onInit: async (payload) => {
|
|
if (process.env.SEED_IN_CONFIG_ONINIT !== 'false') {
|
|
await seed(payload)
|
|
}
|
|
},
|
|
typescript: {
|
|
outputFile: path.resolve(dirname, 'payload-types.ts'),
|
|
},
|
|
})
|