Skip to content

Commit

Permalink
fix(core): use preview value title when unpublishing or discarding a …
Browse files Browse the repository at this point in the history
…document
  • Loading branch information
pedrobonamin committed Feb 7, 2025
1 parent 41419b4 commit 75d244d
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 33 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import {Box} from '@sanity/ui'
import {Box, useToast} from '@sanity/ui'
import {useCallback, useState} from 'react'

import {Dialog} from '../../../../ui-components'
import {LoadingBlock} from '../../../components'
import {useDocumentOperation, useSchema} from '../../../hooks'
import {useTranslation} from '../../../i18n'
import {Translate, useTranslation} from '../../../i18n'
import {usePerspective} from '../../../perspective/usePerspective'
import {Preview} from '../../../preview'
import {Preview, unstable_useValuePreview as useValuePreview} from '../../../preview'
import {getPublishedId, getVersionFromId, isVersionId} from '../../../util/draftUtils'
import {useVersionOperations} from '../../hooks'
import {releasesLocaleNamespace} from '../../i18n'
Expand All @@ -23,15 +23,18 @@ export function DiscardVersionDialog(props: {
}): React.JSX.Element {
const {onClose, documentId, documentType} = props
const {t} = useTranslation(releasesLocaleNamespace)
const {t: coreT} = useTranslation()
const {discardChanges} = useDocumentOperation(getPublishedId(documentId), documentType)

const toast = useToast()
const {selectedPerspective} = usePerspective()
const {discardVersion} = useVersionOperations()
const schema = useSchema()
const [isDiscarding, setIsDiscarding] = useState(false)

const schemaType = schema.get(documentType)

const preview = useValuePreview({schemaType, value: {_id: documentId}})

const handleDiscardVersion = useCallback(async () => {
setIsDiscarding(true)

Expand All @@ -41,6 +44,18 @@ export function DiscardVersionDialog(props: {
getReleaseIdFromReleaseDocumentId((selectedPerspective as ReleaseDocument)._id),
documentId,
)

toast.push({
closable: true,
status: 'success',
description: (
<Translate
t={coreT}
i18nKey={'release.action.discard-version.success'}
values={{title: preview.value?.title || documentId}}
/>
),
})
} else {
// on the document header you can also discard the draft
discardChanges.execute()
Expand All @@ -49,7 +64,16 @@ export function DiscardVersionDialog(props: {
setIsDiscarding(false)

onClose()
}, [selectedPerspective, discardChanges, discardVersion, documentId, onClose])
}, [
documentId,
onClose,
discardVersion,
selectedPerspective,
toast,
coreT,
preview.value?.title,
discardChanges,
])

return (
<Dialog
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import {Stack, Text} from '@sanity/ui'
import {Stack, Text, useToast} from '@sanity/ui'
import {type CSSProperties, useCallback, useState} from 'react'

import {Dialog} from '../../../../ui-components/dialog/Dialog'
import {LoadingBlock} from '../../../components/loadingBlock/LoadingBlock'
import {useSchema} from '../../../hooks/useSchema'
import {useTranslation} from '../../../i18n/hooks/useTranslation'
import {Translate} from '../../../i18n/Translate'
import {unstable_useValuePreview as useValuePreview} from '../../../preview'
import {Preview} from '../../../preview/components/Preview'
import {getVersionFromId} from '../../../util/draftUtils'
import {useVersionOperations} from '../../hooks/useVersionOperations'
Expand All @@ -23,10 +24,12 @@ export function UnpublishVersionDialog(props: {
}): React.JSX.Element {
const {onClose, documentVersionId, documentType} = props
const {t} = useTranslation(releasesLocaleNamespace)
const {t: coreT} = useTranslation()

const schema = useSchema()
const {unpublishVersion} = useVersionOperations()
const [isUnpublishing, setIsUnpublishing] = useState(false)

const toast = useToast()
const {data} = useActiveReleases()
const {data: archivedReleases} = useArchivedReleases()

Expand All @@ -40,14 +43,27 @@ export function UnpublishVersionDialog(props: {
const tone = getReleaseTone(releaseInDetail as ReleaseDocument)
const schemaType = schema.get(documentType)

const preview = useValuePreview({schemaType, value: {_id: documentVersionId}})

const handleUnpublish = useCallback(async () => {
setIsUnpublishing(true)

await unpublishVersion(documentVersionId)
setIsUnpublishing(false)
toast.push({
closable: true,
status: 'success',
description: (
<Translate
t={coreT}
i18nKey={'release.action.unpublish-version.success'}
values={{title: preview?.value?.title || documentVersionId}}
/>
),
})

onClose()
}, [documentVersionId, onClose, unpublishVersion])
}, [coreT, documentVersionId, onClose, preview?.value?.title, toast, unpublishVersion])

return (
<Dialog
Expand Down
26 changes: 1 addition & 25 deletions packages/sanity/src/core/releases/hooks/useVersionOperations.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {type ReleaseId} from '@sanity/client'
import {useTelemetry} from '@sanity/telemetry/react'
import {useToast} from '@sanity/ui'

import {Translate, useTranslation} from '../../i18n'
import {useTranslation} from '../../i18n'
import {useSetPerspective} from '../../perspective/useSetPerspective'
import {getDocumentVariantType} from '../../util/getDocumentVariantType'
import {AddedVersion} from '../__telemetry__/releases.telemetry'
Expand Down Expand Up @@ -53,18 +53,6 @@ export function useVersionOperations(): VersionOperationsValue {
const handleDiscardVersion = async (releaseId: string, documentId: string) => {
try {
await discardVersion(releaseId, documentId)

toast.push({
closable: true,
status: 'success',
description: (
<Translate
t={t}
i18nKey={'release.action.discard-version.success'}
values={{title: document.title as string}}
/>
),
})
} catch (err) {
toast.push({
closable: true,
Expand All @@ -78,18 +66,6 @@ export function useVersionOperations(): VersionOperationsValue {
const handleUnpublishVersion = async (documentId: string) => {
try {
await unpublishVersion(documentId)

toast.push({
closable: true,
status: 'success',
description: (
<Translate
t={t}
i18nKey={'release.action.unpublish-version.success'}
values={{title: document.title as string}}
/>
),
})
} catch (err) {
toast.push({
closable: true,
Expand Down

0 comments on commit 75d244d

Please sign in to comment.