Просмотр исходного кода

fix: local images can't be displayed on GitHub

Closed #1254
Tienson Qin 4 лет назад
Родитель
Сommit
46a5ce1963

+ 1 - 1
package.json

@@ -66,7 +66,7 @@
         "gulp-cached": "^1.1.1",
         "ignore": "^5.1.8",
         "jszip": "^3.5.0",
-        "mldoc": "^0.3.7",
+        "mldoc": "^0.3.8",
         "mousetrap": "^1.6.5",
         "path": "^0.12.7",
         "react": "^17.0.1",

+ 2 - 4
src/main/frontend/components/block.cljs

@@ -226,8 +226,8 @@
   (rum/local nil ::src)
   [state config title href label metadata full_text]
   (let [src (::src state)
-        granted? (state/sub [:nfs/user-granted? (state/get-current-repo)])]
-
+        granted? (state/sub [:nfs/user-granted? (state/get-current-repo)])
+        href (config/get-local-asset-absolute-path href)]
     (when (or granted? (util/electron?))
       (p/then (editor-handler/make-asset-url href) #(reset! src %)))
 
@@ -236,8 +236,6 @@
 
 ;; TODO: safe encoding asciis
 ;; TODO: image link to another link
-
-
 (defn image-link [config url href label metadata full_text]
   (let [metadata (if (string/blank? metadata)
                    nil

+ 5 - 2
src/main/frontend/config.cljs

@@ -295,8 +295,11 @@
 
 (defn local-asset?
   [s]
-  (or (string/starts-with? s (str "/" local-assets-dir))
-      (string/starts-with? s (str "../" local-assets-dir))))
+  (re-find (re-pattern (str "^[./]*" local-assets-dir)) s))
+
+(defn get-local-asset-absolute-path
+  [s]
+  (str "/" (string/replace s #"^[./]*" "")))
 
 (defn get-local-dir
   [s]

+ 12 - 1
src/main/frontend/handler/editor.cljs

@@ -1599,6 +1599,17 @@
                             (string/replace #"^../" "/")
                             (string/replace #"^assets://" ""))) nil))))
 
+;; assets/journals_2021_02_03_1612350230540_0.png
+(defn resolve-relative-path
+  [file-path]
+  (if-let [current-file (some-> (state/get-edit-block)
+                                :block/file
+                                :db/id
+                                (db/entity)
+                                :file/path)]
+    (util/get-relative-path current-file file-path)
+    file-path))
+
 (defn upload-asset
   [id ^js files format uploading? drop-or-paste?]
   (let [repo (state/get-current-repo)
@@ -1611,7 +1622,7 @@
                (let [image? (util/ext-of-image? url)]
                  (insert-command!
                   id
-                  (get-asset-file-link format (get-asset-link url)
+                  (get-asset-file-link format (resolve-relative-path url)
                                        (if file (.-name file) (if image? "image" "asset"))
                                        image?)
                   format

+ 4 - 4
yarn.lock

@@ -3911,10 +3911,10 @@ mkdirp@^0.5.4, mkdirp@~0.5.1:
   dependencies:
     minimist "^1.2.5"
 
-mldoc@^0.3.7:
-  version "0.3.7"
-  resolved "https://registry.yarnpkg.com/mldoc/-/mldoc-0.3.7.tgz#08f0ff51ab223d47279beadf89d70fbb238164ff"
-  integrity sha512-vnZqOrCE/JnDyy14zTxHE0KfSpRS/nu4+EuySpomHhWQYiBJ30dv0QhAvNW3XoX/kz8O0bVopFOAPPCCEb1MOQ==
+mldoc@^0.3.8:
+  version "0.3.8"
+  resolved "https://registry.yarnpkg.com/mldoc/-/mldoc-0.3.8.tgz#1e4500ab50f1bb7a6cb292a80d1e9ab92c4d48cc"
+  integrity sha512-b2qieoYJ71E+c4TVOIcylh87COl6Rxt6du4o3mB1yL0qDSfK1OW6XICGhYVrJi8MO5ioscf3Y4aRyWGYmwCBlQ==
   dependencies:
     yargs "^12.0.2"