mirror of https://github.com/logseq/logseq
enhance(fs): check graph folder for bad name and nested graph
parent
2d34af9f6a
commit
5058f599e3
|
@ -294,7 +294,7 @@
|
|||
;; compat
|
||||
(defn basename
|
||||
[path]
|
||||
(let [path (string/replace path #"/$" "")]
|
||||
(let [path (string/replace path #"/+$" "")]
|
||||
(filename path)))
|
||||
|
||||
(defn dirname
|
||||
|
|
|
@ -20,7 +20,8 @@
|
|||
[goog.object :as gobj]
|
||||
[lambdaisland.glogi :as log]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[promesa.core :as p]))
|
||||
[promesa.core :as p]
|
||||
[logseq.common.path :as path]))
|
||||
|
||||
(defn remove-ignore-files
|
||||
[files dir-name nfs?]
|
||||
|
@ -86,6 +87,32 @@
|
|||
(keyword (util/get-file-ext (:file/path file)))))
|
||||
files))
|
||||
|
||||
(defn- precheck-graph-dir
|
||||
"Check graph dir, notify user if:
|
||||
|
||||
- Grame dir name is `logseq`, the same as app, which might cause confusion
|
||||
- Graph dir contains a nested graph, which should be avoided
|
||||
- Over 10000 files found in graph dir, which might cause performance issues"
|
||||
[dir files]
|
||||
(when (= (string/lower-case (path/basename dir))
|
||||
"logseq")
|
||||
(state/pub-event!
|
||||
[:notification/show {:content [:div "The folder name "
|
||||
[:code "logseq"]
|
||||
" is not suitable for a graph name. Please unlink this graph and choose a different name."]
|
||||
:status :warning
|
||||
:clear? false}]))
|
||||
(when (some #(string/ends-with? (:path %) "/logseq/config.edn") files)
|
||||
(state/pub-event!
|
||||
[:notification/show {:content "It seems that you are trying to open a Logseq graph folder with nested graph. Please unlink this graph and choose a correct folder."
|
||||
:status :warning
|
||||
:clear? false}]))
|
||||
(when (>= (count files) 10000)
|
||||
(state/pub-event!
|
||||
[:notification/show {:content "It seems that you are trying to open a Logseq graph folder that contains an excessive number of files, This might lead to performance issues."
|
||||
:status :warning
|
||||
:clear? true}])))
|
||||
|
||||
;; TODO: extract code for `ls-dir-files` and `reload-dir!`
|
||||
(defn ls-dir-files-with-handler!
|
||||
"Read files from directory and setup repo (for the first time setup a repo)"
|
||||
|
@ -113,6 +140,7 @@
|
|||
(reset! *repo repo)
|
||||
(when-not (string/blank? root-dir)
|
||||
(p/let [files (:files result)
|
||||
_ (precheck-graph-dir root-dir (:files result))
|
||||
files (-> (->db-files files nfs?)
|
||||
;; filter again, in case fs backend does not handle this
|
||||
(remove-ignore-files root-dir nfs?))
|
||||
|
|
Loading…
Reference in New Issue