Przeglądaj źródła

Fix zotero highlighting block error after importing from file

Mega Yu 1 tydzień temu
rodzic
commit
6119efad18

+ 5 - 0
deps/db/src/logseq/db/frontend/property.cljs

@@ -525,6 +525,11 @@
                                                          :hide? true
                                                          :public? false}
                                                 :queryable? false}
+     :logseq.property.asset/external-props {:title "External properties"
+                                            :schema {:type :map
+                                                     :hide? true
+                                                     :public? false}
+                                            :queryable? false}
      :logseq.property.asset/size {:title "File Size"
                                   :schema {:type :raw-number
                                            :hide? true

+ 1 - 1
deps/db/src/logseq/db/frontend/schema.cljs

@@ -37,7 +37,7 @@
          (map (juxt :major :minor)
               [(parse-schema-version x) (parse-schema-version y)])))
 
-(def version (parse-schema-version "65.19"))
+(def version (parse-schema-version "65.20"))
 
 (defn major-version
   "Return a number.

+ 17 - 10
deps/graph-parser/src/logseq/graph_parser/exporter.cljs

@@ -1174,7 +1174,8 @@
           :logseq.property.asset/size (:size asset-data)}
          (when-let [external-url (:external-url asset-data)]
            {:logseq.property.asset/external-url external-url
-            :logseq.property.asset/external-file-name (:external-file-name asset-data)})))
+            :logseq.property.asset/external-file-name (:external-file-name asset-data)
+            :logseq.property.asset/external-props (:external-props asset-data)})))
 
 (defn- get-asset-block-id
   [assets path]
@@ -1263,6 +1264,10 @@
                                                    :else path)
                                             asset-link-or-name (or link asset-name)
                                             asset-data* (when asset-link-or-name (get @assets asset-link-or-name))
+                                            external-props (when zotero-asset?
+                                                             (if linked-path
+                                                               {:zotero-linked-file linked-relative}
+                                                               {:zotero-imported-file (string/join ns-util/namespace-char [(last (string/split link #"/")) asset-name])}))
                                             _ (when (and asset-link-or-name
                                                          (not asset-data*)
                                                          (string/ends-with? path ".pdf")
@@ -1276,7 +1281,8 @@
                                                            :checksum "0000000000000000000000000000000000000000000000000000000000000000"
                                                            :size (.-size stat)
                                                            :external-url (or link path)
-                                                           :external-file-name asset-name}))
+                                                           :external-file-name asset-name
+                                                           :external-props external-props}))
                                                  (p/catch (fn [error]
                                                             (js/console.error error)))))
                                             asset-data (when asset-link-or-name (get @assets asset-link-or-name))]
@@ -1291,14 +1297,15 @@
                                           {:asset-name-uuid [asset-link-or-name (:asset-id asset-data)]}
 
                                           :else
-                                          (let [new-asset (merge (build-new-asset asset-data)
-                                                                 {:block/title (db-asset/asset-name->title (node-path/basename asset-name))
-                                                                  :block/uuid (get-asset-block-id assets asset-link-or-name)}
-                                                                 (when-let [metadata (not-empty (common-util/safe-read-map-string (:metadata (second asset-link))))]
-                                                                   {:logseq.property.asset/resize-metadata metadata}))
-                                                pdf-annotations-tx (when (= "pdf" (path/file-ext asset-link-or-name))
-                                                                     (build-pdf-annotations-tx asset-link-or-name assets new-asset pdf-annotation-pages opts))
-                                                asset-tx (concat [new-asset] pdf-annotations-tx)]
+                                        (let [new-asset (merge (build-new-asset asset-data)
+                                                               {:block/title (db-asset/asset-name->title (node-path/basename asset-name))
+                                                                :block/uuid (get-asset-block-id assets asset-link-or-name)}
+                                                               (when-let [metadata (not-empty (common-util/safe-read-map-string (:metadata (second asset-link))))]
+                                                                 {:logseq.property.asset/resize-metadata metadata}))
+                                              pdf-annotations-path (or asset-name asset-link-or-name)
+                                              pdf-annotations-tx (when (= "pdf" (path/file-ext pdf-annotations-path))
+                                                                   (build-pdf-annotations-tx pdf-annotations-path assets new-asset pdf-annotation-pages opts))
+                                              asset-tx (concat [new-asset] pdf-annotations-tx)]
                                             ;; (prn :asset-added! (node-path/basename asset-name))
                                             ;; (cljs.pprint/pprint asset-link)
                                             ;; (prn :debug :asset-tx asset-tx)

+ 13 - 1
src/main/frontend/extensions/pdf/assets.cljs

@@ -202,12 +202,24 @@
        (ref/->block-ref (:block/uuid ref-block))
        :owner-window (pdf-windows/resolve-own-window viewer)))))
 
+(defn- get-zotero-local-pdf-path
+  [{:keys [zotero-linked-file zotero-imported-file]}]
+  (let [zotero-config (get-in (state/sub-config) [:zotero/settings-v2 "default"])
+        zotero-data-directory (:zotero-data-directory zotero-config)
+        zotero-linked-attachment-base-directory (:zotero-linked-attachment-base-directory zotero-config)]
+    (if zotero-linked-file
+      (str zotero-linked-attachment-base-directory "/" zotero-linked-file)
+      (str zotero-data-directory "/storage/" zotero-imported-file))))
+
 (defn db-based-open-block-ref!
   [block]
   (let [hl-value (:logseq.property.pdf/hl-value block)
         asset (:logseq.property/asset block)
         external-url (:logseq.property.asset/external-url asset)
-        file-path (or external-url (str "../assets/" (:block/uuid asset) ".pdf"))]
+        file-path (or external-url (str "../assets/" (:block/uuid asset) ".pdf"))
+        file-path (if (string/starts-with? file-path "zotero://")
+                    (get-zotero-local-pdf-path (:logseq.property.asset/external-props asset))
+                    file-path)]
     (if asset
       (->
        (p/let [href (assets-handler/<make-asset-url file-path)]

+ 2 - 1
src/main/frontend/worker/db/migrate.cljs

@@ -185,7 +185,8 @@
    ["65.16" {:properties [:logseq.property.asset/external-file-name]}]
    ["65.17" {:properties [:logseq.property.publish/published-url]}]
    ["65.18" {:fix deprecated-ensure-graph-uuid}]
-   ["65.19" {:properties [:logseq.property/choice-classes :logseq.property/choice-exclusions]}]])
+   ["65.19" {:properties [:logseq.property/choice-classes :logseq.property/choice-exclusions]}]
+   ["65.20" {:properties [:logseq.property.asset/external-props]}]])
 
 (let [[major minor] (last (sort (map (comp (juxt :major :minor) db-schema/parse-schema-version first)
                                      schema-version->updates)))]