diff --git a/deps.edn b/deps.edn index 0bd19893a0..30c7e7a8b9 100755 --- a/deps.edn +++ b/deps.edn @@ -12,6 +12,10 @@ datascript-transit/datascript-transit {:mvn/version "0.3.0" :exclusions [datascript]} + lread/rewrite-cljc {:git/url "https://github.com/lread/rewrite-cljc-playground" + :sha "ba1e4255cd1c1fd09dbe2e90556bfa66d5459234"} + borkdude/rewrite-edn {:git/url "https://github.com/tiensonqin/rewrite-edn" + :sha "b54f2f7528412979795167b342af6b03ba1a1cde"} funcool/promesa {:mvn/version "4.0.2"} medley/medley {:mvn/version "1.2.0"} metosin/reitit-frontend {:mvn/version "0.3.10"} diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index a52400d430..e1e971bd7d 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -183,7 +183,7 @@ (ui/toggle enable-timetracking? (fn [] (let [value (not enable-timetracking?)] - (repo-handler/set-config! :feature/enable-timetracking? value))))]]] + (config-handler/set-config! :feature/enable-timetracking? value))))]]] [:hr] diff --git a/src/main/frontend/handler/config.cljs b/src/main/frontend/handler/config.cljs index 9fa5f7abca..fba6c5f6e0 100644 --- a/src/main/frontend/handler/config.cljs +++ b/src/main/frontend/handler/config.cljs @@ -1,7 +1,27 @@ (ns frontend.handler.config (:require [frontend.state :as state] - [frontend.handler.repo :as repo-handler])) + [frontend.handler.repo :as repo-handler] + [borkdude.rewrite-edn :as rewrite] + [frontend.config :as config] + [frontend.db :as db])) + +(defn set-config! + [k v] + (when-let [repo (state/get-current-repo)] + (let [path (str config/app-name "/" config/config-file)] + (when-let [config (db/get-file-no-sub path)] + (let [config (try + (rewrite/parse-string config) + (catch js/Error e + (println "Parsing config file failed: ") + (js/console.dir e) + {})) + ks (if (vector? k) k [k]) + new-config (rewrite/assoc-in config ks v)] + (state/set-config! repo new-config) + (let [new-content (str new-config)] + (repo-handler/set-config-content! repo path new-content))))))) (defn toggle-ui-show-brackets! [] (let [show-brackets? (state/show-brackets?)] - (repo-handler/set-config! :ui/show-brackets? (not show-brackets?)))) + (set-config! :ui/show-brackets? (not show-brackets?)))) diff --git a/src/main/frontend/handler/repo.cljs b/src/main/frontend/handler/repo.cljs index 4d3e91c888..fb94edfc82 100644 --- a/src/main/frontend/handler/repo.cljs +++ b/src/main/frontend/handler/repo.cljs @@ -21,7 +21,6 @@ [frontend.handler.common :as common-handler] [frontend.handler.extract :as extract-handler] [frontend.ui :as ui] - [cljs.reader :as reader] [clojure.string :as string] [frontend.dicts :as dicts] [frontend.helper :as helper] @@ -494,26 +493,9 @@ (show-install-error! repo-url (util/format "Failed to clone %s." repo-url))))))) (defn set-config-content! - [repo path new-config] - (let [new-content (util/pp-str new-config)] - (file-handler/alter-file repo path new-content {:reset? false - :re-render-root? false}))) - -(defn set-config! - [k v] - (when-let [repo (state/get-current-repo)] - (let [path (str config/app-name "/" config/config-file)] - (when-let [config (db/get-file-no-sub path)] - (let [config (try - (reader/read-string config) - (catch js/Error e - (println "Parsing config file failed: ") - (js/console.dir e) - {})) - ks (if (vector? k) k [k]) - new-config (assoc-in config ks v)] - (state/set-config! repo new-config) - (set-config-content! repo path new-config)))))) + [repo path new-content] + (file-handler/alter-file repo path new-content {:reset? false + :re-render-root? false})) (defn remove-repo! [{:keys [id url] :as repo}]