@@ -44,16 +44,16 @@ export const Content = () => {
44
44
versionId : selectedVersion ?? '' ,
45
45
} ) ;
46
46
47
+ // Simplified version ID and URL handling
47
48
useEffect ( ( ) => {
48
- const versionId = selectedVersion ?? data ?. versions ?. [ 0 ] ?. versionId ;
49
- if ( versionId ) {
50
- if ( ! selectedVersion ) {
51
- setSelectedVersion ( versionId ) ;
52
- }
53
- const newUrl = `${ xpArchiveConfig . basePath } /${ selectedContentId } /${ selectedLocale } /${ versionId } ` ;
49
+ if ( ! selectedVersion && data ?. versions ?. [ 0 ] ) {
50
+ setSelectedVersion ( data . versions [ 0 ] . versionId ) ;
51
+ }
52
+ if ( selectedContentId && selectedLocale && selectedVersion ) {
53
+ const newUrl = `${ xpArchiveConfig . basePath } /${ selectedContentId } /${ selectedLocale } /${ selectedVersion } ` ;
54
54
window . history . replaceState ( { } , '' , newUrl ) ;
55
55
}
56
- } , [ data , selectedContentId , selectedLocale , selectedVersion ] ) ;
56
+ } , [ data ?. versions , selectedContentId , selectedLocale , selectedVersion ] ) ;
57
57
58
58
const isWebpage = ! ! data ?. html && ! data . json . attachment ;
59
59
const hasAttachment = ! ! data ?. json . attachment ;
@@ -71,7 +71,7 @@ export const Content = () => {
71
71
} ;
72
72
} ) ;
73
73
74
- // Update cache when content ID changes or new versions arrive
74
+ // Single effect for cache management
75
75
useEffect ( ( ) => {
76
76
if ( prevContentIdRef . current && prevContentIdRef . current !== selectedContentId ) {
77
77
clearCachedVersionSelector ( prevContentIdRef . current ) ;
@@ -81,7 +81,7 @@ export const Content = () => {
81
81
setVersionSelectorCache ( ( prev ) => ( {
82
82
component : null ,
83
83
versions : data . versions ,
84
- isOpen : prev . isOpen , // Always preserve open state
84
+ isOpen : prev . isOpen ,
85
85
} ) ) ;
86
86
}
87
87
@@ -130,16 +130,11 @@ export const Content = () => {
130
130
{ getVersionDisplay ( ) }
131
131
</ Button >
132
132
133
- { /* Render either the cached component or a new VersionSelector */ }
134
133
{ versionSelectorCache . component ? (
135
134
versionSelectorCache . component
136
135
) : (
137
136
< VersionSelector
138
- versions = {
139
- versionSelectorCache . versions . length > 0
140
- ? versionSelectorCache . versions
141
- : data ?. versions || [ ]
142
- }
137
+ versions = { data ?. versions || [ ] }
143
138
isOpen = { versionSelectorCache . isOpen }
144
139
onClose = { ( ) => {
145
140
setVersionSelectorCache ( ( prev ) => ( {
@@ -148,13 +143,10 @@ export const Content = () => {
148
143
} ) ) ;
149
144
} }
150
145
onMount = { ( component ) => {
151
- // Cache the rendered component with the content ID
152
146
setCachedVersionSelector (
153
147
selectedContentId || '' ,
154
148
component ,
155
- versionSelectorCache . versions . length > 0
156
- ? versionSelectorCache . versions
157
- : data ?. versions || [ ] ,
149
+ data ?. versions || [ ] ,
158
150
versionSelectorCache . isOpen
159
151
) ;
160
152
} }
0 commit comments