瀏覽代碼

fix: respect user's preferred format for a specific repo

Tienson Qin 5 年之前
父節點
當前提交
553b1079b1
共有 3 個文件被更改,包括 60 次插入65 次删除
  1. 1 1
      resources/css/style.css
  2. 50 57
      src/main/frontend/handler/repo.cljs
  3. 9 7
      src/main/frontend/state.cljs

+ 1 - 1
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";

+ 50 - 57
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!)))))
 

+ 9 - 7
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
   []