diff --git a/packages/sanity/src/structure/panes/document/DocumentPaneProvider.tsx b/packages/sanity/src/structure/panes/document/DocumentPaneProvider.tsx index 9a7e50042856..4de933bc723d 100644 --- a/packages/sanity/src/structure/panes/document/DocumentPaneProvider.tsx +++ b/packages/sanity/src/structure/panes/document/DocumentPaneProvider.tsx @@ -39,6 +39,7 @@ import { useCopyPaste, useDocumentOperation, useDocumentValuePermissions, + useDocumentVersions, useEditState, useFormState, useInitialValue, @@ -126,6 +127,7 @@ export const DocumentPaneProvider = memo((props: DocumentPaneProviderProps) => { const params = useUnique(paneRouter.params) || EMPTY_PARAMS const perspective = usePerspective() + const {data: documentVersions} = useDocumentVersions({documentId}) const {isReleaseLocked, selectedReleaseId, selectedPerspectiveName} = useMemo(() => { // TODO: COREL - Remove this after updating sanity-assist to use @@ -168,10 +170,22 @@ export const DocumentPaneProvider = memo((props: DocumentPaneProviderProps) => { const initialValue = useUnique(initialValueRaw) const isInitialValueLoading = initialValue.loading + const onlyHasVersions = + documentVersions && documentVersions.length === 1 && isVersionId(documentVersions[0]) const {patch} = useDocumentOperation(documentId, documentType, selectedReleaseId) const schemaType = schema.get(documentType) as ObjectSchemaType | undefined - const editState = useEditState(documentId, documentType, 'default', selectedReleaseId) + const editState = useEditState( + documentId, + documentType, + 'default', + // check if the selected version is the only version, if it isn't and it doesn't exist in hte release + // then it needs to use the doucmentverisons + !documentVersions || !onlyHasVersions + ? selectedReleaseId + : getVersionFromId(documentVersions[0]), + ) + const {validation: validationRaw} = useValidationStatus( documentId, documentType, @@ -190,6 +204,10 @@ export const DocumentPaneProvider = memo((props: DocumentPaneProviderProps) => { (liveEdit ? initialValue.value : {_id: documentId, _type: documentType}) ) } + // if no version is selected, but there is only version, it should default to the version version it finds + if (!selectedPerspectiveName && onlyHasVersions) { + return editState.version || editState.draft || editState.published || initialValue.value + } return editState.draft || editState.published || initialValue.value }, [ documentId, @@ -199,6 +217,7 @@ export const DocumentPaneProvider = memo((props: DocumentPaneProviderProps) => { editState.version, initialValue.value, liveEdit, + onlyHasVersions, selectedPerspectiveName, selectedReleaseId, ]) diff --git a/packages/sanity/src/structure/panes/document/documentPanel/DocumentPanel.tsx b/packages/sanity/src/structure/panes/document/documentPanel/DocumentPanel.tsx index 95f1cfa0e7ba..ce100ae77aff 100644 --- a/packages/sanity/src/structure/panes/document/documentPanel/DocumentPanel.tsx +++ b/packages/sanity/src/structure/panes/document/documentPanel/DocumentPanel.tsx @@ -150,19 +150,14 @@ export const DocumentPanel = function DocumentPanel(props: DocumentPanelProps) { if (params?.historyVersion) { return } - const isCreatingDocument = displayed && !displayed._createdAt const isScheduledRelease = isReleaseDocument(selectedPerspective) && isReleaseScheduledOrScheduling(selectedPerspective) if (isScheduledRelease) { return } - if ( - displayed?._id && - getVersionFromId(displayed._id) !== selectedReleaseId && - ready && - !isCreatingDocument - ) { + + if (displayed?._id && getVersionFromId(displayed._id) !== selectedReleaseId && ready) { return ( 0) || + isCreatingDocument const filteredReleases: FilterReleases = useMemo(() => { if (!documentVersions) return {notCurrentReleases: [], currentReleases: [], inCreation: null} @@ -231,7 +234,7 @@ export const DocumentPerspectiveList = memo(function DocumentPerspectiveList() { const isDraftDisabled: boolean = useMemo(() => { // Draft is disabled when the document has no published or draft but has versions - if (!editState?.published && !editState?.draft && documentVersions?.length) { + if (onlyHasVersions) { return true } @@ -244,14 +247,7 @@ export const DocumentPerspectiveList = memo(function DocumentPerspectiveList() { if (isCreatingDocument && selectedReleaseId) return true if (isLiveEdit) return true return false - }, [ - documentVersions?.length, - editState?.draft, - editState?.published, - isCreatingDocument, - isLiveEdit, - selectedReleaseId, - ]) + }, [editState?.draft, isCreatingDocument, isLiveEdit, onlyHasVersions, selectedReleaseId]) return ( <>