Spaces:
Running
Running
Commit ·
a5c4b2c
1
Parent(s): 85eb22c
feat: persist doc/page selection across refreshes via sessionStorage
Browse files- app/page.js +20 -3
app/page.js
CHANGED
|
@@ -50,8 +50,19 @@ export default function Home() {
|
|
| 50 |
.then(data => {
|
| 51 |
setDocuments(data);
|
| 52 |
if (data.length > 0) {
|
| 53 |
-
|
| 54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
}
|
| 56 |
setLoading(false);
|
| 57 |
})
|
|
@@ -78,14 +89,20 @@ export default function Home() {
|
|
| 78 |
}
|
| 79 |
}, []);
|
| 80 |
|
| 81 |
-
// Update currentDoc when selection changes
|
| 82 |
useEffect(() => {
|
| 83 |
if (selectedDocIndex !== null) {
|
| 84 |
const doc = documents.find(d => d.index === selectedDocIndex);
|
| 85 |
setCurrentDoc(doc);
|
|
|
|
| 86 |
}
|
| 87 |
}, [selectedDocIndex, documents]);
|
| 88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
// Fetch page data (reusable — called on page change and after saving)
|
| 90 |
const refreshPageData = useCallback(() => {
|
| 91 |
if (selectedDocIndex !== null && currentPageNumber !== null) {
|
|
|
|
| 50 |
.then(data => {
|
| 51 |
setDocuments(data);
|
| 52 |
if (data.length > 0) {
|
| 53 |
+
// Restore saved position from sessionStorage
|
| 54 |
+
const savedDoc = sessionStorage.getItem('selectedDocIndex');
|
| 55 |
+
const savedPage = sessionStorage.getItem('pageIdx');
|
| 56 |
+
const docIdx = savedDoc ? parseInt(savedDoc, 10) : null;
|
| 57 |
+
const restoredDoc = docIdx !== null && data.find(d => d.index === docIdx);
|
| 58 |
+
|
| 59 |
+
if (restoredDoc) {
|
| 60 |
+
setSelectedDocIndex(docIdx);
|
| 61 |
+
setPageIdx(savedPage ? parseInt(savedPage, 10) : 0);
|
| 62 |
+
} else {
|
| 63 |
+
setSelectedDocIndex(data[0].index);
|
| 64 |
+
setPageIdx(0);
|
| 65 |
+
}
|
| 66 |
}
|
| 67 |
setLoading(false);
|
| 68 |
})
|
|
|
|
| 89 |
}
|
| 90 |
}, []);
|
| 91 |
|
| 92 |
+
// Update currentDoc when selection changes + persist to sessionStorage
|
| 93 |
useEffect(() => {
|
| 94 |
if (selectedDocIndex !== null) {
|
| 95 |
const doc = documents.find(d => d.index === selectedDocIndex);
|
| 96 |
setCurrentDoc(doc);
|
| 97 |
+
sessionStorage.setItem('selectedDocIndex', selectedDocIndex);
|
| 98 |
}
|
| 99 |
}, [selectedDocIndex, documents]);
|
| 100 |
|
| 101 |
+
// Persist pageIdx to sessionStorage
|
| 102 |
+
useEffect(() => {
|
| 103 |
+
sessionStorage.setItem('pageIdx', pageIdx);
|
| 104 |
+
}, [pageIdx]);
|
| 105 |
+
|
| 106 |
// Fetch page data (reusable — called on page change and after saving)
|
| 107 |
const refreshPageData = useCallback(() => {
|
| 108 |
if (selectedDocIndex !== null && currentPageNumber !== null) {
|