Wrap localStorage JSON.parse in try-catch in cytoscapeMap

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-09 14:10:17 +08:00
parent 2a2eeabac7
commit 63fa11c44e

View File

@@ -328,26 +328,26 @@ export default function cytoscapeMap(
cytoscapeStore.loadPositionsFromStorage(rank); cytoscapeStore.loadPositionsFromStorage(rank);
// Check if localStorage has previously saved visit data. // Check if localStorage has previously saved visit data.
// If saved node positions exist, restore them for rendering. // If saved node positions exist, restore them for rendering.
if ( try {
localStorage.getItem(SAVE_KEY_NAME) && const raw = localStorage.getItem(SAVE_KEY_NAME);
JSON.parse(localStorage.getItem(SAVE_KEY_NAME)) if (raw) {
) { const allGraphsRemembered = JSON.parse(raw);
const allGraphsRemembered = JSON.parse( const currentGraphNodesRemembered = allGraphsRemembered[
localStorage.getItem(SAVE_KEY_NAME), cytoscapeStore.currentGraphId
); ]
const currentGraphNodesRemembered = allGraphsRemembered[ ? allGraphsRemembered[cytoscapeStore.currentGraphId][rank]
cytoscapeStore.currentGraphId : null; // May be undefined
] if (currentGraphNodesRemembered) {
? allGraphsRemembered[cytoscapeStore.currentGraphId][rank] currentGraphNodesRemembered.forEach((nodeRemembered) => {
: null; // May be undefined const nodeToDecide = cy.getElementById(nodeRemembered.id);
if (currentGraphNodesRemembered) { if (nodeToDecide) {
currentGraphNodesRemembered.forEach((nodeRemembered) => { nodeToDecide.position(nodeRemembered.position);
const nodeToDecide = cy.getElementById(nodeRemembered.id); }
if (nodeToDecide) { });
nodeToDecide.position(nodeRemembered.position); }
}
});
} }
} catch {
// Corrupted localStorage data; ignore and use defaults
} }
// Save the current positions of all nodes when the view is first entered // Save the current positions of all nodes when the view is first entered
const allNodes = cy.nodes(); const allNodes = cy.nodes();