diff --git a/packages/ui/src/utilities/buildTableState.ts b/packages/ui/src/utilities/buildTableState.ts index c6a56e5cb7..8c2d10dbdb 100644 --- a/packages/ui/src/utilities/buildTableState.ts +++ b/packages/ui/src/utilities/buildTableState.ts @@ -166,6 +166,7 @@ export const buildTableState = async ( collection: 'payload-preferences', depth: 0, limit: 1, + pagination: false, where: { and: [ { @@ -186,30 +187,39 @@ export const buildTableState = async ( ], }, }) - .then((res) => res.docs[0]?.value as ListPreferences) + .then((res) => res.docs[0] ?? { id: null, value: {} }) - let newPrefs = preferencesResult + let newPrefs = preferencesResult.value - if (!preferencesResult || !dequal(columns, preferencesResult?.columns)) { + if (!preferencesResult.id || !dequal(columns, preferencesResult?.columns)) { const mergedPrefs = { ...(preferencesResult || {}), columns, } - - newPrefs = await payload - .create({ - collection: 'payload-preferences', - data: { - key: preferencesKey, - user: { - collection: user.collection, - value: user.id, - }, - value: mergedPrefs, + const preferencesArgs = { + collection: 'payload-preferences', + data: { + key: preferencesKey, + user: { + collection: user.collection, + value: user.id, }, - req, - }) - ?.then((res) => res.value as ListPreferences) + value: mergedPrefs, + }, + depth: 0, + req, + } + + if (preferencesResult.id) { + newPrefs = await payload + .update({ + ...preferencesArgs, + id: preferencesResult.id, + }) + ?.then((res) => res.value as ListPreferences) + } else { + newPrefs = await payload.create(preferencesArgs)?.then((res) => res.value as ListPreferences) + } } const fields = collectionConfig.fields