Wrap localStorage API Access in try-catch (#1241)

pull/1294/head
Shriram Balaji 5 years ago committed by GitHub
parent 2cc1105ff5
commit 22160f50d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -81,8 +81,12 @@ export class TopErrorBoundary extends React.Component<
{t("errorSplash.clearCanvasMessage")}
<button
onClick={() => {
localStorage.clear();
window.location.reload();
try {
localStorage.clear();
window.location.reload();
} catch (error) {
console.error(error);
}
}}
>
{t("errorSplash.clearCanvasMessage_button")}

@ -10,19 +10,32 @@ export function saveToLocalStorage(
elements: readonly ExcalidrawElement[],
appState: AppState,
) {
localStorage.setItem(
LOCAL_STORAGE_KEY,
JSON.stringify(elements.filter((element) => !element.isDeleted)),
);
localStorage.setItem(
LOCAL_STORAGE_KEY_STATE,
JSON.stringify(clearAppStateForLocalStorage(appState)),
);
try {
localStorage.setItem(
LOCAL_STORAGE_KEY,
JSON.stringify(elements.filter((element) => !element.isDeleted)),
);
localStorage.setItem(
LOCAL_STORAGE_KEY_STATE,
JSON.stringify(clearAppStateForLocalStorage(appState)),
);
} catch (error) {
// Unable to access window.localStorage
console.error(error);
}
}
export function restoreFromLocalStorage() {
const savedElements = localStorage.getItem(LOCAL_STORAGE_KEY);
const savedState = localStorage.getItem(LOCAL_STORAGE_KEY_STATE);
let savedElements = null;
let savedState = null;
try {
savedElements = localStorage.getItem(LOCAL_STORAGE_KEY);
savedState = localStorage.getItem(LOCAL_STORAGE_KEY_STATE);
} catch (error) {
// Unable to access localStorage
console.error(error);
}
let elements = [];
if (savedElements) {

Loading…
Cancel
Save