From a6500ba7111aab230e32334059fadcc0450f8ad6 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 21 Jun 2019 15:19:51 +0100 Subject: [PATCH] DynaView: Suppress local storage errors --- plugins/tiddlywiki/dynaview/dynaview.js | 36 ++++++++++++++----------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/plugins/tiddlywiki/dynaview/dynaview.js b/plugins/tiddlywiki/dynaview/dynaview.js index 4c0b846a8..271a41985 100644 --- a/plugins/tiddlywiki/dynaview/dynaview.js +++ b/plugins/tiddlywiki/dynaview/dynaview.js @@ -31,6 +31,8 @@ var LOCAL_STORAGE_KEY_PREFIX = "tw5-dynaview-scroll-position#"; var hasRestoredScrollPosition = false; +var localStorageHasFailed = false; + exports.startup = function() { var topmost = null, lastScrollY; $tw.boot.disableStartupNavigation = true; @@ -165,16 +167,18 @@ function updateAddressBar() { } function saveScrollPosition() { - if(hasRestoredScrollPosition && $tw.wiki.getTiddlerText("$:/config/DynaView/RestoreScrollPositionAtStartup") === "yes") { - var top = findTopmostTiddler(); - if(top.element) { - try { - window.localStorage.setItem(LOCAL_STORAGE_KEY_PREFIX + window.location.pathname,JSON.stringify({ - title: top.title, - offset: top.offset - })); - } catch(e) { - console.log("Error setting local storage",e) + if(!localStorageHasFailed) { + if(hasRestoredScrollPosition && $tw.wiki.getTiddlerText("$:/config/DynaView/RestoreScrollPositionAtStartup") === "yes") { + var top = findTopmostTiddler(); + if(top.element) { + try { + window.localStorage.setItem(LOCAL_STORAGE_KEY_PREFIX + window.location.pathname,JSON.stringify({ + title: top.title, + offset: top.offset + })); + } catch(e) { + localStorageHasFailed = true; + } } } } @@ -182,11 +186,13 @@ function saveScrollPosition() { function restoreScrollPosition() { var json; - try { - json = JSON.parse(window.localStorage.getItem(LOCAL_STORAGE_KEY_PREFIX + window.location.pathname)); - } catch(e) { - // Ignore errors - }; + if(!localStorageHasFailed) { + try { + json = JSON.parse(window.localStorage.getItem(LOCAL_STORAGE_KEY_PREFIX + window.location.pathname)); + } catch(e) { + localStorageHasFailed = true; + }; + } return json; }