diff --git a/src/admin/components/elements/DuplicateDocument/index.tsx b/src/admin/components/elements/DuplicateDocument/index.tsx index 99b4dd14d6..6dcb0904e6 100644 --- a/src/admin/components/elements/DuplicateDocument/index.tsx +++ b/src/admin/components/elements/DuplicateDocument/index.tsx @@ -47,6 +47,9 @@ const Duplicate: React.FC = ({ slug, collection, id }) => { }); let data = await response.json(); + if ('createdAt' in data) delete data.createdAt; + if ('updatedAt' in data) delete data.updatedAt; + if (typeof collection.admin.hooks?.beforeDuplicate === 'function') { data = await collection.admin.hooks.beforeDuplicate({ data, diff --git a/src/admin/components/views/Global/Default.tsx b/src/admin/components/views/Global/Default.tsx index 26bf473c7b..a8cf37a117 100644 --- a/src/admin/components/views/Global/Default.tsx +++ b/src/admin/components/views/Global/Default.tsx @@ -34,7 +34,7 @@ const DefaultGlobalView: React.FC = (props) => { const { t, i18n } = useTranslation('general'); const { - global, data, onSave, permissions, action, apiURL, initialState, isLoading, + global, data, onSave, permissions, action, apiURL, initialState, isLoading, updatedAt, } = props; const { @@ -170,10 +170,10 @@ const DefaultGlobalView: React.FC = (props) => { )} - {data.updatedAt && ( + {updatedAt && (
  • {t('lastModified')}
    -
    {format(new Date(data.updatedAt as string), dateFormat)}
    +
    {format(new Date(updatedAt as string), dateFormat)}
  • )} diff --git a/src/admin/components/views/Global/index.tsx b/src/admin/components/views/Global/index.tsx index 368deba88f..fe4dab73ec 100644 --- a/src/admin/components/views/Global/index.tsx +++ b/src/admin/components/views/Global/index.tsx @@ -22,6 +22,7 @@ const GlobalView: React.FC = (props) => { const { setStepNav } = useStepNav(); const { user } = useAuth(); const [initialState, setInitialState] = useState(); + const [updatedAt, setUpdatedAt] = useState(); const { getVersions, preferencesKey, docPermissions, getDocPermissions } = useDocumentInfo(); const { getPreference } = usePreferences(); const { t } = useTranslation(); @@ -51,6 +52,7 @@ const GlobalView: React.FC = (props) => { const onSave = useCallback(async (json) => { getVersions(); getDocPermissions(); + setUpdatedAt(json?.result?.updatedAt); const state = await buildStateFromSchema({ fieldSchema: fields, data: json.result, operation: 'update', user, locale, t }); setInitialState(state); }, [getVersions, fields, user, locale, t, getDocPermissions]); @@ -93,6 +95,7 @@ const GlobalView: React.FC = (props) => { onSave, apiURL: `${serverURL}${api}/globals/${slug}${global.versions?.drafts ? '?draft=true' : ''}`, action: `${serverURL}${api}/globals/${slug}?locale=${locale}&depth=0&fallback-locale=null`, + updatedAt: updatedAt || dataToRender?.updatedAt, }} /> ); diff --git a/src/admin/components/views/Global/types.ts b/src/admin/components/views/Global/types.ts index c670506aec..0782339845 100644 --- a/src/admin/components/views/Global/types.ts +++ b/src/admin/components/views/Global/types.ts @@ -17,4 +17,5 @@ export type Props = { initialState: Fields isLoading: boolean autosaveEnabled: boolean + updatedAt: string } diff --git a/src/admin/components/views/collections/Edit/Default.tsx b/src/admin/components/views/collections/Edit/Default.tsx index c8c7a75957..9028d2c1a0 100644 --- a/src/admin/components/views/collections/Edit/Default.tsx +++ b/src/admin/components/views/collections/Edit/Default.tsx @@ -55,6 +55,7 @@ const DefaultEditView: React.FC = (props) => { disableLeaveWithoutSaving, customHeader, id, + updatedAt, } = props; const { @@ -264,10 +265,10 @@ const DefaultEditView: React.FC = (props) => { )} {timestamps && ( - {data.updatedAt && ( + {updatedAt && (
  • {t('lastModified')}
    -
    {format(new Date(data.updatedAt), dateFormat)}
    +
    {format(new Date(updatedAt), dateFormat)}
  • )} {(publishedDoc?.createdAt || data?.createdAt) && ( diff --git a/src/admin/components/views/collections/Edit/index.tsx b/src/admin/components/views/collections/Edit/index.tsx index 88e6c887f6..c32fdb6d6c 100644 --- a/src/admin/components/views/collections/Edit/index.tsx +++ b/src/admin/components/views/collections/Edit/index.tsx @@ -41,6 +41,7 @@ const EditView: React.FC = (props) => { const { state: locationState } = useLocation(); const history = useHistory(); const [initialState, setInitialState] = useState(); + const [updatedAt, setUpdatedAt] = useState(); const { user } = useAuth(); const { getVersions, preferencesKey, getDocPermissions, docPermissions } = useDocumentInfo(); const { getPreference } = usePreferences(); @@ -49,6 +50,7 @@ const EditView: React.FC = (props) => { const onSave = useCallback(async (json: any) => { getVersions(); getDocPermissions(); + setUpdatedAt(json?.doc?.updatedAt); if (!isEditing) { setRedirect(`${admin}/collections/${collection.slug}/${json?.doc?.id}`); } else { @@ -69,6 +71,7 @@ const EditView: React.FC = (props) => { return; } const awaitInitialState = async () => { + setUpdatedAt(dataToRender?.updatedAt); const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, user, operation: isEditing ? 'update' : 'create', id, locale, t }); await getPreference(preferencesKey); setInitialState(state); @@ -110,6 +113,7 @@ const EditView: React.FC = (props) => { hasSavePermission, apiURL, action, + updatedAt: updatedAt || dataToRender?.updatedAt, }} /> diff --git a/src/admin/components/views/collections/Edit/types.ts b/src/admin/components/views/collections/Edit/types.ts index fa80d04b7a..ed65c4b3b9 100644 --- a/src/admin/components/views/collections/Edit/types.ts +++ b/src/admin/components/views/collections/Edit/types.ts @@ -24,4 +24,5 @@ export type Props = IndexProps & { disableActions?: boolean disableLeaveWithoutSaving?: boolean customHeader?: React.ReactNode + updatedAt?: string }