Skip to content

Commit

Permalink
Safely serialize local-storage values
Browse files Browse the repository at this point in the history
  • Loading branch information
kimo-k committed Jul 26, 2023
1 parent 2eda4a0 commit 911dc5d
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/day8/re_frame_10x/fx/local_storage.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
[goog.testing.storage.FakeMechanism]
[cljs.reader :as reader]
[clojure.string :as string]
[day8.re-frame-10x.tools.datafy :as tools.datafy]
[day8.re-frame-10x.inlined-deps.re-frame.v1v1v2.re-frame.core :as rf]))

(def storage-mechanism
Expand Down Expand Up @@ -53,14 +54,14 @@
([key]
(rf/after
(fn [db]
(.set storage (safe-key key) (pr-str db)))))
(.set storage (safe-key key) (tools.datafy/pr-str-safe db)))))
([key & ks]
(rf/after
(fn [db]
(run!
(fn [k]
(let [v (if (vector? k) (get-in db k) (get db k))]
(.set storage (safe-key key) (pr-str v))))
(.set storage (safe-key key) (tools.datafy/pr-str-safe v))))
ks)))))

(rf/reg-cofx
Expand Down
7 changes: 7 additions & 0 deletions src/day8/re_frame_10x/tools/datafy.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,10 @@
(walk/postwalk
#(cond-> %
(keyword? %) (alias ns->alias)))))

(defn pr-str-safe [value]
(pr-str-with-opts [value] {:flush-on-newline true
:print-readably true
:print-meta false
:print-length nil
:print-level nil}))

0 comments on commit 911dc5d

Please sign in to comment.