From 37d49b6ab832ec2dcc48d951e3fd2f731320d3c2 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 27 Jun 2023 19:07:57 +0800 Subject: [PATCH] fix: WIP assets not loading --- src/electron/electron/handler.cljs | 3 +++ src/main/frontend/components/block.cljs | 8 ++++---- src/main/frontend/config.cljs | 13 +++++++++---- src/main/frontend/handler.cljs | 10 +++++++++- src/main/frontend/handler/editor.cljs | 3 ++- src/main/frontend/handler/image.cljs | 1 + src/main/frontend/state.cljs | 3 ++- 7 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/electron/electron/handler.cljs b/src/electron/electron/handler.cljs index ff228d032..8e6e13482 100644 --- a/src/electron/electron/handler.cljs +++ b/src/electron/electron/handler.cljs @@ -795,6 +795,9 @@ (defmethod handle :server/set-config [^js _win [_ config]] (server/set-config! config)) +(defmethod handle :system/info [^js _win _] + {:home-dir (.homedir os)}) + (defn set-ipc-handler! [window] (let [main-channel "main"] (.handle ipcMain main-channel diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 1182ea882..68c27d63c 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -145,7 +145,6 @@ (defn- get-file-absolute-path [config path] - (js/console.error "TODO: buggy path fn") (let [path (string/replace path "file:" "") block-id (:block/uuid config) current-file (and block-id @@ -232,7 +231,6 @@ type (cond img? "image" audio? "audio" :else "asset")] - (if (not sync-enabled?) (content-fn) (if (and asset-file? (or loading? (nil? exist?))) @@ -435,11 +433,13 @@ (let [metadata (if (string/blank? metadata) nil (gp-util/safe-read-string metadata)) - title (second (first label))] + title (second (first label)) + repo (state/get-current-repo)] (ui/catch-error [:span.warning full_text] (if (and (gp-config/local-asset? href) - (config/local-file-based-graph? (state/get-current-repo))) + (or (config/local-file-based-graph? repo) + (config/db-based-graph? repo))) (asset-link config title href metadata full_text) (let [href (cond (util/starts-with? href "http") diff --git a/src/main/frontend/config.cljs b/src/main/frontend/config.cljs index 6941cf194..45d2652f3 100644 --- a/src/main/frontend/config.cljs +++ b/src/main/frontend/config.cljs @@ -376,8 +376,13 @@ (str "/" (string/replace s #"^[./]*" ""))) (defn get-local-dir - [s] - (string/replace s local-db-prefix "")) + [repo] + (if (db-based-graph? repo) + (path/path-join (get-in @state/state [:system/info :home-dir]) + "logseq" + "graphs" + (string/replace repo db-version-prefix "")) + (string/replace repo local-db-prefix ""))) ;; FIXME(andelf): this is not the reverse op of get-repo-dir, should be fixed (defn get-local-repo @@ -392,8 +397,8 @@ (js/console.error "BUG: nil repo") nil) - (db-based-graph? repo-url) - nil + (and (util/electron?) (db-based-graph? repo-url)) + (get-local-dir repo-url) (and (util/electron?) (local-file-based-graph? repo-url)) (get-local-dir repo-url) diff --git a/src/main/frontend/handler.cljs b/src/main/frontend/handler.cljs index 891193882..83bf90f33 100644 --- a/src/main/frontend/handler.cljs +++ b/src/main/frontend/handler.cljs @@ -45,7 +45,8 @@ [promesa.core :as p] [frontend.mobile.core :as mobile] [frontend.db.react :as db-react] - [frontend.db.listener :as db-listener])) + [frontend.db.listener :as db-listener] + [cljs-bean.core :as bean])) (defn set-global-error-notification! [] @@ -200,8 +201,15 @@ (reset! db-listener/*db-listener outliner-db/after-transact-pipelines) +(defn- get-system-info + [] + (when (util/electron?) + (p/let [info (ipc/ipc :system/info)] + (state/set-state! :system/info (bean/->clj info))))) + (defn start! [render] + (get-system-info) (set-global-error-notification!) (register-components-fns!) (user-handler/restore-tokens-from-localstorage) diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index c5227fcee..972cbc694 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -1418,7 +1418,8 @@ [id ^js files format uploading? drop-or-paste?] (let [repo (state/get-current-repo) block (state/get-edit-block)] - (when (config/local-file-based-graph? repo) + (when (or (config/local-file-based-graph? repo) + (config/db-based-graph? repo)) (-> (save-assets! block repo (js->clj files)) ;; FIXME: only the first asset is handled (p/then diff --git a/src/main/frontend/handler/image.cljs b/src/main/frontend/handler/image.cljs index 5d3fe2be3..7c4e6d70f 100644 --- a/src/main/frontend/handler/image.cljs +++ b/src/main/frontend/handler/image.cljs @@ -15,6 +15,7 @@ (mobile-util/native-ios?)) (config/local-file-based-graph? (state/get-current-repo))) (try + (prn "render local images") (let [images (array-seq (gdom/getElementsByTagName "img")) get-src (fn [image] (.getAttribute image "src")) local-images (filter diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index 201cdd7ff..e65382f3b 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -289,7 +289,8 @@ :history/page-only-mode? false ;; db tx-id -> editor cursor :history/tx->editor-cursor (atom {}) - :ui/pagination-blocks-range (atom {})}))) + :ui/pagination-blocks-range (atom {}) + :system/info {}}))) ;; Block ast state ;; ===============