From 61379e431115ab9d7c200852afcccf6ab94064d5 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Fri, 6 Nov 2020 17:42:08 +0100 Subject: check for null local/session storage fixes #3156 --- client/src/root-helpers/peertube-web-storage.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/client/src/root-helpers/peertube-web-storage.ts b/client/src/root-helpers/peertube-web-storage.ts index 0db1301bd..f29845443 100644 --- a/client/src/root-helpers/peertube-web-storage.ts +++ b/client/src/root-helpers/peertube-web-storage.ts @@ -64,10 +64,8 @@ class MemoryStorage { let peertubeLocalStorage: Storage let peertubeSessionStorage: Storage -try { - peertubeLocalStorage = localStorage - peertubeSessionStorage = sessionStorage -} catch (err) { + +function reinitStorage () { const instanceLocalStorage = new MemoryStorage() const instanceSessionStorage = new MemoryStorage() @@ -75,6 +73,19 @@ try { peertubeSessionStorage = proxify(instanceSessionStorage) } +try { + peertubeLocalStorage = localStorage + peertubeSessionStorage = sessionStorage +} catch (err) { + // support Firefox and other browsers using an exception rather than null + reinitStorage() +} + +// support Brave and other browsers using null rather than an exception +if (peertubeLocalStorage === null || peertubeSessionStorage === null) { + reinitStorage() +} + export { peertubeLocalStorage, peertubeSessionStorage -- cgit v1.2.3