@@ -13,10 +13,8 @@ import {
13
13
type ReleaseDocument ,
14
14
Translate ,
15
15
useActiveReleases ,
16
- useArchivedReleases ,
17
16
useDateTimeFormat ,
18
17
type UseDateTimeFormatOptions ,
19
- useDocumentVersions ,
20
18
usePerspective ,
21
19
useSchema ,
22
20
useSetPerspective ,
@@ -26,14 +24,9 @@ import {
26
24
import { usePaneRouter } from 'sanity/structure'
27
25
28
26
import { isLiveEditEnabled } from '../../../../../components/paneItem/helpers'
27
+ import { useFilteredReleases } from '../../../../../hooks/useFilteredReleases'
29
28
import { useDocumentPane } from '../../../useDocumentPane'
30
29
31
- type FilterReleases = {
32
- notCurrentReleases : ReleaseDocument [ ]
33
- currentReleases : ReleaseDocument [ ]
34
- inCreation : ReleaseDocument | null
35
- }
36
-
37
30
const TooltipContent = ( { release} : { release : ReleaseDocument } ) => {
38
31
const { t} = useTranslation ( )
39
32
@@ -85,62 +78,11 @@ export const DocumentPerspectiveList = memo(function DocumentPerspectiveList() {
85
78
const setPerspective = useSetPerspective ( )
86
79
const { params} = usePaneRouter ( )
87
80
const dateTimeFormat = useDateTimeFormat ( DATE_TIME_FORMAT )
88
- const { data : releases , loading} = useActiveReleases ( )
89
- const { data : archivedReleases } = useArchivedReleases ( )
81
+ const { loading} = useActiveReleases ( )
90
82
const schema = useSchema ( )
91
83
const { editState, displayed, documentType, documentId} = useDocumentPane ( )
92
- const { data : documentVersions } = useDocumentVersions ( { documentId} )
93
84
const isCreatingDocument = displayed && ! displayed . _createdAt
94
-
95
- const filteredReleases : FilterReleases = useMemo ( ( ) => {
96
- if ( ! documentVersions ) return { notCurrentReleases : [ ] , currentReleases : [ ] , inCreation : null }
97
- // Gets the releases ids from the document versions, it means, the releases that the document belongs to
98
- const releasesIds = documentVersions . map ( ( id ) => getVersionFromId ( id ) )
99
- const activeReleases = releases . reduce (
100
- ( acc : FilterReleases , release ) => {
101
- const versionDocExists = releasesIds . includes (
102
- getReleaseIdFromReleaseDocumentId ( release . _id ) ,
103
- )
104
- const releaseId = getReleaseIdFromReleaseDocumentId ( release . _id )
105
- const isCreatingThisVersion =
106
- isCreatingDocument &&
107
- releaseId === getVersionFromId ( displayed . _id || '' ) &&
108
- releaseId === selectedReleaseId
109
-
110
- if ( isCreatingThisVersion ) {
111
- acc . inCreation = release
112
- } else if ( versionDocExists ) {
113
- acc . currentReleases . push ( release )
114
- } else {
115
- acc . notCurrentReleases . push ( release )
116
- }
117
- return acc
118
- } ,
119
- { notCurrentReleases : [ ] , currentReleases : [ ] , inCreation : null } ,
120
- )
121
-
122
- // without historyVersion, version is not in an archived release
123
- if ( ! params ?. historyVersion ) return activeReleases
124
-
125
- const archivedRelease = archivedReleases . find (
126
- ( r ) => getReleaseIdFromReleaseDocumentId ( r . _id ) === params ?. historyVersion ,
127
- )
128
-
129
- // only for explicitly archived releases; published releases use published perspective
130
- if ( archivedRelease ?. state === 'archived' ) {
131
- activeReleases . currentReleases . push ( archivedRelease )
132
- }
133
-
134
- return activeReleases
135
- } , [
136
- archivedReleases ,
137
- isCreatingDocument ,
138
- displayed ?. _id ,
139
- documentVersions ,
140
- params ?. historyVersion ,
141
- releases ,
142
- selectedReleaseId ,
143
- ] )
85
+ const filteredReleases = useFilteredReleases ( { displayed, documentId} )
144
86
145
87
const handlePerspectiveChange = useCallback (
146
88
( perspective : Parameters < typeof setPerspective > [ 0 ] ) => ( ) => {
0 commit comments