From 553b1079b1f71644cf96119a8503961c1dcf9d84 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Sat, 7 Nov 2020 19:11:39 +0800 Subject: [PATCH] fix: respect user's preferred format for a specific repo --- resources/css/style.css | 2 +- src/main/frontend/handler/repo.cljs | 107 +++++++++++++--------------- src/main/frontend/state.cljs | 16 +++-- 3 files changed, 60 insertions(+), 65 deletions(-) diff --git a/resources/css/style.css b/resources/css/style.css index f6a056af8..a8911e323 100644 --- a/resources/css/style.css +++ b/resources/css/style.css @@ -3,7 +3,7 @@ @import "./reveal.min.css"; @import "./reveal_black.min.css"; @import "./katex.min.css"; -@import "./tailwind.build.css"; /* Build by gulp. Check `_buildTailwind` for more detail */ +@import "../../static/css/tailwind.build.css"; /* Build by gulp. Check `_buildTailwind` for more detail */ @import "./common.css"; @import "./datepicker.css"; @import "./highlight.css"; diff --git a/src/main/frontend/handler/repo.cljs b/src/main/frontend/handler/repo.cljs index 3bfd5a26e..8dc14eb01 100644 --- a/src/main/frontend/handler/repo.cljs +++ b/src/main/frontend/handler/repo.cljs @@ -29,59 +29,6 @@ ;; 1. User changes the config.edn directly in logseq.com (fn: alter-file) ;; 2. Git pulls the new change (fn: load-files) -(defn load-repo-to-db! - [repo-url diffs first-clone?] - (let [load-contents (fn [files delete-files delete-blocks re-render?] - (file-handler/load-files-contents! - repo-url - files - (fn [contents] - (state/set-state! :repo/loading-files? false) - (state/set-state! :repo/importing-to-db? true) - (let [parsed-files (filter - (fn [[file _]] - (let [format (format/get-format file)] - (contains? config/mldoc-support-formats format))) - contents) - blocks-pages (if (seq parsed-files) - (db/extract-all-blocks-pages repo-url parsed-files) - [])] - (db/reset-contents-and-blocks! repo-url contents blocks-pages delete-files delete-blocks) - (let [config-file (str config/app-name "/" config/config-file)] - (when (contains? (set files) config-file) - (when-let [content (get contents config-file)] - (file-handler/restore-config! repo-url content true)))) - ;; (let [metadata-file (str config/app-name "/" config/metadata-file)] - ;; (when (contains? (set files) metadata-file) - ;; (when-let [content (get contents metadata-file)] - ;; (let [{:keys [tx-data]} (reader/read-string content)] - ;; (db/transact! repo-url tx-data))))) - (state/set-state! :repo/importing-to-db? false) - (when re-render? - (ui-handler/re-render-root!))))))] - (if first-clone? - (-> - (p/let [files (file-handler/load-files repo-url)] - (load-contents files nil nil false)) - (p/catch (fn [error] - (println "loading files failed: ") - (js/console.dir error) - (state/set-state! :repo/loading-files? false)))) - (when (seq diffs) - (let [filter-diffs (fn [type] (->> (filter (fn [f] (= type (:type f))) diffs) - (map :path))) - remove-files (filter-diffs "remove") - modify-files (filter-diffs "modify") - add-files (filter-diffs "add") - delete-files (if (seq remove-files) - (db/delete-files remove-files)) - delete-blocks (db/delete-blocks repo-url (concat remove-files modify-files)) - delete-pages (if (seq remove-files) - (db/delete-pages-by-files remove-files) - []) - add-or-modify-files (util/remove-nils (concat add-files modify-files))] - (load-contents add-or-modify-files (concat delete-files delete-pages) delete-blocks true)))))) - (defn show-install-error! [repo-url title] (notification/show! @@ -196,7 +143,7 @@ (create-today-journal-if-not-exists repo-url nil)) ([repo-url content] (let [repo-dir (util/get-repo-dir repo-url) - format (state/get-preferred-format) + format (state/get-preferred-format repo-url) title (date/today) file-name (date/journal-title->default title) default-content (util/default-content-with-title format title false) @@ -240,6 +187,55 @@ (create-today-journal-if-not-exists repo-url) (create-contents-file repo-url))) +(defn load-repo-to-db! + [repo-url diffs first-clone?] + (let [load-contents (fn [files delete-files delete-blocks re-render?] + (file-handler/load-files-contents! + repo-url + files + (fn [contents] + (state/set-state! :repo/loading-files? false) + (state/set-state! :repo/importing-to-db? true) + (let [parsed-files (filter + (fn [[file _]] + (let [format (format/get-format file)] + (contains? config/mldoc-support-formats format))) + contents) + blocks-pages (if (seq parsed-files) + (db/extract-all-blocks-pages repo-url parsed-files) + [])] + (db/reset-contents-and-blocks! repo-url contents blocks-pages delete-files delete-blocks) + (let [config-file (str config/app-name "/" config/config-file)] + (if (contains? (set files) config-file) + (when-let [content (get contents config-file)] + (file-handler/restore-config! repo-url content true)))) + (when first-clone? (create-default-files! repo-url)) + (state/set-state! :repo/importing-to-db? false) + (when re-render? + (ui-handler/re-render-root!))))))] + (if first-clone? + (-> + (p/let [files (file-handler/load-files repo-url)] + (load-contents files nil nil false)) + (p/catch (fn [error] + (println "loading files failed: ") + (js/console.dir error) + (state/set-state! :repo/loading-files? false)))) + (when (seq diffs) + (let [filter-diffs (fn [type] (->> (filter (fn [f] (= type (:type f))) diffs) + (map :path))) + remove-files (filter-diffs "remove") + modify-files (filter-diffs "modify") + add-files (filter-diffs "add") + delete-files (if (seq remove-files) + (db/delete-files remove-files)) + delete-blocks (db/delete-blocks repo-url (concat remove-files modify-files)) + delete-pages (if (seq remove-files) + (db/delete-pages-by-files remove-files) + []) + add-or-modify-files (util/remove-nils (concat add-files modify-files))] + (load-contents add-or-modify-files (concat delete-files delete-pages) delete-blocks true)))))) + (defn persist-repo! [repo] (when-let [files-conn (db/get-files-conn repo)] @@ -251,9 +247,6 @@ [repo-url diffs first-clone?] (when (or diffs first-clone?) (p/let [_ (load-repo-to-db! repo-url diffs first-clone?)] - (when first-clone? - (create-default-files! repo-url)) - (when first-clone? (migration-handler/show!))))) diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index 28e566b09..79e3ae534 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -167,13 +167,15 @@ (some? (:page (get-default-home)))) (defn get-preferred-format - [] - (keyword - (or - (when-let [fmt (:preferred-format (get-config))] - (string/lower-case (name fmt))) + ([] + (get-preferred-format (get-current-repo))) + ([repo-url] + (keyword + (or + (when-let [fmt (:preferred-format (get-config repo-url))] + (string/lower-case (name fmt))) - (get-in @state [:me :preferred_format] "markdown")))) + (get-in @state [:me :preferred_format] "markdown"))))) (defn get-preferred-workflow [] @@ -275,7 +277,7 @@ ;; (remove #(= leader-parent %)))] ;; (prn "followers: " (count followers)) ;; )) - )) +)) (defn get-edit-input-id []