diff --git a/packages/sanity/src/core/store/bundles/reducer.ts b/packages/sanity/src/core/store/bundles/reducer.ts
index 11236b16db87..c82b00455136 100644
--- a/packages/sanity/src/core/store/bundles/reducer.ts
+++ b/packages/sanity/src/core/store/bundles/reducer.ts
@@ -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,
diff --git a/packages/sanity/src/structure/panes/document/documentPanel/DocumentPanel.tsx b/packages/sanity/src/structure/panes/document/documentPanel/DocumentPanel.tsx
index 1d6b9f93c438..eece6a48f2c4 100644
--- a/packages/sanity/src/structure/panes/document/documentPanel/DocumentPanel.tsx
+++ b/packages/sanity/src/structure/panes/document/documentPanel/DocumentPanel.tsx
@@ -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 {
@@ -137,7 +137,7 @@ export const DocumentPanel = function DocumentPanel(props: DocumentPanelProps) {
/>
-
+
>
)
}, [activeView.type, isPermissionsLoading, permissions?.granted, ready, requiredPermission])
diff --git a/packages/sanity/src/structure/panes/document/documentPanel/banners/DeletedBundleBanner.tsx b/packages/sanity/src/structure/panes/document/documentPanel/banners/DeletedBundleBanner.tsx
deleted file mode 100644
index f6feca482070..000000000000
--- a/packages/sanity/src/structure/panes/document/documentPanel/banners/DeletedBundleBanner.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import {ReadOnlyIcon} from '@sanity/icons'
-import {Text} from '@sanity/ui'
-import {useEffect, useState} from 'react'
-import {LATEST, Translate, usePerspective, useTranslation} from 'sanity'
-
-import {useBundles} from '../../../../../core/store'
-import {Banner} from './Banner'
-import {DeletedDocumentBanner} from './DeletedDocumentBanner'
-
-export const DeletedBundleBanner = () => {
- const {currentGlobalBundle} = usePerspective()
- const {data: bundles, deletedBundles} = useBundles()
- const {t} = useTranslation()
- const {slug: currentGlobalBundleSlug} = currentGlobalBundle
- const [checkedOutBundleSlug, setCheckedOutBundleSlug] = useState(
- currentGlobalBundleSlug,
- )
-
- /**
- * refactor so that DeletedDocumentBanner is entry point
- * and then check if it was actually a deleted bundle in there
- */
-
- useEffect(() => {
- if (currentGlobalBundleSlug !== LATEST.slug) {
- setCheckedOutBundleSlug(currentGlobalBundleSlug)
- }
- }, [currentGlobalBundleSlug, setCheckedOutBundleSlug])
-
- if (!checkedOutBundleSlug || !Object.keys(deletedBundles).length || !bundles?.length)
- return
-
- const hasCheckedOutBundleBeenDeleted = Boolean(deletedBundles[checkedOutBundleSlug])
- if (!hasCheckedOutBundleBeenDeleted) return
-
- const {title: deletedBundleTitle} = deletedBundles[checkedOutBundleSlug]
-
- return (
-
-
-
- }
- data-testid="deleted-bundle-banner"
- icon={ReadOnlyIcon}
- />
- )
-}
diff --git a/packages/sanity/src/structure/panes/document/documentPanel/banners/DeletedDocumentBanner.tsx b/packages/sanity/src/structure/panes/document/documentPanel/banners/DeletedDocumentBanner.tsx
index 7686b604ca2e..f4e3284b5410 100644
--- a/packages/sanity/src/structure/panes/document/documentPanel/banners/DeletedDocumentBanner.tsx
+++ b/packages/sanity/src/structure/panes/document/documentPanel/banners/DeletedDocumentBanner.tsx
@@ -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(
+ 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
+
+ if (isDeleted && !isDeleting) return
+}
+
+function DeletedDocumentBanner() {
+ const {documentId, documentType, timelineStore} = useDocumentPane()
const {restore} = useDocumentOperation(documentId, documentType)
const {navigateIntent} = useRouter()
const lastNonDeletedRevId = useTimelineSelector(
@@ -25,10 +64,6 @@ export function DeletedDocumentBanner() {
const {t} = useTranslation(structureLocaleNamespace)
- if (!isDeleted || isDeleting) {
- return null
- }
-
return (
)
}
+
+const DeletedBundleBanner = ({deletedBundle}: {deletedBundle: BundleDocument}) => {
+ const {t} = useTranslation()
+
+ const {title: deletedBundleTitle} = deletedBundle
+
+ return (
+
+
+
+ }
+ data-testid="deleted-bundle-banner"
+ icon={ReadOnlyIcon}
+ />
+ )
+}