Merge pull request #985 from logseq/fix/preserve-edn-order

fix: preserve config.file order when updating
pull/989/head
Michael Wong 2020-12-23 11:08:37 +08:00 committed by GitHub
commit ccf85e2e37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 24 deletions

View File

@ -12,6 +12,8 @@
datascript-transit/datascript-transit
{:mvn/version "0.3.0"
:exclusions [datascript]}
borkdude/rewrite-edn {:git/url "https://github.com/borkdude/rewrite-edn"
:sha "edd87dc7f045f28d7afcbfc44bc0f0a2683dde62"}
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.spec :as spec]))
@ -493,26 +492,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}]