Просмотр исходного кода

Gracefully handle SecurityError exception if localStorage is unavailable (#3775)

* Gracefully handle SecurityError exception if localStorage is unavailable

* use Map()

Co-authored-by: Eric Kwoka <43540491+ekwoka@users.noreply.github.com>

* wip

---------

Co-authored-by: Eric Kwoka <43540491+ekwoka@users.noreply.github.com>
Co-authored-by: Caleb Porzio <calebporzio@gmail.com>
Shaun Dychko 1 год назад
Родитель
Сommit
f66804f92c
1 измененных файлов с 15 добавлено и 1 удалено
  1. 15 1
      packages/persist/src/index.js

+ 15 - 1
packages/persist/src/index.js

@@ -1,7 +1,21 @@
 export default function (Alpine) {
     let persist = () => {
         let alias
-        let storage = localStorage
+        let storage
+
+        try {
+            storage = localStorage
+        } catch (e) {
+            console.error(e)
+            console.warn('Alpine: $persist is using temporary storage since localStorage is unavailable.')
+
+            let dummy = new Map();
+
+            storage = {
+                getItem: dummy.get.bind(dummy),
+                setItem: dummy.set.bind(dummy)
+            }
+        }
 
         return Alpine.interceptor((initialValue, getter, setter, path, key) => {
             let lookup = alias || `_x_${path}`