浏览代码

enhance: importer displays one notification about ignored files

rather than one notification per file. Also ignore pdf highlight pages
as user graphs shouldn't fail hard on features that aren't imported yet.
This allowed the user graph in
https://github.com/logseq/db-test/issues/191 to import without errors
Gabriel Horner 9 月之前
父节点
当前提交
1ab621069d

+ 2 - 0
deps/graph-parser/script/db_import.cljs

@@ -172,6 +172,8 @@
 
       (when-let [ignored-props (seq @(:ignored-properties import-state))]
         (println "Ignored properties:" (pr-str ignored-props)))
+      (when-let [ignored-files (seq @(:ignored-files import-state))]
+        (println (count ignored-files) "ignored file(s):" (pr-str (vec ignored-files))))
       (when (:verbose options') (println "Transacted" (count (d/datoms @conn :eavt)) "datoms"))
       (println "Created graph" (str db-name "!")))))
 

+ 11 - 3
deps/graph-parser/src/logseq/graph_parser/exporter.cljs

@@ -1108,6 +1108,8 @@
    ;; Properties are ignored to keep graph valid and notify users of ignored properties.
    ;; Properties with :schema are ignored due to property schema changes
    :ignored-properties (atom [])
+   ;; Vec of maps with keys :path and :reason
+   :ignored-files (atom [])
    ;; Map of property names (keyword) and their current schemas (map).
    ;; Used for adding schemas to properties and detecting changes across a property's usage
    :property-schemas (atom {})
@@ -1227,8 +1229,10 @@
 
 (defn- extract-pages-and-blocks
   "Main fn which calls graph-parser to convert markdown into data"
-  [db file content {:keys [extract-options notify-user]}]
+  [db file content {:keys [extract-options import-state]}]
   (let [format (common-util/get-format file)
+        ;; TODO: Remove once pdf highlights are supported
+        ignored-highlight-file? (string/starts-with? (str (path/basename file)) "hls__")
         extract-options' (merge {:block-pattern (common-config/get-block-pattern format)
                                  :date-formatter "MMM do, yyyy"
                                  :uri-encoded? false
@@ -1236,7 +1240,7 @@
                                  :filename-format :legacy}
                                 extract-options
                                 {:db db})]
-    (cond (contains? common-config/mldoc-support-formats format)
+    (cond (and (contains? common-config/mldoc-support-formats format) (not ignored-highlight-file?))
           (-> (extract/extract file content extract-options')
               (update :pages (fn [pages]
                                (map #(dissoc % :block.temp/original-page-name) pages)))
@@ -1254,7 +1258,11 @@
               (update :blocks update-whiteboard-blocks format))
 
           :else
-          (notify-user {:msg (str "Skipped file since its format is not supported: " file)}))))
+          (if ignored-highlight-file?
+            (swap! (:ignored-files import-state) conj
+                   {:path file :reason :pdf-highlight})
+            (swap! (:ignored-files import-state) conj
+                   {:path file :reason :unsupported-file-format})))))
 
 (defn- build-journal-created-ats
   "Calculate created-at timestamps for journals"

+ 2 - 1
deps/graph-parser/test/logseq/graph_parser/exporter_test.cljs

@@ -201,7 +201,8 @@
                      count))
           "Correct number of user classes")
       (is (= 4 (count (d/datoms @conn :avet :block/tags :logseq.class/Whiteboard))))
-      (is (= 0 (count @(:ignored-properties import-state))) ":filters should be the only ignored property")
+      (is (= 0 (count @(:ignored-properties import-state))) "No ignored properties")
+      (is (= 1 (count @(:ignored-files import-state))) "Ignore .edn for now")
       (is (= 1 (count @assets))))
 
     (testing "logseq files"

+ 0 - 0
deps/graph-parser/test/resources/exporter-test-graph/pages/ignored.edn


+ 7 - 0
src/main/frontend/components/imports.cljs

@@ -284,6 +284,13 @@
     (log/info :org-files (mapv :path org-files))
     (notification/show! (str "Imported " (count org-files) " org file(s) as markdown. Support for org files will be added later.")
                         :info false))
+  (when-let [ignored-files (seq @(:ignored-files import-state))]
+    (notification/show! (str "Import ignored " (count ignored-files) " "
+                             (if (= 1 (count ignored-files)) "file" "files")
+                             ". See the javascript console for more details.")
+                        :info false)
+    (log/error :import-ignored-files {:msg (str "Import ignored " (count ignored-files) " file(s)")})
+    (pprint/pprint ignored-files))
   (when-let [ignored-props (seq @(:ignored-properties import-state))]
     (notification/show!
      [:.mb-2