Skip to content

Commit cafcab8

Browse files
committed
Revert "Refactor URL and version handling in Content component"
This reverts commit cf0aa3e.
1 parent cf0aa3e commit cafcab8

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

xp-archive/client/content/Content.tsx

+19-11
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,16 @@ export const Content = () => {
4444
versionId: selectedVersion ?? '',
4545
});
4646

47-
// Simplified version ID and URL handling
4847
useEffect(() => {
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}`;
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}`;
5454
window.history.replaceState({}, '', newUrl);
5555
}
56-
}, [data?.versions, selectedContentId, selectedLocale, selectedVersion]);
56+
}, [data, selectedContentId, selectedLocale, selectedVersion]);
5757

5858
const isWebpage = !!data?.html && !data.json.attachment;
5959
const hasAttachment = !!data?.json.attachment;
@@ -71,7 +71,7 @@ export const Content = () => {
7171
};
7272
});
7373

74-
// Single effect for cache management
74+
// Update cache when content ID changes or new versions arrive
7575
useEffect(() => {
7676
if (prevContentIdRef.current && prevContentIdRef.current !== selectedContentId) {
7777
clearCachedVersionSelector(prevContentIdRef.current);
@@ -81,7 +81,7 @@ export const Content = () => {
8181
setVersionSelectorCache((prev) => ({
8282
component: null,
8383
versions: data.versions,
84-
isOpen: prev.isOpen,
84+
isOpen: prev.isOpen, // Always preserve open state
8585
}));
8686
}
8787

@@ -130,11 +130,16 @@ export const Content = () => {
130130
{getVersionDisplay()}
131131
</Button>
132132

133+
{/* Render either the cached component or a new VersionSelector */}
133134
{versionSelectorCache.component ? (
134135
versionSelectorCache.component
135136
) : (
136137
<VersionSelector
137-
versions={data?.versions || []}
138+
versions={
139+
versionSelectorCache.versions.length > 0
140+
? versionSelectorCache.versions
141+
: data?.versions || []
142+
}
138143
isOpen={versionSelectorCache.isOpen}
139144
onClose={() => {
140145
setVersionSelectorCache((prev) => ({
@@ -143,10 +148,13 @@ export const Content = () => {
143148
}));
144149
}}
145150
onMount={(component) => {
151+
// Cache the rendered component with the content ID
146152
setCachedVersionSelector(
147153
selectedContentId || '',
148154
component,
149-
data?.versions || [],
155+
versionSelectorCache.versions.length > 0
156+
? versionSelectorCache.versions
157+
: data?.versions || [],
150158
versionSelectorCache.isOpen
151159
);
152160
}}

0 commit comments

Comments
 (0)