Skip to content

Commit

Permalink
chore(releases, core): refactor both deleted doc banners into same en…
Browse files Browse the repository at this point in the history
…try point
  • Loading branch information
jordanl17 committed Aug 14, 2024
1 parent e141d49 commit 951c9b9
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 65 deletions.
2 changes: 1 addition & 1 deletion packages/sanity/src/core/store/bundles/reducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ export function bundlesReducer(

// only capture the deleted bundle if deleted by another user
const nextDeletedBundles =
!!isDeletedByCurrentUser && localDeletedBundle
!isDeletedByCurrentUser && localDeletedBundle
? {
...state.deletedBundles,
[localDeletedBundle.slug]: localDeletedBundle,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import {DocumentInspectorPanel} from '../documentInspector'
import {InspectDialog} from '../inspectDialog'
import {useDocumentPane} from '../useDocumentPane'
import {
DeletedDocumentBanners,
DeprecatedDocumentTypeBanner,
PermissionCheckBanner,
ReferenceChangedBanner,
} from './banners'
import {DeletedBundleBanner} from './banners/DeletedBundleBanner'
import {FormView} from './documentViews'

interface DocumentPanelProps {
Expand Down Expand Up @@ -137,7 +137,7 @@ export const DocumentPanel = function DocumentPanel(props: DocumentPanelProps) {
/>
<ReferenceChangedBanner />
<DeprecatedDocumentTypeBanner />
<DeletedBundleBanner />
<DeletedDocumentBanners />
</>
)
}, [activeView.type, isPermissionsLoading, permissions?.granted, ready, requiredPermission])
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,15 +1,54 @@
import {ReadOnlyIcon} from '@sanity/icons'
import {Text} from '@sanity/ui'
import {useCallback} from 'react'
import {useDocumentOperation, useTimelineSelector, useTranslation} from 'sanity'
import {useCallback, useEffect, useState} from 'react'
import {
type BundleDocument,
LATEST,
Translate,
useBundles,
useDocumentOperation,
usePerspective,
useTimelineSelector,
useTranslation,
} from 'sanity'
import {useRouter} from 'sanity/router'

import {structureLocaleNamespace} from '../../../../i18n'
import {useDocumentPane} from '../../useDocumentPane'
import {Banner} from './Banner'

export function DeletedDocumentBanner() {
const {documentId, documentType, isDeleted, isDeleting, timelineStore} = useDocumentPane()
const useIsLocaleBundleDeleted = () => {
const {currentGlobalBundle} = usePerspective()
const {data: bundles, deletedBundles} = useBundles()
const {slug: currentGlobalBundleSlug} = currentGlobalBundle
const [checkedOutBundleSlug, setCheckedOutBundleSlug] = useState<string | undefined>(
currentGlobalBundleSlug,
)

useEffect(() => {
if (currentGlobalBundleSlug !== LATEST.slug) {
setCheckedOutBundleSlug(currentGlobalBundleSlug)
}
}, [currentGlobalBundleSlug, setCheckedOutBundleSlug])

if (!checkedOutBundleSlug || !Object.keys(deletedBundles).length || !bundles?.length) {
return null
}
return deletedBundles[checkedOutBundleSlug]
}

export function DeletedDocumentBanners() {
const {isDeleted, isDeleting} = useDocumentPane()
const deletedCheckedOutBundle = useIsLocaleBundleDeleted()

if (deletedCheckedOutBundle)
return <DeletedBundleBanner deletedBundle={deletedCheckedOutBundle} />

if (isDeleted && !isDeleting) return <DeletedDocumentBanner />
}

function DeletedDocumentBanner() {
const {documentId, documentType, timelineStore} = useDocumentPane()
const {restore} = useDocumentOperation(documentId, documentType)
const {navigateIntent} = useRouter()
const lastNonDeletedRevId = useTimelineSelector(
Expand All @@ -25,10 +64,6 @@ export function DeletedDocumentBanner() {

const {t} = useTranslation(structureLocaleNamespace)

if (!isDeleted || isDeleting) {
return null
}

return (
<Banner
action={
Expand All @@ -49,3 +84,26 @@ export function DeletedDocumentBanner() {
/>
)
}

const DeletedBundleBanner = ({deletedBundle}: {deletedBundle: BundleDocument}) => {
const {t} = useTranslation()

const {title: deletedBundleTitle} = deletedBundle

return (
<Banner
tone="caution"
content={
<Text size={1} weight="medium">
<Translate
t={t}
i18nKey="banners.deleted-bundle-banner.text"
values={{title: deletedBundleTitle}}
/>
</Text>
}
data-testid="deleted-bundle-banner"
icon={ReadOnlyIcon}
/>
)
}

0 comments on commit 951c9b9

Please sign in to comment.