diff --git a/bb.edn b/bb.edn index 897747f..2bad91e 100644 --- a/bb.edn +++ b/bb.edn @@ -1,4 +1,4 @@ -{:deps {com.github.hephaistox/auto-build {:git/sha "740a55bfdeca371fffda8ae96f7dbab16072052b"}} +{:deps {com.github.hephaistox/auto-build {:git/sha "58d0992fdf43313238153f369f1a6d8f27e26189"}} :paths [] :tasks {:requires [[auto-build.os.exit-codes] [auto-build.os.exiting :refer [exit]]] @@ -73,4 +73,4 @@ :override-builtin true :requires [[auto-build.tasks.repl :as build-repl] [auto-build.echo :refer [level1-header]]] :task (-> (build-repl/repl level1-header "." (current-task) [:cljs-deps] 7006) - exit)}}} \ No newline at end of file + exit)}}} diff --git a/deps.edn b/deps.edn index a5e469d..6433baf 100644 --- a/deps.edn +++ b/deps.edn @@ -23,7 +23,7 @@ ["-m" "cognitect.test-runner" "-r" ".*-test.*" "-d" "test/clj" "test/cljc"]}} :deps {amalloy/ring-gzip-middleware {:mvn/version "0.1.4"} clj-http/clj-http {:mvn/version "3.13.0"} - com.github.hephaistox/auto-core {:git/sha "70c0de7cfc2898a76ed607814f58b45cb98c7936"} + com.github.hephaistox/auto-core {:git/sha "0ef4d2d22532986f6533b19d09e00d28e0a7aa75"} com.taoensso/sente {:mvn/version "1.20.0"} hiccup/hiccup {:mvn/version "2.0.0-RC5"} http-kit/http-kit {:mvn/version "2.8.0"} @@ -36,4 +36,4 @@ ring/ring-anti-forgery {:mvn/version "1.4.0"} ring/ring-headers {:mvn/version "0.4.0"} ring/ring-ssl {:mvn/version "0.4.0"}} - :paths ["src/clj" "src/cljc" "resources"]} \ No newline at end of file + :paths ["src/clj" "src/cljc" "resources"]} diff --git a/package-lock.json b/package-lock.json index 8934788..7d84a4a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1", "license": "MIT", "dependencies": { - "create-react-class": "15.6.3", + "create-react-class": "15.7.0", "react": "16.13.1", "react-dom": "16.13.1" }, @@ -21,12 +21,6 @@ "source-map-support": "^0.5.21" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT" - }, "node_modules/asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", @@ -306,13 +300,6 @@ "dev": true, "license": "MIT" }, - "node_modules/core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "license": "MIT" - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -368,12 +355,11 @@ } }, "node_modules/create-react-class": { - "version": "15.6.3", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", - "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", + "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==", "license": "MIT", "dependencies": { - "fbjs": "^0.8.9", "loose-envify": "^1.3.1", "object-assign": "^4.1.1" } @@ -520,15 +506,6 @@ "dev": true, "license": "MIT" }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -583,21 +560,6 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/fbjs": { - "version": "0.8.18", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz", - "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==", - "license": "MIT", - "dependencies": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.30" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -753,18 +715,6 @@ "dev": true, "license": "MIT" }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -793,15 +743,6 @@ "dev": true, "license": "ISC" }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -816,16 +757,6 @@ "dev": true, "license": "ISC" }, - "node_modules/isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", - "license": "MIT", - "dependencies": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -914,16 +845,6 @@ "dev": true, "license": "MIT" }, - "node_modules/node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "license": "MIT", - "dependencies": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, "node_modules/node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -1082,15 +1003,6 @@ "dev": true, "license": "MIT" }, - "node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "license": "MIT", - "dependencies": { - "asap": "~2.0.3" - } - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -1314,12 +1226,6 @@ ], "license": "MIT" }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, "node_modules/scheduler": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", @@ -1352,6 +1258,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, "license": "MIT" }, "node_modules/sha.js": { @@ -1575,32 +1482,6 @@ "dev": true, "license": "MIT" }, - "node_modules/ua-parser-js": { - "version": "0.7.40", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.40.tgz", - "integrity": "sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "license": "MIT", - "bin": { - "ua-parser-js": "script/cli.js" - }, - "engines": { - "node": "*" - } - }, "node_modules/url": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", @@ -1646,12 +1527,6 @@ "dev": true, "license": "MIT" }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "license": "MIT" - }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/package.json b/package.json index afd3954..e16cdec 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "source-map-support": "^0.5.21" }, "dependencies": { - "create-react-class": "15.6.3", + "create-react-class": "15.7.0", "react": "16.13.1", "react-dom": "16.13.1" } diff --git a/src/cljc/auto_web/components/lang.cljc b/src/cljc/auto_web/components/lang.cljc index b633f25..58fa032 100644 --- a/src/cljc/auto_web/components/lang.cljc +++ b/src/cljc/auto_web/components/lang.cljc @@ -1,13 +1,13 @@ (ns auto-web.components.lang "Language based components" (:require - #?(:cljs [auto-web.local-storage :refer [set-item!]] + #?(:cljs [auto-web.local-storage :refer [set-ls!]] :clj [auto-web.http-request.lang :refer [update-cookie-language]]))) #?(:cljs (defn- update-lang-opts [on-lang-change l] - {:on-click #(do (set-item! :lang l) (when on-lang-change (on-lang-change l)))}) + {:on-click #(do (set-ls! :lang l) (when on-lang-change (on-lang-change l)))}) :clj (defn- update-lang-opts [_ l] {:onclick (update-cookie-language l)})) (defn clang-bar diff --git a/src/cljs/auto_web/lang_fe.cljs b/src/cljs/auto_web/lang_fe.cljs index 525317d..20353ad 100644 --- a/src/cljs/auto_web/lang_fe.cljs +++ b/src/cljs/auto_web/lang_fe.cljs @@ -10,7 +10,7 @@ * Then, the language stored in the js. * In worst case, the `:en` language" [] - (let [ls-lang (wlocal-storage/get-item :lang) + (let [ls-lang (wlocal-storage/get-ls :lang) server-accepted-lang js/lang] (cond (some? ls-lang) (keyword ls-lang) diff --git a/src/cljs/auto_web/local_storage.cljs b/src/cljs/auto_web/local_storage.cljs index 2e939fd..b043235 100644 --- a/src/cljs/auto_web/local_storage.cljs +++ b/src/cljs/auto_web/local_storage.cljs @@ -1,16 +1,30 @@ -(ns auto-web.local-storage) +(ns auto-web.local-storage + "Provide data persistance in local storage for clojurescript." + (:require + [re-frame.core :as rf])) -(defn set-item! +(defn set-ls! "Set `key` in browser's localStorage to `val`." [key val] - (.setItem (.-localStorage js/window) key val)) + (.setItem js/localStorage key (js/JSON.stringify (clj->js val)))) -(defn get-item +(defn get-ls "Returns value of `key` from browser's localStorage." [key] - (.getItem (.-localStorage js/window) key)) + (some-> (.getItem js/localStorage key) + (js/JSON.parse) + (js->clj :keywordize-keys true))) (defn remove-item! "Remove the browser's localStorage value for the given `key`" [key] (.removeItem (.-localStorage js/window) key)) + +(comment + (set-ls! "cooc" + {:a 12 + :b "foo"}) + (get-ls "cooc") + (rf/dispatch [::save-to-ls [:auto-sim.canvas/canvas :canvas-1]]) + ; +)