Fix broken client when cookies are disabled
authorChocobozzz <me@florianbigard.com>
Wed, 20 May 2020 08:37:46 +0000 (10:37 +0200)
committerChocobozzz <me@florianbigard.com>
Wed, 20 May 2020 08:37:46 +0000 (10:37 +0200)
client/src/app/shared/misc/peertube-web-storage.ts

index fff2096784a8c75fe8974305b9ff072b97bf4274..6a152dd988bb3c77cf02c5b3eb70e82538775b5a 100644 (file)
@@ -47,26 +47,32 @@ try {
   peertubeLocalStorage = localStorage
   peertubeSessionStorage = sessionStorage
 } catch (err) {
-  const instance = new MemoryStorage()
+  const instanceLocalStorage = new MemoryStorage()
+  const instanceSessionStorage = new MemoryStorage()
 
-  peertubeLocalStorage = sessionStorage = new Proxy(instance, {
-    set: function (obj, prop: string | number, value) {
-      if (MemoryStorage.prototype.hasOwnProperty(prop)) {
-        instance[prop] = value
-      } else {
-        instance.setItem(prop, value)
+  function proxify (instance: MemoryStorage) {
+    return new Proxy(instance, {
+      set: function (obj, prop: string | number, value) {
+        if (MemoryStorage.prototype.hasOwnProperty(prop)) {
+          instance[prop] = value
+        } else {
+          instance.setItem(prop, value)
+        }
+        return true
+      },
+      get: function (target, name: string | number) {
+        if (MemoryStorage.prototype.hasOwnProperty(name)) {
+          return instance[name]
+        }
+        if (valuesMap.has(name)) {
+          return instance.getItem(name)
+        }
       }
-      return true
-    },
-    get: function (target, name: string | number) {
-      if (MemoryStorage.prototype.hasOwnProperty(name)) {
-        return instance[name]
-      }
-      if (valuesMap.has(name)) {
-        return instance.getItem(name)
-      }
-    }
-  })
+    })
+  }
+
+  peertubeLocalStorage = proxify(instanceLocalStorage)
+  peertubeSessionStorage = proxify(instanceSessionStorage)
 }
 
 export {