From cbb1c84be76146301ce41c4bdace647df83a4aac Mon Sep 17 00:00:00 2001 From: James Date: Sun, 14 Aug 2022 10:40:52 -0700 Subject: [PATCH] fix: #930 --- package.json | 2 +- src/admin/components/views/collections/Edit/index.tsx | 11 +++++++++-- yarn.lock | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index d9bdcaebbd..106c74f0b3 100644 --- a/package.json +++ b/package.json @@ -163,7 +163,7 @@ "react-dom": "^18.0.0", "react-helmet": "^6.1.0", "react-router-dom": "^5.1.2", - "react-router-navigation-prompt": "^1.8.11", + "react-router-navigation-prompt": "^1.9.6", "react-select": "^3.0.8", "react-simple-code-editor": "^0.11.0", "react-toastify": "^8.2.0", diff --git a/src/admin/components/views/collections/Edit/index.tsx b/src/admin/components/views/collections/Edit/index.tsx index 2bd498bd35..81614a7e97 100644 --- a/src/admin/components/views/collections/Edit/index.tsx +++ b/src/admin/components/views/collections/Edit/index.tsx @@ -36,6 +36,7 @@ const EditView: React.FC = (props) => { const [fields] = useState(() => formatFields(incomingCollection, isEditing)); const [collection] = useState(() => ({ ...incomingCollection, fields })); + const [redirect, setRedirect] = useState(); const locale = useLocale(); const { serverURL, routes: { admin, api } } = useConfig(); @@ -51,12 +52,12 @@ const EditView: React.FC = (props) => { const onSave = useCallback(async (json: any) => { getVersions(); if (!isEditing) { - history.push(`${admin}/collections/${collection.slug}/${json?.doc?.id}`); + setRedirect(`${admin}/collections/${collection.slug}/${json?.doc?.id}`); } else { const state = await buildStateFromSchema({ fieldSchema: collection.fields, data: json.doc, user, id, operation: 'update', locale }); setInitialState(state); } - }, [admin, collection, history, isEditing, getVersions, user, id, locale]); + }, [admin, collection, isEditing, getVersions, user, id, locale]); const [{ data, isLoading: isLoadingDocument, isError }] = usePayloadAPI( (isEditing ? `${serverURL}${api}/${slug}/${id}` : null), @@ -111,6 +112,12 @@ const EditView: React.FC = (props) => { awaitInitialState(); }, [dataToRender, fields, isEditing, id, user, locale, isLoadingDocument, preferencesKey, getPreference]); + useEffect(() => { + if (redirect) { + history.push(redirect); + } + }, [history, redirect]); + if (isError) { return ( diff --git a/yarn.lock b/yarn.lock index f42ecedf39..3ff7e5c3a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10531,7 +10531,7 @@ react-router-dom@^5.1.2: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router-navigation-prompt@^1.8.11: +react-router-navigation-prompt@^1.9.6: version "1.9.6" resolved "https://registry.npmjs.org/react-router-navigation-prompt/-/react-router-navigation-prompt-1.9.6.tgz#a949252dfbae8c40508671beb6d5995f0b089ac4" integrity sha512-l0sAtbroHK8i1/Eyy29XcrMpBEt0R08BaScgMUt8r5vWWbLz7G0ChOikayTCQm7QgDFsHw8gVnxDJb7TBZCAKg==