rafmacalaba commited on
Commit
a5c4b2c
·
1 Parent(s): 85eb22c

feat: persist doc/page selection across refreshes via sessionStorage

Browse files
Files changed (1) hide show
  1. 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
- setSelectedDocIndex(data[0].index);
54
- setPageIdx(0);
 
 
 
 
 
 
 
 
 
 
 
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) {