fix: preserve config.file order when updating

pull/985/head
Tienson Qin 2020-12-22 23:55:48 +08:00
parent 88b37d2d70
commit bc8463265d
4 changed files with 30 additions and 24 deletions

View File

@ -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"}

View File

@ -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]

View File

@ -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?))))

View File

@ -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}]