diff --git a/deps/common/resources/templates/config.edn b/deps/common/resources/templates/config.edn index 04b21e97b0..bcec00aa3e 100644 --- a/deps/common/resources/templates/config.edn +++ b/deps/common/resources/templates/config.edn @@ -116,11 +116,6 @@ ;; :enabled-in-timestamped-blocks false ;don't display logbook at all ;; } - ;; File sync options - ;; Ignore these files when syncing, regexp is supported. - ;; This is _only_ for file graphs. - ;; :file-sync/ignore-files [] - ;; Configure the escaping method for special characters in page titles. ;; This is _only_ for file graphs. ;; Warning: @@ -391,17 +386,4 @@ ;; :redirect-page? false ;; Default value: false ;; :default-page "quick capture"} ;; Default page: "quick capture" - ;; Configure the Enter key behavior for - ;; context-aware editing with DWIM (Do What I Mean). - ;; context-aware Enter key behavior implies that pressing Enter will - ;; have different outcomes based on the context. - ;; For instance, pressing Enter within a list generates a new list item, - ;; whereas pressing Enter in a block reference opens the referenced block. - ;; :dwim/settings - ;; {:admonition&src? true ;; Default value: true - ;; :markup? false ;; Default value: false - ;; :block-ref? true ;; Default value: true - ;; :page-ref? true ;; Default value: true - ;; :properties? true ;; Default value: true - ;; :list? false} ;; Default value: false } diff --git a/src/bench/frontend/benchmark_test_runner.cljs b/src/bench/frontend/benchmark_test_runner.cljs deleted file mode 100644 index 7a21f19d85..0000000000 --- a/src/bench/frontend/benchmark_test_runner.cljs +++ /dev/null @@ -1,28 +0,0 @@ -(ns frontend.benchmark-test-runner - "Runs a benchmark" - (:require [clojure.edn :as edn] - [frontend.macros :refer [slurped]] - [clojure.pprint :as pprint] - [clojure.test :refer [deftest testing]] - [fipp.edn :as fipp] - [frontend.common.file.util :as wfu])) - -(def onboarding - (edn/read-string (slurped "resources/whiteboard/onboarding.edn"))) - -(deftest test-pp-str - (testing "pp-str benchmark" - (simple-benchmark [] - (with-out-str (pprint/pprint onboarding)) - 10) - (simple-benchmark [] - (with-out-str (fipp/pprint onboarding)) - 10) - (simple-benchmark [] - (wfu/ugly-pr-str onboarding) - 10) - (simple-benchmark [] - (pr-str onboarding) - 10) - ;; uncomment to see the output - #_(println (wfu/ugly-pr-str onboarding)))) diff --git a/src/electron/electron/handler.cljs b/src/electron/electron/handler.cljs index fa4c7b1cfa..e33497c6db 100644 --- a/src/electron/electron/handler.cljs +++ b/src/electron/electron/handler.cljs @@ -216,21 +216,10 @@ (fs-extra/ensureDirSync dir) dir)) -(defn get-file-based-graphs - "Returns all graph names in the cache directory (starting with `logseq_local_`)" - [] - (let [dir (get-file-graphs-dir)] - (->> (common-graph/readdir dir) - (remove #{dir}) - (map #(node-path/basename % ".transit")) - (map cli-common-graph/graph-name->path)))) - (defn get-graphs "Returns all graph names" [] - (let [db-graphs (cli-common-graph/get-db-based-graphs) - file-graphs (get-file-based-graphs)] - (distinct (concat db-graphs file-graphs)))) + (distinct (cli-common-graph/get-db-based-graphs))) ;; TODO support alias mechanism (defn get-graph-name diff --git a/src/electron/electron/utils.cljs b/src/electron/electron/utils.cljs index 8a8de9b761..44bb28403a 100644 --- a/src/electron/electron/utils.cljs +++ b/src/electron/electron/utils.cljs @@ -258,18 +258,14 @@ (defn get-graph-dir "required by all internal state in the electron section" [graph-name] - (cond (string/starts-with? graph-name sqlite-util/db-version-prefix) - (node-path/join (cli-common-graph/get-db-graphs-dir) (string/replace-first graph-name sqlite-util/db-version-prefix "")) - (string/includes? graph-name "logseq_local_") - (string/replace-first graph-name "logseq_local_" ""))) + (when (string/starts-with? graph-name sqlite-util/db-version-prefix) + (node-path/join (cli-common-graph/get-db-graphs-dir) (string/replace-first graph-name sqlite-util/db-version-prefix "")))) (comment (defn get-graph-name "Reverse `get-graph-dir`" [graph-dir] - (if (= (cli-common-graph/get-db-graphs-dir) (node-path/dirname graph-dir)) - (str sqlite-util/db-version-prefix (node-path/basename graph-dir)) - (str "logseq_local_" graph-dir)))) + (str sqlite-util/db-version-prefix (node-path/basename graph-dir)))) (defn decode-protected-assets-schema-path [schema-path] diff --git a/src/main/frontend/commands.cljs b/src/main/frontend/commands.cljs index a50a60d630..a1e0899f1d 100644 --- a/src/main/frontend/commands.cljs +++ b/src/main/frontend/commands.cljs @@ -23,7 +23,6 @@ ;; TODO: move to frontend.handler.editor.commands (defonce hashtag "#") -(defonce colon ":") (defonce command-trigger "/") (defonce command-ask "\\") (defonce *current-command (atom nil)) diff --git a/src/main/frontend/common/async_util.cljc b/src/main/frontend/common/async_util.cljc index 2d5b1dd60f..bcab55bfe2 100644 --- a/src/main/frontend/common/async_util.cljc +++ b/src/main/frontend/common/async_util.cljc @@ -1,10 +1,6 @@ (ns frontend.common.async-util "Some cljs.core.async relate macros and fns, used in worker and frontend - namespaces. See also: https://gist.github.com/vvvvalvalval/f1250cec76d3719a8343" - #?(:cljs (:require [cljs.core.async.impl.channels :refer [ManyToManyChannel]] - [clojure.core.async :as async] - [logseq.common.util :as common-util] - [promesa.core :as p]))) + namespaces. See also: https://gist.github.com/vvvvalvalval/f1250cec76d3719a8343") #?(:cljs (defn throw-err @@ -14,77 +10,3 @@ (defmacro p - "Converts a Core.async channel to a Promise" - [chan] - (let [d (p/deferred)] - (if chan - (async/go - (let [result (async/> (repeatedly #(async/poll! ch)) - (take-while identity)))) - -#?(:cljs - (defn > (conj coll e) - distinct-key-fn (common-util/distinct-by distinct-key-fn) - true vec)) - (recur timeout-ch coll))) - - (or stop - ;; got nil from in-ch, means in-ch is closed - ;; so we stop the whole go-loop - (nil? e)) - (async/close! ch)))) - ch))) diff --git a/src/main/frontend/common/file/util.cljs b/src/main/frontend/common/file/util.cljs index ffb6b15739..cb419018a5 100644 --- a/src/main/frontend/common/file/util.cljs +++ b/src/main/frontend/common/file/util.cljs @@ -73,23 +73,6 @@ [s] (common-util/safe-re-find reserved-chars-pattern s)) -;; A fast pprint alternative. -(defn print-prefix-map* [prefix m print-one writer opts] - (pr-sequential-writer - writer - (fn [e w opts] - (print-one (key e) w opts) - (-write w \space) - (print-one (val e) w opts)) - (str prefix "\n{") \newline "}" - opts (seq m))) - -(defn ugly-pr-str - "Ugly printing fast, with newlines so that git diffs are smaller" - [x] - (with-redefs [print-prefix-map print-prefix-map*] - (pr-str x))) - (defn post-message [type data & {:keys [port]}] (when-let [worker (or port js/self)] diff --git a/src/main/frontend/components/all_pages.cljs b/src/main/frontend/components/all_pages.cljs index c1d28f47c9..1c9fe28717 100644 --- a/src/main/frontend/components/all_pages.cljs +++ b/src/main/frontend/components/all_pages.cljs @@ -2,10 +2,8 @@ "All pages" (:require [frontend.components.block :as component-block] [frontend.components.views :as views] - [frontend.config :as config] [frontend.context.i18n :refer [t]] [frontend.db :as db] - [frontend.state :as state] [logseq.common.config :as common-config] [rum.core :as rum])) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index c88d57804a..5bdb4e9c59 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -66,7 +66,6 @@ [goog.dom :as gdom] [goog.functions :refer [debounce]] [goog.object :as gobj] - [lambdaisland.glogi :as log] [logseq.common.config :as common-config] [logseq.common.path :as path] [logseq.common.util :as common-util] @@ -212,8 +211,7 @@ src (fn [width height] (when (nil? (:logseq.property.asset/width asset-block)) - (property-handler/set-block-properties! (state/get-current-repo) - (:block/uuid asset-block) + (property-handler/set-block-properties! (:block/uuid asset-block) {:logseq.property.asset/width width :logseq.property.asset/height height})))))) (fn [])) @@ -803,12 +801,6 @@ children)])) (declare block-reference) -(declare block-reference-preview) - -(rum/defc invalid-node-ref - [id] - [:span.warning.mr-1 {:title "Node ref invalid"} - (ref/->block-ref (str id))]) (defn inline-text ([format v] @@ -1056,71 +1048,6 @@ (declare block-container) -(rum/defc block-embed - [config block-uuid] - (let [[block set-block!] (hooks/use-state (db/entity [:block/uuid block-uuid]))] - (hooks/use-effect! - (fn [] - (p/let [block (db-async/ link-depth max-depth-of-links) - [:p.warning.text-sm "Embed depth is too deep"] - - (page-ref/page-ref? a) - (let [page-name (text/get-page-name a)] - (when-not (string/blank? page-name) - (page-embed (assoc config :link-depth (inc link-depth)) page-name))) - - (block-ref/string-block-ref? a) - (when-let [s (-> a block-ref/get-string-block-ref-id string/trim)] - (when-let [id (some-> s parse-uuid)] - (block-embed (assoc config :link-depth (inc link-depth)) id))) - - :else ;TODO: maybe collections? - nil))) - (defn- macro-vimeo-cp [_config arguments] (when-let [url (first arguments)] @@ -1536,6 +1438,14 @@ [:span.warning.mr-1 {:title "Empty URL"} (macro->text "video" arguments)])) +(defn- macro-else-cp + [name config arguments] + (let [macro-content (or + (get (state/get-macros) name) + (get (state/get-macros) (keyword name))) + format (get-in config [:block :block/format] :markdown)] + (render-macro config name arguments macro-content format))) + (defn- macro-cp [config options] (let [{:keys [name arguments]} options @@ -1612,7 +1522,7 @@ ((get @macro/macros name) config options) :else - nil))) + (macro-else-cp name config arguments)))) (defn- emphasis-cp [config kind data] @@ -2231,7 +2141,6 @@ (let [cursor-range (if mobile? mobile-range (get-cursor-range)) block (db/entity (:db/id block)) - {:block/keys [title format]} block content (:block/title block)] (state/set-editing! diff --git a/src/main/frontend/components/block/macros.cljs b/src/main/frontend/components/block/macros.cljs index 6a9c1cad62..2e7ad81499 100644 --- a/src/main/frontend/components/block/macros.cljs +++ b/src/main/frontend/components/block/macros.cljs @@ -27,7 +27,7 @@ (into {}))) (defn- normalize-query-function - [ast* repo result] + [ast* result] (let [ast (walk/prewalk (fn [f] (if (and (list? f) @@ -73,7 +73,7 @@ (map #(hash-map :block/properties (properties-by-name db %)))) fn-string (-> (gstring/format "(fn [result] %s)" (first arguments)) (common-handler/safe-read-string "failed to parse function") - (normalize-query-function repo query-result') + (normalize-query-function query-result') (str)) f (sci/eval-string fn-string)] (when (fn? f) diff --git a/src/main/frontend/components/container.cljs b/src/main/frontend/components/container.cljs index 719a875a57..fba935d28c 100644 --- a/src/main/frontend/components/container.cljs +++ b/src/main/frontend/components/container.cljs @@ -17,7 +17,6 @@ [frontend.db :as db] [frontend.db-mixins :as db-mixins] [frontend.db.async :as db-async] - [frontend.db.model :as db-model] [frontend.handler.common :as common-handler] [frontend.handler.editor :as editor-handler] [frontend.handler.route :as route-handler] diff --git a/src/main/frontend/components/content.cljs b/src/main/frontend/components/content.cljs index 68cc9d0503..41e900a5a9 100644 --- a/src/main/frontend/components/content.cljs +++ b/src/main/frontend/components/content.cljs @@ -32,243 +32,239 @@ (rum/defc custom-context-menu-content [] - (let [repo (state/get-current-repo)] - [:<> - (ui/menu-background-color #(property-handler/batch-set-block-property! repo - (state/get-selection-block-ids) - (pu/get-pid :logseq.property/background-color) - %) - #(property-handler/batch-remove-block-property! repo - (state/get-selection-block-ids) - (pu/get-pid :logseq.property/background-color))) - (ui/menu-heading #(editor-handler/batch-set-heading! (state/get-selection-block-ids) %) - #(editor-handler/batch-set-heading! (state/get-selection-block-ids) true) - #(editor-handler/batch-remove-heading! (state/get-selection-block-ids))) + [:<> + (ui/menu-background-color #(property-handler/batch-set-block-property! (state/get-selection-block-ids) + (pu/get-pid :logseq.property/background-color) + %) + #(property-handler/batch-remove-block-property! (state/get-selection-block-ids) + (pu/get-pid :logseq.property/background-color))) + (ui/menu-heading #(editor-handler/batch-set-heading! (state/get-selection-block-ids) %) + #(editor-handler/batch-set-heading! (state/get-selection-block-ids) true) + #(editor-handler/batch-remove-heading! (state/get-selection-block-ids))) - (shui/dropdown-menu-separator) + (shui/dropdown-menu-separator) + (shui/dropdown-menu-item + {:key "cut" + :on-click #(editor-handler/cut-selection-blocks true)} + (t :editor/cut) + (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/cut))) + + (shui/dropdown-menu-item + {:key "delete" + :on-click #(do (editor-handler/delete-selection %) + (state/hide-custom-context-menu!) + (shui/popup-hide!))} + + (t :editor/delete-selection) + (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/delete))) + + (shui/dropdown-menu-item + {:key "copy" + :on-click #(editor-handler/copy-selection-blocks true)} + (t :editor/copy) + (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/copy))) + + (shui/dropdown-menu-item + {:key "copy as" + :on-pointer-down (fn [e] + (util/stop-propagation e) + (let [block-uuids (state/get-selection-block-ids)] + (shui/popup-hide!) + (shui/dialog-open! + #(export/export-blocks block-uuids {:whiteboard? false + :export-type :selected-nodes}))))} + (t :content/copy-export-as)) + + (shui/dropdown-menu-item + {:key "copy block refs" + :on-click editor-handler/copy-block-refs} + (t :content/copy-block-ref)) + + (shui/dropdown-menu-separator) + + (when (state/enable-flashcards?) (shui/dropdown-menu-item - {:key "cut" - :on-click #(editor-handler/cut-selection-blocks true)} - (t :editor/cut) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/cut))) + {:key "Make a Card" + :on-click (fsrs/batch-make-cards!)} + (t :context-menu/make-a-flashcard))) - (shui/dropdown-menu-item - {:key "delete" - :on-click #(do (editor-handler/delete-selection %) - (state/hide-custom-context-menu!) - (shui/popup-hide!))} + (shui/dropdown-menu-item + {:key "Toggle number list" + :on-click #(state/pub-event! [:editor/toggle-own-number-list (state/get-selection-block-ids)])} + (t :context-menu/toggle-number-list)) - (t :editor/delete-selection) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/delete))) + (shui/dropdown-menu-item + {:key "cycle todos" + :on-click editor-handler/cycle-todos!} + (t :editor/cycle-todo) + (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/cycle-todo))) - (shui/dropdown-menu-item - {:key "copy" - :on-click #(editor-handler/copy-selection-blocks true)} - (t :editor/copy) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/copy))) + (shui/dropdown-menu-separator) - (shui/dropdown-menu-item - {:key "copy as" - :on-pointer-down (fn [e] - (util/stop-propagation e) - (let [block-uuids (state/get-selection-block-ids)] - (shui/popup-hide!) - (shui/dialog-open! - #(export/export-blocks block-uuids {:whiteboard? false - :export-type :selected-nodes}))))} - (t :content/copy-export-as)) + (shui/dropdown-menu-item + {:key "Expand all" + :on-pointer-down (fn [e] + (util/stop e) + (editor-handler/expand-all-selection!))} + (t :editor/expand-block-children) + (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/expand-block-children))) - (shui/dropdown-menu-item - {:key "copy block refs" - :on-click editor-handler/copy-block-refs} - (t :content/copy-block-ref)) - - (shui/dropdown-menu-separator) - - (when (state/enable-flashcards?) - (shui/dropdown-menu-item - {:key "Make a Card" - :on-click (fsrs/batch-make-cards!)} - (t :context-menu/make-a-flashcard))) - - (shui/dropdown-menu-item - {:key "Toggle number list" - :on-click #(state/pub-event! [:editor/toggle-own-number-list (state/get-selection-block-ids)])} - (t :context-menu/toggle-number-list)) - - (shui/dropdown-menu-item - {:key "cycle todos" - :on-click editor-handler/cycle-todos!} - (t :editor/cycle-todo) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/cycle-todo))) - - (shui/dropdown-menu-separator) - - (shui/dropdown-menu-item - {:key "Expand all" - :on-pointer-down (fn [e] - (util/stop e) - (editor-handler/expand-all-selection!))} - (t :editor/expand-block-children) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/expand-block-children))) - - (shui/dropdown-menu-item - {:key "Collapse all" - :on-pointer-down (fn [e] - (util/stop e) - (editor-handler/collapse-all-selection!))} - (t :editor/collapse-block-children) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/collapse-block-children)))])) + (shui/dropdown-menu-item + {:key "Collapse all" + :on-pointer-down (fn [e] + (util/stop e) + (editor-handler/collapse-all-selection!))} + (t :editor/collapse-block-children) + (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/collapse-block-children)))]) (rum/defc ^:large-vars/cleanup-todo block-context-menu-content < shortcut/disable-all-shortcuts [_target block-id property-default-value?] - (let [repo (state/get-current-repo)] - (when-let [block (db/entity [:block/uuid block-id])] - (let [heading (or (pu/lookup block :logseq.property/heading) - false)] - [:<> - (ui/menu-background-color #(property-handler/set-block-property! repo block-id - (pu/get-pid :logseq.property/background-color) - %) - #(property-handler/remove-block-property! repo block-id - (pu/get-pid :logseq.property/background-color))) + (when-let [block (db/entity [:block/uuid block-id])] + (let [heading (or (pu/lookup block :logseq.property/heading) + false)] + [:<> + (ui/menu-background-color #(property-handler/set-block-property! block-id + (pu/get-pid :logseq.property/background-color) + %) + #(property-handler/remove-block-property! block-id + (pu/get-pid :logseq.property/background-color))) - (ui/menu-heading heading - #(editor-handler/set-heading! block-id %) - #(editor-handler/set-heading! block-id true) - #(editor-handler/remove-heading! block-id)) + (ui/menu-heading heading + #(editor-handler/set-heading! block-id %) + #(editor-handler/set-heading! block-id true) + #(editor-handler/remove-heading! block-id)) - (shui/dropdown-menu-separator) + (shui/dropdown-menu-separator) - (shui/dropdown-menu-item - {:key "Open in sidebar" - :on-click (fn [_e] - (editor-handler/open-block-in-sidebar! block-id))} - (t :content/open-in-sidebar) - (shui/dropdown-menu-shortcut "⇧+click")) + (shui/dropdown-menu-item + {:key "Open in sidebar" + :on-click (fn [_e] + (editor-handler/open-block-in-sidebar! block-id))} + (t :content/open-in-sidebar) + (shui/dropdown-menu-shortcut "⇧+click")) - (shui/dropdown-menu-separator) + (shui/dropdown-menu-separator) - (shui/dropdown-menu-item - {:key "Copy block ref" - :on-click (fn [_e] - (editor-handler/copy-block-ref! block-id ref/->block-ref))} - (t :content/copy-block-ref)) + (shui/dropdown-menu-item + {:key "Copy block ref" + :on-click (fn [_e] + (editor-handler/copy-block-ref! block-id ref/->block-ref))} + (t :content/copy-block-ref)) ;; TODO Logseq protocol mobile support - (when (util/electron?) - (shui/dropdown-menu-item - {:key "Copy block URL" - :on-click (fn [_e] - (let [current-repo (state/get-current-repo) - tap-f (fn [block-id] - (url-util/get-logseq-graph-uuid-url nil current-repo block-id))] - (editor-handler/copy-block-ref! block-id tap-f)))} - (t :content/copy-block-url))) - + (when (util/electron?) (shui/dropdown-menu-item - {:key "Copy as" - :on-click (fn [_] - (shui/dialog-open! - #(export/export-blocks [block-id] {:whiteboard? false - :export-type :block})))} - (t :content/copy-export-as)) - - (when-not property-default-value? - (shui/dropdown-menu-item - {:key "Cut" - :on-click (fn [_e] - (editor-handler/cut-block! block-id))} - (t :editor/cut) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/cut)))) - - (when-not property-default-value? - (shui/dropdown-menu-item - {:key "delete" - :on-click #(editor-handler/delete-block-aux! block)} - (t :editor/delete-selection) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/delete)))) - - (shui/dropdown-menu-separator) - - (cond - (state/enable-flashcards?) - (shui/dropdown-menu-item - {:key "Make a Card" - :on-click #(fsrs/batch-make-cards! [block-id])} - (t :context-menu/make-a-flashcard)) - :else - nil) - - (shui/dropdown-menu-item - {:key "Toggle number list" - :on-click #(state/pub-event! [:editor/toggle-own-number-list (state/get-selection-block-ids)])} - (t :context-menu/toggle-number-list)) - - (shui/dropdown-menu-separator) - - (shui/dropdown-menu-item - {:key "Expand all" + {:key "Copy block URL" :on-click (fn [_e] - (editor-handler/expand-all! block-id))} - (t :editor/expand-block-children) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/expand-block-children))) + (let [current-repo (state/get-current-repo) + tap-f (fn [block-id] + (url-util/get-logseq-graph-uuid-url nil current-repo block-id))] + (editor-handler/copy-block-ref! block-id tap-f)))} + (t :content/copy-block-url))) + (shui/dropdown-menu-item + {:key "Copy as" + :on-click (fn [_] + (shui/dialog-open! + #(export/export-blocks [block-id] {:whiteboard? false + :export-type :block})))} + (t :content/copy-export-as)) + + (when-not property-default-value? (shui/dropdown-menu-item - {:key "Collapse all" + {:key "Cut" :on-click (fn [_e] - (editor-handler/collapse-all! block-id {}))} - (t :editor/collapse-block-children) - (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/collapse-block-children))) + (editor-handler/cut-block! block-id))} + (t :editor/cut) + (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/cut)))) - (when (state/sub [:plugin/simple-commands]) - (when-let [cmds (state/get-plugins-commands-with-type :block-context-menu-item)] - (for [[_ {:keys [key label] :as cmd} action pid] cmds] - (shui/dropdown-menu-item - {:key key - :on-click #(commands/exec-plugin-simple-command! - pid (assoc cmd :uuid block-id) action)} - label)))) + (when-not property-default-value? + (shui/dropdown-menu-item + {:key "delete" + :on-click #(editor-handler/delete-block-aux! block)} + (t :editor/delete-selection) + (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/delete)))) - (when (state/sub [:ui/developer-mode?]) - [:<> - (shui/dropdown-menu-separator) - (shui/dropdown-menu-sub - (shui/dropdown-menu-sub-trigger - "Developer tools") + (shui/dropdown-menu-separator) - (shui/dropdown-menu-sub-content - (shui/dropdown-menu-item - {:key "(Dev) Show block data" - :on-click (fn [] - (dev-common-handler/show-entity-data [:block/uuid block-id]))} - (t :dev/show-block-data)) - (shui/dropdown-menu-item - {:key "(Dev) Show block AST" - :on-click (fn [] - (let [block (db/entity [:block/uuid block-id])] - (dev-common-handler/show-content-ast (:block/title block) - (get block :block/format :markdown))))} - (t :dev/show-block-ast)) - (shui/dropdown-menu-item - {:key "(Dev) Show block content history" - :on-click - (fn [] - (let [token (state/get-auth-id-token) - graph-uuid (ldb/get-graph-rtc-uuid (db/get-db))] - (p/let [blocks-versions (state/ + (shui/dropdown-menu-separator) + (shui/dropdown-menu-sub + (shui/dropdown-menu-sub-trigger + "Developer tools") + + (shui/dropdown-menu-sub-content + (shui/dropdown-menu-item + {:key "(Dev) Show block data" + :on-click (fn [] + (dev-common-handler/show-entity-data [:block/uuid block-id]))} + (t :dev/show-block-data)) + (shui/dropdown-menu-item + {:key "(Dev) Show block AST" + :on-click (fn [] + (let [block (db/entity [:block/uuid block-id])] + (dev-common-handler/show-content-ast (:block/title block) + (get block :block/format :markdown))))} + (t :dev/show-block-ast)) + (shui/dropdown-menu-item + {:key "(Dev) Show block content history" + :on-click + (fn [] + (let [token (state/get-auth-id-token) + graph-uuid (ldb/get-graph-rtc-uuid (db/get-db))] + (p/let [blocks-versions (state/> (js/document.querySelector ".cp__file-sync-indicator a.button") - (.click)) - (.hide jsTour))}] - :popperOptions {:modifiers [{:name "preventOverflow" - :options {:padding 20}} - {:name "offset" - :options {:offset [0, 15]}}]}} - - ;; learn - {:id "sync-learn" - :text (h/render-html [:section [:h2 "💡 Learn about your sync status"] - [:p "Click here to see the progress of your local graph being synced with the cloud."]]) - :attachTo {:element ".cp__file-sync-indicator" :on "bottom"} - :canClickTarget true - :buttons [{:text "Got it!" :action (fn [] - (.hide jsTour) - (js/setTimeout #(state/pub-event! [:file-sync/maybe-onboarding-show :congrats]) 3000))}] - :popperOptions {:modifiers [{:name "preventOverflow" - :options {:padding 20}} - {:name "offset" - :options {:offset [0, 15]}}]}} - - ;; history - {:id "sync-history" - :text (h/render-html [:section [:h2 "⏱ Go back in time!"] - [:p "With file sync you can now go through older versions of this page and revert back to them if you like!"]]) - :attachTo {:element ".cp__btn_history_version" :on (if (util/mobile?) "bottom" "left")} - :beforeShowPromise #(when-let [^js target (js/document.querySelector ".toolbar-dots-btn")] - (.click target) - (p/delay 300)) - :canClickTarget true - :buttons [{:text "Got it!" :action (.-hide jsTour)}] - :popperOptions {:modifiers [{:name "preventOverflow" - :options {:padding 20}} - {:name "offset" - :options {:offset [0, 15]}}]}}]) - -(defn- create-steps-whiteboard! [^js jsTour] - [;; step 1 - {:id "whiteboard-home" - :text (h/render-html [:section [:h2 (t :on-boarding/tour-whiteboard-home "🖼")] - [:p (t :on-boarding/tour-whiteboard-home-description)]]) - :attachTo {:element ".nav-header .whiteboard" :on "right"} - :beforeShowPromise (fn [] - (when-not (state/sub :ui/left-sidebar-open?) - (state/toggle-left-sidebar!)) - (wait-target ".nav-header .whiteboard" 500) - (util/scroll-to-top)) - :canClickTarget true - :buttons [{:text (t :on-boarding/tour-whiteboard-btn-next) :action (.-next jsTour)}] - :popperOptions {:modifiers [{:name "preventOverflow" - :options {:padding 20}} - {:name "offset" - :options {:offset [0, 10]}}]}} - - ;; step 2 - {:id "whiteboard-new" - :text (h/render-html [:section [:h2 (t :on-boarding/tour-whiteboard-new "🆕️")] - [:p (t :on-boarding/tour-whiteboard-new-description)]]) - :beforeShowPromise (fn [] - (route-handler/redirect-to-whiteboard-dashboard!) - (wait-target ".dashboard-create-card" 500)) - :attachTo {:element ".dashboard-create-card" :on "bottom"} - :buttons [{:text (t :on-boarding/tour-whiteboard-btn-back) :classes "back" :action (.-back jsTour)} - {:text (t :on-boarding/tour-whiteboard-btn-finish) :action (.-complete jsTour)}] - :popperOptions {:modifiers [{:name "preventOverflow" - :options {:padding 20}} - {:name "offset" - :options {:offset [0, 10]}}]}}]) - -(defn start - [] - (let [^js jsTour (js/Shepherd.Tour. - (bean/->js - {:useModalOverlay true - :defaultStepOptions {:classes "cp__onboarding-quick-tour" - :scrollTo false}})) - steps (create-steps! jsTour) - steps (map-indexed #(assoc %2 :text (str (:text %2) (inject-steps-indicator (inc %1) (count steps)))) steps) - [show-skip! hide-skip!] (make-skip-fns jsTour)] - - ;; events - (doto jsTour - (.on "show" show-skip!) - (.on "hide" hide-skip!) - (.on "complete" hide-skip!) - (.on "cancel" hide-skip!)) - - (doseq [step steps] - (.addStep jsTour (bean/->js step))) - - (.start jsTour))) - -(defn start-file-sync - [type] - (let [^js jsTour (state/sub :file-sync/jstour-inst) - ^js jsTour (or jsTour - (let [^js inst (js/Shepherd.Tour. - (bean/->js - {:useModalOverlay true - :defaultStepOptions {:classes "cp__onboarding-quick-tour ignore-outside-event" - :scrollTo false}})) - steps (create-steps-file-sync! inst)] - - (.on inst "show" - (fn [] - (js/setTimeout - #(let [step (.-currentStep inst)] - (when-let [^js overlay (and step (.contains (.-classList (.-el step)) "ignore-outside-event") - (js/document.querySelector ".shepherd-modal-overlay-container"))] - (.add (.-classList overlay) "ignore-outside-event") - (some-> (.-target step) - (.addEventListener "click" (fn [] (.hide inst)))))) - 1000))) - - (doseq [step steps] - (.addStep inst (bean/->js step))) - - (state/set-state! :file-sync/jstour-inst inst) - - inst))] - - (js/setTimeout - #(.show jsTour (name type)) 200) - - ;(.start jsTour) - )) - -(defn start-whiteboard - [] - (let [^js jsTour (js/Shepherd.Tour. - (bean/->js - {:useModalOverlay true - :defaultStepOptions {:classes "cp__onboarding-quick-tour" - :scrollTo false}})) - steps (create-steps-whiteboard! jsTour) - steps (map-indexed #(assoc %2 :text (str (:text %2) (inject-steps-indicator (inc %1) (count steps)))) steps) - [show-skip! hide-skip!] (make-skip-fns jsTour)] - - ;; events - (doto jsTour - (.on "show" show-skip!) - (.on "hide" hide-skip!) - (.on "complete" hide-skip!) - (.on "cancel" hide-skip!)) - - (doseq [step steps] - (.addStep jsTour (bean/->js step))) - - (.start jsTour))) - -(defn ready - [callback] - (p/then - (if (nil? js/window.Shepherd) - (load-base-assets$) (p/resolved true)) - callback)) - -(def should-guide? false) - -(defn init [] - (command-palette/register {:id :document/quick-tour - :desc (t :on-boarding/command-palette-quick-tour) - :action #(ready start)}) - - ;; TODO: fix logic - (when should-guide? - (ready start))) diff --git a/src/main/frontend/components/page.cljs b/src/main/frontend/components/page.cljs index 88b9cb27b0..2c43bf6b5e 100644 --- a/src/main/frontend/components/page.cljs +++ b/src/main/frontend/components/page.cljs @@ -203,7 +203,7 @@ config (common-handler/config-with-document-mode hiccup-config) blocks (if block? [block] (db/sort-by-order children block))] [:div.relative - (page-blocks-inner block blocks config sidebar? block-id) + (page-blocks-inner block blocks config sidebar? false block-id) (when more? (shui/button {:variant :ghost :class "text-muted-foreground w-full" diff --git a/src/main/frontend/components/page_menu.cljs b/src/main/frontend/components/page_menu.cljs index be688bd075..c1399e6227 100644 --- a/src/main/frontend/components/page_menu.cljs +++ b/src/main/frontend/components/page_menu.cljs @@ -102,7 +102,6 @@ :options {:on-click (fn [] (page-handler/update-public-attribute! - repo page (if public? false true)))}}) diff --git a/src/main/frontend/components/property.cljs b/src/main/frontend/components/property.cljs index 9be6a11ac3..6ca168c632 100644 --- a/src/main/frontend/components/property.cljs +++ b/src/main/frontend/components/property.cljs @@ -231,11 +231,10 @@ (fn [{:keys [value label convert-page-to-property?]}] (let [property (when (uuid? value) (db/entity [:block/uuid value])) _ (reset! *property-key (if (uuid? value) (if convert-page-to-property? (:block/title property) label) value)) - batch? (pv/batch-operation?) - repo (state/get-current-repo)] + batch? (pv/batch-operation?)] (if (and property remove-property?) (let [block-ids (map :block/uuid (pv/get-operating-blocks block))] - (property-handler/batch-remove-block-property! repo block-ids (:db/ident property)) + (property-handler/batch-remove-block-property! block-ids (:db/ident property)) (shui/popup-hide!)) (do (when (and *show-new-property-config? (not (ldb/property? property))) diff --git a/src/main/frontend/components/property/config.cljs b/src/main/frontend/components/property/config.cljs index 170e59f36a..2e8bc1213e 100644 --- a/src/main/frontend/components/property/config.cljs +++ b/src/main/frontend/components/property/config.cljs @@ -314,7 +314,7 @@ (re-init-commands! property))) update-icon! (fn [icon] (property-handler/set-block-property! - (state/get-current-repo) (:block/uuid block) :logseq.property/icon + (:block/uuid block) :logseq.property/icon (select-keys icon [:id :type :color]))) icon (:logseq.property/icon block) value (db-property/closed-value-content block)] @@ -528,10 +528,9 @@ (defn- handle-delete-property! [block property & {:keys [class? class-schema?]}] (let [class? (or class? (ldb/class? block)) - remove! #(let [repo (state/get-current-repo)] - (if (and class? class-schema?) - (db-property-handler/class-remove-property! (:db/id block) (:db/id property)) - (property-handler/remove-block-property! repo (:block/uuid block) (:db/ident property))))] + remove! #(if (and class? class-schema?) + (db-property-handler/class-remove-property! (:db/id block) (:db/id property)) + (property-handler/remove-block-property! (:block/uuid block) (:db/ident property)))] (if (and class? class-schema?) (-> (shui/dialog-confirm! [:p (str "Are you sure you want to delete the property from this tag?")] diff --git a/src/main/frontend/components/property/value.cljs b/src/main/frontend/components/property/value.cljs index 3cfd7c8fb3..80a8e9557e 100644 --- a/src/main/frontend/components/property/value.cljs +++ b/src/main/frontend/components/property/value.cljs @@ -110,10 +110,8 @@ clear-overlay! (fn [] (shui/popup-hide-all!)) on-chosen! (fn [_e icon] - (let [repo (state/get-current-repo) - blocks (get-operating-blocks block)] + (let [blocks (get-operating-blocks block)] (property-handler/batch-set-block-property! - repo (map :db/id blocks) :logseq.property/icon (when icon (select-keys icon [:type :id :color])))) @@ -183,8 +181,7 @@ ([block property-id property-value] ( (util/evalue e) - string/lower-case - keyword - (#(if (= % :now) :now :todo)) - user-handler/set-preferred-workflow!))} - (for [workflow [:now :todo]] - [:option {:key (name workflow) :value (name workflow)} - (if (= workflow :now) "NOW/LATER" "TODO/DOING")])]]]]) - (defn outdenting-row [t logical-outdenting?] (toggle "preferred_outdenting" [(t :settings-page/preferred-outdenting) @@ -508,31 +487,6 @@ (let [value (not enable-all-pages-public?)] (config-handler/set-config! :publishing/all-pages-public? value))))) -(defn zotero-settings-row [] - [:div.it.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-center - [:label.block.text-sm.font-medium.leading-5.opacity-70 - {:for "zotero_settings"} - "Zotero"] - [:div.mt-1.sm:mt-0.sm:col-span-2 - [:div - (ui/button - (t :settings) - :class "text-sm" - :style {:margin-top "0px"} - :on-click - (fn [] - (state/close-settings!) - (route-handler/redirect! {:to :zotero-setting})))]]]) - -(defn auto-push-row [_t current-repo enable-git-auto-push?] - (when (and current-repo (string/starts-with? current-repo "https://")) - (toggle "enable_git_auto_push" - "Enable Git auto push" - enable-git-auto-push? - (fn [] - (let [value (not enable-git-auto-push?)] - (config-handler/set-config! :git-auto-push value)))))) - (defn usage-diagnostics-row [t instrument-disabled?] (toggle "usage-diagnostics" (t :settings-page/disable-sentry) @@ -675,25 +629,8 @@ (when current-repo (edit-custom-css)) (when current-repo (edit-export-css))])) -(defn file-format-row [t preferred-format] - [:div.it.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-center - [:label.block.text-sm.font-medium.leading-5.opacity-70 - {:for "preferred_format"} - (t :settings-page/preferred-file-format)] - [:div.mt-1.sm:mt-0.sm:col-span-2 - [:div.max-w-lg.rounded-md - [:select.form-select.is-small - {:value (name preferred-format) - :on-change (fn [e] - (let [format (-> (util/evalue e) - (string/lower-case) - keyword)] - (user-handler/set-preferred-format! format)))} - (for [format (map name [:org :markdown])] - [:option {:key format :value format} (string/capitalize format)])]]]]) - (rum/defcs settings-editor < rum/reactive - [_state current-repo] + [_state] (let [preferred-date-format (state/get-date-formatter) enable-timetracking? (state/enable-timetracking?) enable-all-pages-public? (state/all-pages-public?) @@ -1360,7 +1297,7 @@ (settings-general current-repo) :editor - (settings-editor current-repo) + (settings-editor) :keymap (shortcut/shortcut-keymap-x) diff --git a/src/main/frontend/components/svg.cljs b/src/main/frontend/components/svg.cljs index b9c37ed69f..f6efead5fc 100644 --- a/src/main/frontend/components/svg.cljs +++ b/src/main/frontend/components/svg.cljs @@ -39,16 +39,6 @@ :stroke "currentColor" :d d}]])) -(defn refresh - ([] (refresh 24 nil)) - ([size] (refresh size nil)) - ([size opts] - (hero-icon "M4 4V9H4.58152M19.9381 11C19.446 7.05369 16.0796 4 12 4C8.64262 4 5.76829 6.06817 4.58152 9M4.58152 9H9M20 20V15H19.4185M19.4185 15C18.2317 17.9318 15.3574 20 12 20C7.92038 20 4.55399 16.9463 4.06189 13M19.4185 15H15" - (cond-> (merge {:fill "none"} opts) - - (number? size) - (assoc :height size :width size))))) - (def close (hero-icon "M6 18L18 6M6 6L18 18")) (def folder (hero-icon "M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z")) @@ -121,16 +111,6 @@ C339.535,328.526,339.142,287.519,322.397,252.352z M201.513,216.553c0,0-16.568-16.568-21.323-21.035 c37.027-10.806,61.375,4.323,61.375,4.323C218.946,192.781,201.513,216.553,201.513,216.553z"}]]) -(rum/defc caret-up - [] - [:svg.h-4.w-4 - {:aria-hidden "true" - :version "1.1" - :view-box "0 0 320 512" - :fill "currentColor" - :display "inline-block"} - [:path {:d "M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"}]]) - (rum/defc caret-down [] [:svg.h-4.w-4 @@ -349,11 +329,12 @@ [:line {:x1 "12" :y1 "17" :x2 "12" :y2 "17.01"}] [:path {:d "M12 13.5a1.5 1.5 0 0 1 1 -1.5a2.6 2.6 0 1 0 -3 -4"}]])) -(defn roam-research - ([] (roam-research 16)) - ([size] - [:svg.icon {:width size :height size :viewBox "0 0 24 24" :stroke "none" :fill "currentColor"} - [:path {:d "M11.14.028C7.315.36 4.072 2.263 1.98 5.411.487 7.646-.232 10.589.067 13.211c.32 2.772 1.4 5.124 3.242 7.049 4.643 4.852 12.252 5.001 17.038.343 1.085-1.057 1.738-1.959 2.407-3.303a11.943 11.943 0 0 0-2.429-13.925C18.372 1.495 16.015.388 13.27.078c-.68-.083-1.56-.1-2.13-.05zm4.814 2.567c1.112.437 2.086 1.068 3.032 1.986.62.598 1.323 1.46 1.3 1.599-.016.072-1.626.725-1.792.725-.056 0-.078-.072-.078-.25 0-.138-.011-.248-.028-.248-.01 0-.758.459-1.654 1.023-.897.565-1.666 1.024-1.71 1.024-.05 0-.133-.061-.194-.139-.127-.16-.216-.171-.354-.044-.066.056-.1.166-.1.316v.226l-.824.46c-.46.249-.89.453-.968.453h-.144V8.161c0-.863.016-2.025.038-2.573.034-.99.04-1.007.155-1.007.117 0 .128-.028.155-.514.067-1.107.25-1.284 1.362-1.323l.514-.016.16-.233c.156-.226.167-.226.366-.171.116.028.46.15.764.271zm-7.05.011l.122.183.641-.006c.604 0 .659.011.902.15.355.21.482.497.526 1.145l.033.498.172.016.171.017.017 2.716.011 2.722-.232.138a3.024 3.024 0 0 0-.936.875l-.177.27h-5.24v-.325l-.592-.017-.598-.017-.398-.586c-.332-.493-.454-.626-.758-.825-.415-.265-.404-.193-.139-1.023.659-2.025 2.203-3.945 4.1-5.107.67-.409 1.932-.995 2.159-1.001.055-.005.155.078.216.177zm12.163 4.902c.354.686.725 1.588.725 1.765 0 .071-.1.149-.327.26-.326.154-.393.237-.393.503 0 .155-.166.36-.564.692l-.327.27h-.99v.333h-2.767v-.886l-.332-.42c-.183-.227-.332-.432-.332-.454 0-.022 1.073-.68 2.39-1.46 2.17-1.29 2.402-1.417 2.485-1.34.05.045.244.377.432.737zm-5.556 3.087c.243.354.454.664.46.686.01.027-.394.05-.892.05h-.918l-.2-.332c-.11-.183-.193-.36-.182-.388.028-.083 1.167-.708 1.234-.68.033.011.254.31.498.664zm-7.282 2.567c.254.398.442.741.415.769-.111.1-5.163 3.32-5.213 3.32-.155 0-.813-1.317-1.024-2.048-.249-.863-.265-.769.188-1.045.178-.111.371-.321.637-.703l.387-.548.603-.027.609-.028.017-.21.016-.205H7.77l.459.725zm1.815-.476c.066.122.127.249.127.288 0 .077-.996.686-1.057.647-.05-.028-.714-1.1-.714-1.15 0-.023.343-.028.758-.023l.758.017.128.221zm9.158-.044l.016.21.554.028c.597.027.525 0 1.184.481.011.006.06.194.11.41.095.425.128.459.493.547.288.072.293.133.072.78-.57 1.682-1.787 3.425-3.287 4.686-.642.542-.603.542-.559-.055.045-.614-.027-.935-.254-1.162-.26-.255-.526-.221-1.3.177-.51.26-.698.332-.897.332-.327 0-.631-.094-.825-.255l-.16-.127.393-.36c.42-.381.62-.73.525-.907-.16-.298-.453-.37-1.045-.26-.498.1-.864.105-1.013.028-.188-.105-.288-.376-.26-.741.028-.332.022-.343-.216-.62l-.238-.282v-1.765l.393-.271c.216-.144.559-.448.758-.675l.37-.404h5.17l.017.205zm-7.814 2.157v.758l-.276.282-.277.283.083.238c.1.282.105.52.022.674-.1.194-.293.222-.896.133a8.212 8.212 0 0 0-.764-.083c-.68 0-.703.482-.06 1.256.31.37.31.365-.084.564-.553.277-.902.25-1.389-.116-.41-.304-.647-.393-.968-.36-.21.017-.31.061-.443.2l-.177.177.006.686c0 .382-.011.691-.023.691-.06 0-1.023-.846-1.45-1.272-.442-.448-.995-1.123-.995-1.217 0-.044 1.516-.72 1.615-.72.034 0 .045.084.034.194-.011.105-.006.194.01.194.017 0 1.362-.747 2.989-1.66a204.276 204.276 0 0 1 3.005-1.66c.022 0 .038.343.038.758z"}]])) +(comment + (defn roam-research + ([] (roam-research 16)) + ([size] + [:svg.icon {:width size :height size :viewBox "0 0 24 24" :stroke "none" :fill "currentColor"} + [:path {:d "M11.14.028C7.315.36 4.072 2.263 1.98 5.411.487 7.646-.232 10.589.067 13.211c.32 2.772 1.4 5.124 3.242 7.049 4.643 4.852 12.252 5.001 17.038.343 1.085-1.057 1.738-1.959 2.407-3.303a11.943 11.943 0 0 0-2.429-13.925C18.372 1.495 16.015.388 13.27.078c-.68-.083-1.56-.1-2.13-.05zm4.814 2.567c1.112.437 2.086 1.068 3.032 1.986.62.598 1.323 1.46 1.3 1.599-.016.072-1.626.725-1.792.725-.056 0-.078-.072-.078-.25 0-.138-.011-.248-.028-.248-.01 0-.758.459-1.654 1.023-.897.565-1.666 1.024-1.71 1.024-.05 0-.133-.061-.194-.139-.127-.16-.216-.171-.354-.044-.066.056-.1.166-.1.316v.226l-.824.46c-.46.249-.89.453-.968.453h-.144V8.161c0-.863.016-2.025.038-2.573.034-.99.04-1.007.155-1.007.117 0 .128-.028.155-.514.067-1.107.25-1.284 1.362-1.323l.514-.016.16-.233c.156-.226.167-.226.366-.171.116.028.46.15.764.271zm-7.05.011l.122.183.641-.006c.604 0 .659.011.902.15.355.21.482.497.526 1.145l.033.498.172.016.171.017.017 2.716.011 2.722-.232.138a3.024 3.024 0 0 0-.936.875l-.177.27h-5.24v-.325l-.592-.017-.598-.017-.398-.586c-.332-.493-.454-.626-.758-.825-.415-.265-.404-.193-.139-1.023.659-2.025 2.203-3.945 4.1-5.107.67-.409 1.932-.995 2.159-1.001.055-.005.155.078.216.177zm12.163 4.902c.354.686.725 1.588.725 1.765 0 .071-.1.149-.327.26-.326.154-.393.237-.393.503 0 .155-.166.36-.564.692l-.327.27h-.99v.333h-2.767v-.886l-.332-.42c-.183-.227-.332-.432-.332-.454 0-.022 1.073-.68 2.39-1.46 2.17-1.29 2.402-1.417 2.485-1.34.05.045.244.377.432.737zm-5.556 3.087c.243.354.454.664.46.686.01.027-.394.05-.892.05h-.918l-.2-.332c-.11-.183-.193-.36-.182-.388.028-.083 1.167-.708 1.234-.68.033.011.254.31.498.664zm-7.282 2.567c.254.398.442.741.415.769-.111.1-5.163 3.32-5.213 3.32-.155 0-.813-1.317-1.024-2.048-.249-.863-.265-.769.188-1.045.178-.111.371-.321.637-.703l.387-.548.603-.027.609-.028.017-.21.016-.205H7.77l.459.725zm1.815-.476c.066.122.127.249.127.288 0 .077-.996.686-1.057.647-.05-.028-.714-1.1-.714-1.15 0-.023.343-.028.758-.023l.758.017.128.221zm9.158-.044l.016.21.554.028c.597.027.525 0 1.184.481.011.006.06.194.11.41.095.425.128.459.493.547.288.072.293.133.072.78-.57 1.682-1.787 3.425-3.287 4.686-.642.542-.603.542-.559-.055.045-.614-.027-.935-.254-1.162-.26-.255-.526-.221-1.3.177-.51.26-.698.332-.897.332-.327 0-.631-.094-.825-.255l-.16-.127.393-.36c.42-.381.62-.73.525-.907-.16-.298-.453-.37-1.045-.26-.498.1-.864.105-1.013.028-.188-.105-.288-.376-.26-.741.028-.332.022-.343-.216-.62l-.238-.282v-1.765l.393-.271c.216-.144.559-.448.758-.675l.37-.404h5.17l.017.205zm-7.814 2.157v.758l-.276.282-.277.283.083.238c.1.282.105.52.022.674-.1.194-.293.222-.896.133a8.212 8.212 0 0 0-.764-.083c-.68 0-.703.482-.06 1.256.31.37.31.365-.084.564-.553.277-.902.25-1.389-.116-.41-.304-.647-.393-.968-.36-.21.017-.31.061-.443.2l-.177.177.006.686c0 .382-.011.691-.023.691-.06 0-1.023-.846-1.45-1.272-.442-.448-.995-1.123-.995-1.217 0-.044 1.516-.72 1.615-.72.034 0 .045.084.034.194-.011.105-.006.194.01.194.017 0 1.362-.747 2.989-1.66a204.276 204.276 0 0 1 3.005-1.66c.022 0 .038.343.038.758z"}]]))) (comment (def circle-stop diff --git a/src/main/frontend/components/views.cljs b/src/main/frontend/components/views.cljs index e200d68923..bde2e50684 100644 --- a/src/main/frontend/components/views.cljs +++ b/src/main/frontend/components/views.cljs @@ -163,8 +163,7 @@ (db-property-handler/delete-property-value! (:db/id view-entity) :logseq.property.table/pinned-columns (:db/id property)) - (property-handler/set-block-property! (state/get-current-repo) - (:db/id view-entity) + (property-handler/set-block-property! (:db/id view-entity) :logseq.property.table/pinned-columns (:db/id property))) (shui/popup-hide! id))} @@ -1545,38 +1544,37 @@ (defn- db-set-table-state! [entity {:keys [set-sorting! set-filters! set-visible-columns! set-ordered-columns! set-sized-columns!]}] - (let [repo (state/get-current-repo)] - {:set-sorting! - (fn [sorting] + {:set-sorting! + (fn [sorting] + (p/do! + (property-handler/set-block-property! (:db/id entity) :logseq.property.table/sorting sorting) + (set-sorting! sorting))) + :set-filters! + (fn [filters] + (let [filters (-> (update filters :filters table-filters->persist-state) + (update :or? boolean))] (p/do! - (property-handler/set-block-property! repo (:db/id entity) :logseq.property.table/sorting sorting) - (set-sorting! sorting))) - :set-filters! - (fn [filters] - (let [filters (-> (update filters :filters table-filters->persist-state) - (update :or? boolean))] - (p/do! - (property-handler/set-block-property! repo (:db/id entity) :logseq.property.table/filters filters) - (set-filters! filters)))) - :set-visible-columns! - (fn [columns] - (let [hidden-columns (vec (keep (fn [[column visible?]] - (when (false? visible?) - column)) columns))] - (p/do! - (property-handler/set-block-property! repo (:db/id entity) :logseq.property.table/hidden-columns hidden-columns) - (set-visible-columns! columns)))) - :set-ordered-columns! - (fn [ordered-columns] - (let [ids (vec (remove #{:select} ordered-columns))] - (p/do! - (property-handler/set-block-property! repo (:db/id entity) :logseq.property.table/ordered-columns ids) - (set-ordered-columns! ordered-columns)))) - :set-sized-columns! - (fn [sized-columns] + (property-handler/set-block-property! (:db/id entity) :logseq.property.table/filters filters) + (set-filters! filters)))) + :set-visible-columns! + (fn [columns] + (let [hidden-columns (vec (keep (fn [[column visible?]] + (when (false? visible?) + column)) columns))] (p/do! - (property-handler/set-block-property! repo (:db/id entity) :logseq.property.table/sized-columns sized-columns) - (set-sized-columns! sized-columns)))})) + (property-handler/set-block-property! (:db/id entity) :logseq.property.table/hidden-columns hidden-columns) + (set-visible-columns! columns)))) + :set-ordered-columns! + (fn [ordered-columns] + (let [ids (vec (remove #{:select} ordered-columns))] + (p/do! + (property-handler/set-block-property! (:db/id entity) :logseq.property.table/ordered-columns ids) + (set-ordered-columns! ordered-columns)))) + :set-sized-columns! + (fn [sized-columns] + (p/do! + (property-handler/set-block-property! (:db/id entity) :logseq.property.table/sized-columns sized-columns) + (set-sized-columns! sized-columns)))}) (rum/defc lazy-item [data idx {:keys [properties list-view? scrolling?]} item-render] diff --git a/src/main/frontend/config.cljs b/src/main/frontend/config.cljs index 61587d135f..58d1f681db 100644 --- a/src/main/frontend/config.cljs +++ b/src/main/frontend/config.cljs @@ -2,14 +2,11 @@ "App config and fns built on top of configuration" (:require [clojure.set :as set] [clojure.string :as string] - [frontend.mobile.util :as mobile-util] [frontend.state :as state] [frontend.util :as util] - [goog.crypt :as crypt] [goog.crypt.Md5] [logseq.common.config :as common-config] [logseq.common.path :as path] - [logseq.common.util :as common-util] [logseq.db.sqlite.util :as sqlite-util] [shadow.resource :as rc])) @@ -29,31 +26,25 @@ (def ENABLE-SETTINGS-ACCOUNT-TAB false) (if ENABLE-FILE-SYNC-PRODUCTION - (do (def FILE-SYNC-PROD? true) - (def LOGIN-URL + (do (def LOGIN-URL "https://logseq-prod.auth.us-east-1.amazoncognito.com/login?client_id=3c7np6bjtb4r1k1bi9i049ops5&response_type=code&scope=email+openid+phone&redirect_uri=logseq%3A%2F%2Fauth-callback") (def API-DOMAIN "api.logseq.com") - (def WS-URL "wss://ws.logseq.com/file-sync?graphuuid=%s") (def COGNITO-IDP "https://cognito-idp.us-east-1.amazonaws.com/") (def COGNITO-CLIENT-ID "69cs1lgme7p8kbgld8n5kseii6") (def REGION "us-east-1") (def USER-POOL-ID "us-east-1_dtagLnju8") (def IDENTITY-POOL-ID "us-east-1:d6d3b034-1631-402b-b838-b44513e93ee0") - (def OAUTH-DOMAIN "logseq-prod.auth.us-east-1.amazoncognito.com") - (def CONNECTIVITY-TESTING-S3-URL "https://logseq-connectivity-testing-prod.s3.us-east-1.amazonaws.com/logseq-connectivity-testing")) + (def OAUTH-DOMAIN "logseq-prod.auth.us-east-1.amazoncognito.com")) - (do (def FILE-SYNC-PROD? false) - (def LOGIN-URL + (do (def LOGIN-URL "https://logseq-test2.auth.us-east-2.amazoncognito.com/login?client_id=3ji1a0059hspovjq5fhed3uil8&response_type=code&scope=email+openid+phone&redirect_uri=logseq%3A%2F%2Fauth-callback") (def API-DOMAIN "api-dev.logseq.com") - (def WS-URL "wss://ws-dev.logseq.com/file-sync?graphuuid=%s") (def COGNITO-IDP "https://cognito-idp.us-east-2.amazonaws.com/") (def COGNITO-CLIENT-ID "1qi1uijg8b6ra70nejvbptis0q") (def REGION "us-east-2") (def USER-POOL-ID "us-east-2_kAqZcxIeM") (def IDENTITY-POOL-ID "us-east-2:cc7d2ad3-84d0-4faf-98fe-628f6b52c0a5") - (def OAUTH-DOMAIN "logseq-test2.auth.us-east-2.amazoncognito.com") - (def CONNECTIVITY-TESTING-S3-URL "https://logseq-connectivity-testing-prod.s3.us-east-1.amazonaws.com/logseq-connectivity-testing"))) + (def OAUTH-DOMAIN "logseq-test2.auth.us-east-2.amazoncognito.com"))) (goog-define ENABLE-RTC-SYNC-PRODUCTION false) (if ENABLE-RTC-SYNC-PRODUCTION @@ -85,10 +76,6 @@ ;; ============ (def app-name common-config/app-name) -(def website - (if dev? - "http://localhost:3000" - (util/format "https://%s.com" app-name))) ;; FIXME: (def app-website @@ -289,13 +276,6 @@ (+ 3 (count label))] ["" 0])) -(defn get-file-extension - [format] - (case (keyword format) - :markdown - "md" - (name format))) - (defonce default-journals-directory "journals") (defonce default-pages-directory "pages") @@ -317,38 +297,22 @@ (or (nil? repo-url) (= repo-url demo-repo) (string/ends-with? repo-url demo-repo)))) -(defonce recycle-dir ".recycle") (def config-file "config.edn") (def custom-css-file "custom.css") (def export-css-file "export.css") (def custom-js-file "custom.js") (def config-default-content (rc/inline "templates/config.edn")) -(def config-default-content-md5 (let [md5 (new crypt/Md5)] - (.update md5 (crypt/stringToUtf8ByteArray config-default-content)) - (crypt/byteArrayToHex (.digest md5)))) ;; NOTE: repo-url is the unique identifier of a repo. -;; - `local` => in-memory demo graph -;; - `logseq_local_/absolute/path/to/graph` => local graph, native fs backend -;; - `logseq_local_x:/absolute/path/to/graph` => local graph, native fs backend, on Windows -;; - `logseq_local_GraphName` => local graph, browser fs backend ;; - `logseq_db_GraphName` => db based graph, sqlite as backend ;; - Use `""` while writing global files -(defonce idb-db-prefix "logseq-db/") -(defonce local-db-prefix "logseq_local_") -(defonce local-handle "handle") (defonce db-version-prefix common-config/db-version-prefix) (defn db-graph-name [repo-with-prefix] (string/replace-first repo-with-prefix db-version-prefix "")) -(defn local-file-based-graph? - [s] - (and (string? s) - (string/starts-with? s local-db-prefix))) - (defn db-based-graph? ([] (db-based-graph? (state/get-current-repo))) @@ -363,78 +327,18 @@ (defn get-local-dir [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 - [dir] - (str local-db-prefix dir)) + (path/path-join (get-in @state/state [:system/info :home-dir]) + "logseq" + "graphs" + (string/replace repo db-version-prefix ""))) (defn get-repo-dir [repo-url] (when repo-url - (let [db-based? (db-based-graph? repo-url)] - (cond - (and (util/electron?) db-based-graph?) - (get-local-dir repo-url) - - db-based? - (str "memory:///" - (string/replace-first repo-url db-version-prefix "")) - - (and (util/electron?) (local-file-based-graph? repo-url)) - (get-local-dir repo-url) - - (and (mobile-util/native-platform?) (local-file-based-graph? repo-url)) - (let [dir (get-local-dir repo-url)] - (if (string/starts-with? dir "file://") - dir - (path/path-join "file://" dir))) - - ;; Special handling for demo graph - (= repo-url demo-repo) - "memory:///local" - - ;; nfs, browser-fs-access - ;; Format: logseq_local_{dir-name} - (or (local-file-based-graph? repo-url) - (and publishing? (not db-based?))) - (string/replace-first repo-url local-db-prefix "") - - ;; unit test - (= repo-url "test-db") - "/test-db" - - :else - (do - (js/console.error "Unknown Repo URL type:" repo-url) - (str "/" - (->> (take-last 2 (string/split repo-url #"/")) - (string/join "_")))))))) - -(defn get-string-repo-dir - [repo-dir] - (if (mobile-util/native-ios?) - (str (if (mobile-util/in-iCloud-container-path? repo-dir) - "iCloud" - (cond (mobile-util/native-iphone?) - "On My iPhone" - - (mobile-util/native-ipad?) - "On My iPad" - - :else - "Local")) - (->> (string/split repo-dir "Documents/") - last - common-util/safe-decode-uri-component - (str "/" (string/capitalize app-name) "/"))) - (get-repo-dir (get-local-repo repo-dir)))) + (if (util/electron?) + (get-local-dir repo-url) + (str "memory:///" + (string/replace-first repo-url db-version-prefix ""))))) (defn get-repo-fpath [repo-url path] @@ -460,26 +364,6 @@ (when-let [repo-dir (get-repo-dir repo)] (path/path-join repo-dir app-name export-css-file)))) -(defn expand-relative-assets-path - "Resolve all relative links in custom.css to assets:// URL" - ;; ../assets/xxx -> {assets|file}://{current-graph-root-path}/xxx - [source] - (when-not (string/blank? source) - (let [protocol (and (string? source) - (not (string/blank? source)) - (if (util/electron?) "assets://" "file://")) - ;; BUG: use "assets" as fake current directory - assets-link-fn (fn [_] - (let [graph-root (get-repo-dir (state/get-current-repo)) - full-path (if (util/safe-re-find #"^(file|assets):" graph-root) - (path/path-join graph-root "assets") - (path/path-join protocol graph-root "assets"))] - (str (cond-> full-path - (mobile-util/native-platform?) - (mobile-util/convert-file-src)) - "/")))] - (string/replace source #"\.\./assets/" assets-link-fn)))) - (defn get-current-repo-assets-root [] (when-let [repo-dir (get-repo-dir (state/get-current-repo))] @@ -498,7 +382,3 @@ (path/path-join app-name custom-js-file) (when-let [repo-dir (get-repo-dir repo)] (path/path-join repo-dir app-name custom-js-file))))) - -(defn get-block-hidden-properties - [] - (:block-hidden-properties (state/get-config))) diff --git a/src/main/frontend/db/conn.cljs b/src/main/frontend/db/conn.cljs index 56625a29b7..f35dea76bd 100644 --- a/src/main/frontend/db/conn.cljs +++ b/src/main/frontend/db/conn.cljs @@ -37,9 +37,6 @@ (mobile-util/native-platform?) (text-util/get-graph-name-from-path repo-url) - (config/local-file-based-graph? repo-url) - (config/get-local-dir repo-url) - :else (db-conn-state/get-repo-path repo-url))) diff --git a/src/main/frontend/db/persist.cljs b/src/main/frontend/db/persist.cljs index ce86431fd6..ed2bb0d319 100644 --- a/src/main/frontend/db/persist.cljs +++ b/src/main/frontend/db/persist.cljs @@ -4,33 +4,27 @@ [electron.ipc :as ipc] [frontend.config :as config] [frontend.db.conn :as db-conn] - [frontend.idb :as idb] [frontend.persist-db :as persist-db] [frontend.util :as util] [promesa.core :as p])) (defn get-all-graphs [] - (p/let [idb-repos (when-not (or util/web-platform? (util/mobile?)) - (idb/get-nfs-dbs)) - repos (persist-db/ electron-disk-graphs bean/->clj))))))) + (some-> electron-disk-graphs bean/->clj)))))) (defn delete-graph! [graph] (let [key (db-conn/get-repo-path graph)] (p/let [_ (persist-db/ last-visit-page 0)) - (debounced-set-property! (state/get-current-repo) - (:db/id asset) + (debounced-set-property! (:db/id asset) :logseq.property.asset/last-visit-page last-visit-page))) @@ -916,11 +915,6 @@ (string? last-visit-scale)) (debounced-set-storage! (str "pdf-last-visit-scale/" (:db/id asset)) (or last-visit-scale "auto")))) -(defn- get-last-visit-scale - [asset] - (or (storage/get (str "pdf-last-visit-scale/" (:db/id asset))) - "auto")) - (rum/defc ^:large-vars/data-var pdf-loader [{:keys [url hls-file identity filename block] :as pdf-current}] (let [*doc-ref (rum/use-ref nil) diff --git a/src/main/frontend/fs/node.cljs b/src/main/frontend/fs/node.cljs index 36727cac33..daef077756 100644 --- a/src/main/frontend/fs/node.cljs +++ b/src/main/frontend/fs/node.cljs @@ -7,7 +7,6 @@ [frontend.db :as db] [frontend.fs.protocol :as protocol] [frontend.util :as util] - [goog.object :as gobj] [lambdaisland.glogi :as log] [logseq.common.path :as path] [promesa.core :as p])) diff --git a/src/main/frontend/handler.cljs b/src/main/frontend/handler.cljs index f33bbcde35..c2a9ca016e 100644 --- a/src/main/frontend/handler.cljs +++ b/src/main/frontend/handler.cljs @@ -108,7 +108,6 @@ (state/set-component! :block/reference block/block-reference) (state/set-component! :block/blocks-container block/blocks-container) (state/set-component! :block/properties-cp block/db-properties-cp) - (state/set-component! :block/embed block/block-embed) (state/set-component! :block/page-cp block/page-cp) (state/set-component! :block/inline-text block/inline-text) (state/set-component! :block/asset-cp block/asset-cp) diff --git a/src/main/frontend/handler/code.cljs b/src/main/frontend/handler/code.cljs index a6c6df9176..767578cdeb 100644 --- a/src/main/frontend/handler/code.cljs +++ b/src/main/frontend/handler/code.cljs @@ -1,7 +1,6 @@ (ns frontend.handler.code "Codemirror editor related." (:require [clojure.string :as string] - [frontend.config :as config] [frontend.db :as db] [frontend.handler.db-based.editor :as db-editor-handler] [frontend.handler.editor :as editor-handler] @@ -19,7 +18,6 @@ ds (.-dataset textarea) value (gobj/get textarea "value") default-value (or (.-v ds) (gobj/get textarea "defaultValue")) - repo (state/get-current-repo) block (or (:code-block config) (:block config))] (when (not= value default-value) ;; update default value for the editor initial state diff --git a/src/main/frontend/handler/common.cljs b/src/main/frontend/handler/common.cljs index fdad50ed62..c9fb03cc9f 100644 --- a/src/main/frontend/handler/common.cljs +++ b/src/main/frontend/handler/common.cljs @@ -1,19 +1,16 @@ (ns frontend.handler.common "Common fns for handlers" - (:require ["ignore" :as Ignore] - [cljs-bean.core :as bean] - [cljs.reader :as reader] + (:require [cljs.reader :as reader] [frontend.db :as db] - [frontend.handler.property :as property-handler] [frontend.state :as state] [frontend.util :as util] [goog.functions :refer [debounce]] [goog.object :as gobj])) (defn copy-to-clipboard-without-id-property! - [repo format raw-text html blocks] + [repo raw-text html blocks] (let [blocks' (map (fn [b] (assoc b :block/title (:block/raw-title (db/entity (:db/id b))))) blocks)] - (util/copy-to-clipboard! (property-handler/remove-id-property repo format raw-text) + (util/copy-to-clipboard! raw-text :html html :graph repo :blocks blocks'))) @@ -23,13 +20,6 @@ (assoc config :document/mode? (state/sub [:document/mode?]))) -(defn ignore-files - [pattern paths] - (-> (Ignore) - (.add pattern) - (.filter (bean/->js paths)) - (bean/->clj))) - (defn safe-read-string [content error-message-or-handler] (try diff --git a/src/main/frontend/handler/common/developer.cljs b/src/main/frontend/handler/common/developer.cljs index 033f40b998..5920646a40 100644 --- a/src/main/frontend/handler/common/developer.cljs +++ b/src/main/frontend/handler/common/developer.cljs @@ -2,7 +2,6 @@ "Common fns for developer related functionality" (:require [cljs.pprint :as pprint] [datascript.impl.entity :as de] - [frontend.config :as config] [frontend.db :as db] [frontend.format.mldoc :as mldoc] [frontend.handler.db-based.rtc :as rtc-handler] diff --git a/src/main/frontend/handler/common/page.cljs b/src/main/frontend/handler/common/page.cljs index a3ca92c959..0c8ac51740 100644 --- a/src/main/frontend/handler/common/page.cljs +++ b/src/main/frontend/handler/common/page.cljs @@ -48,7 +48,7 @@ (wrap-tags title) title) parsed-result (db-editor-handler/wrap-parse-block {:block/title title}) - has-tags? (and (seq (:block/tags parsed-result))) + has-tags? (seq (:block/tags parsed-result)) title' (if has-tags? (some-> (first (common-util/split-first (str "#" page-ref/left-brackets) (:block/title parsed-result))) @@ -87,35 +87,6 @@ ;; favorite fns ;; ============ -(defn file-favorited? - [page-name] - (let [favorites (->> (:favorites (state/get-config)) - (filter string?) - (map string/lower-case) - (set))] - (contains? favorites (string/lower-case page-name)))) - -(defn file-favorite-page! - [page-name] - (when-not (string/blank? page-name) - (let [favorites (-> - (cons - page-name - (or (:favorites (state/get-config)) [])) - (distinct) - (vec))] - (config-handler/set-config! :favorites favorites)))) - -(defn file-unfavorite-page! - [page-name] - (when-not (string/blank? page-name) - (let [old-favorites (:favorites (state/get-config)) - new-favorites (->> old-favorites - (remove #(= (string/lower-case %) (string/lower-case page-name))) - (vec))] - (when-not (= old-favorites new-favorites) - (config-handler/set-config! :favorites new-favorites))))) - (defn- find-block-in-favorites-page [page-block-uuid] (let [db (conn/get-db)] diff --git a/src/main/frontend/handler/db_based/editor.cljs b/src/main/frontend/handler/db_based/editor.cljs index 7d8f16888d..b6324938eb 100644 --- a/src/main/frontend/handler/db_based/editor.cljs +++ b/src/main/frontend/handler/db_based/editor.cljs @@ -91,7 +91,7 @@ (ui-handler/add-style-if-exists!)))))) (defn batch-set-heading! - [repo block-ids heading] + [block-ids heading] (ui-outliner-tx/transact! {:outliner-op :save-block} (doseq [id block-ids] @@ -99,5 +99,5 @@ raw-title (:block/raw-title e) new-raw-title (commands/clear-markdown-heading raw-title)] (when (not= new-raw-title raw-title) - (property-handler/set-block-property! repo id :block/title new-raw-title)))) - (property-handler/batch-set-block-property! repo block-ids :logseq.property/heading heading))) + (property-handler/set-block-property! id :block/title new-raw-title)))) + (property-handler/batch-set-block-property! block-ids :logseq.property/heading heading))) diff --git a/src/main/frontend/handler/db_based/export.cljs b/src/main/frontend/handler/db_based/export.cljs index 45ba660711..ba03e44f69 100644 --- a/src/main/frontend/handler/db_based/export.cljs +++ b/src/main/frontend/handler/db_based/export.cljs @@ -71,7 +71,7 @@ ;; Copied from handler.export (defn- file-name [repo extension] - (-> (string/replace repo config/local-db-prefix "") + (-> repo (string/replace #"^/+" "") (str "_" (quot (util/time-ms) 1000)) (str "." (string/lower-case (name extension))))) diff --git a/src/main/frontend/handler/dnd.cljs b/src/main/frontend/handler/dnd.cljs index 0bd229ea14..b8bf1cb623 100644 --- a/src/main/frontend/handler/dnd.cljs +++ b/src/main/frontend/handler/dnd.cljs @@ -3,10 +3,8 @@ (:require [frontend.db :as db] [frontend.handler.block :as block-handler] [frontend.handler.editor :as editor-handler] - [frontend.handler.property :as property-handler] [frontend.modules.outliner.op :as outliner-op] [frontend.modules.outliner.ui :as ui-outliner-tx] - [frontend.state :as state] [frontend.util.ref :as ref] [logseq.db :as ldb])) @@ -26,27 +24,16 @@ top? (= move-to :top) nested? (= move-to :nested) alt-key? (and event (.-altKey event)) - current-format (get first-block :block/format :markdown) - target-format (get target-block :block/format :markdown) target-block (if nested? target-block (or original-block target-block))] (cond ;; alt pressed, make a block-ref (and alt-key? (= (count blocks) 1)) - (do - (property-handler/file-persist-block-id! (state/get-current-repo) (:block/uuid first-block)) - (editor-handler/api-insert-new-block! - (ref/->block-ref (:block/uuid first-block)) - {:block-uuid (:block/uuid target-block) - :sibling? (not nested?) - :before? top?})) - -;; format mismatch - (and current-format target-format (not= current-format target-format)) - (state/pub-event! [:notification/show - {:content [:div "Those two pages have different formats."] - :status :warning - :clear? true}]) + (editor-handler/api-insert-new-block! + (ref/->block-ref (:block/uuid first-block)) + {:block-uuid (:block/uuid target-block) + :sibling? (not nested?) + :before? top?}) (every? map? (conj blocks' target-block)) (let [blocks' (block-handler/get-top-level-blocks blocks')] diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index 3e0a3ceee8..ab56bad470 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -87,12 +87,12 @@ (defn set-block-own-order-list-type! [block type] (when-let [uuid (:block/uuid block)] - (property-handler/set-block-property! (state/get-current-repo) uuid (pu/get-pid :logseq.property/order-list-type) (name type)))) + (property-handler/set-block-property! uuid (pu/get-pid :logseq.property/order-list-type) (name type)))) (defn remove-block-own-order-list-type! [block] (when-let [uuid (:block/uuid block)] - (property-handler/remove-block-property! (state/get-current-repo) uuid (pu/get-pid :logseq.property/order-list-type)))) + (property-handler/remove-block-property! uuid (pu/get-pid :logseq.property/order-list-type)))) (defn own-order-number-list? [block] @@ -108,11 +108,10 @@ (when (seq blocks) (let [has-ordered? (some own-order-number-list? blocks) blocks-uuids (some->> blocks (map :block/uuid) (remove nil?)) - order-list-prop (pu/get-pid :logseq.property/order-list-type) - repo (state/get-current-repo)] + order-list-prop (pu/get-pid :logseq.property/order-list-type)] (if has-ordered? - (property-handler/batch-remove-block-property! repo blocks-uuids order-list-prop) - (property-handler/batch-set-block-property! repo blocks-uuids order-list-prop "number"))))) + (property-handler/batch-remove-block-property! blocks-uuids order-list-prop) + (property-handler/batch-set-block-property! blocks-uuids order-list-prop "number"))))) (defn get-selection-and-format [] @@ -266,13 +265,6 @@ opts' (outliner-save-block! block')))) -;; id: block dom id, "ls-block-counter-uuid" -(defn- another-block-with-same-id-exists? - [current-id block-id] - (when-let [id (and (string? block-id) (parse-uuid block-id))] - (and (not= current-id id) - (db/entity [:block/uuid id])))) - (defn save-block-if-changed! ([block value] (save-block-if-changed! block value nil)) @@ -630,9 +622,8 @@ :logseq.property/status.done :logseq.property/status.done nil - :logseq.property/status.todo) - repo (state/get-current-repo)] - (property-handler/set-block-property! repo (:block/uuid block) + :logseq.property/status.todo)] + (property-handler/set-block-property! (:block/uuid block) :logseq.property/status (:db/id (db/entity next-status))))) @@ -673,7 +664,7 @@ (outliner-op/delete-blocks! blocks {})))))) (defn- move-to-prev-block - [repo sibling-block format value] + [repo sibling-block value] (when (and repo sibling-block) (when-let [sibling-block-id (dom/attr sibling-block "blockid")] (when-let [sibling-entity (db/entity [:block/uuid (uuid sibling-block-id)])] @@ -715,7 +706,7 @@ (ldb/page? block2)))) (defn delete-block-inner! - [repo {:keys [block-id value format config block-container current-block next-block delete-concat?]}] + [repo {:keys [block-id value config block-container current-block next-block delete-concat?]}] (when (and block-id (not (one-page-another-block current-block next-block))) (when-let [block-e (db/entity [:block/uuid block-id])] (let [prev-block (db-model/get-prev (db/get-db) (:db/id block-e)) @@ -742,7 +733,7 @@ {:container (util/rec-get-blocks-container block-parent)}) (util/get-prev-block-non-collapsed-non-embed block-parent)) {:keys [prev-block new-content edit-block-f]} - (move-to-prev-block repo sibling-or-parent-block format value) + (move-to-prev-block repo sibling-or-parent-block value) concat-prev-block? (boolean (and prev-block new-content)) transact-opts {:outliner-op :delete-blocks}] (cond @@ -843,7 +834,6 @@ (p/do! (when (and sibling-block (not mobile?)) (let [{:keys [edit-block-f]} (move-to-prev-block repo sibling-block - (get block :block/format :markdown) "")] (state/set-state! :editor/edit-block-fn edit-block-f))) (let [journals (and mobile? (filter ldb/journal? blocks')) @@ -951,7 +941,7 @@ [k v'])) b) (into {})) (assoc :db/id (:db/id b)))))))] - (common-handler/copy-to-clipboard-without-id-property! repo (get block :block/format :markdown) content (when html? html) copied-blocks)) + (common-handler/copy-to-clipboard-without-id-property! repo content (when html? html) copied-blocks)) (state/set-block-op-type! :copy) ;; (notification/show! "Copied!" :success) ))) @@ -1163,7 +1153,7 @@ [_top-level-block-uuids md-content] (compose-copied-blocks-contents repo [block-id]) html (export-html/export-blocks-as-html repo [block-id] nil) sorted-blocks (tree/get-sorted-block-and-children repo (:db/id block))] - (common-handler/copy-to-clipboard-without-id-property! repo (get block :block/format :markdown) md-content html sorted-blocks) + (common-handler/copy-to-clipboard-without-id-property! repo md-content html sorted-blocks) (state/set-block-op-type! :cut) (delete-block-aux! block)))) @@ -1292,13 +1282,6 @@ (when (db/entity repo [:block/uuid (:block/uuid block)]) (save-block-aux! block value opts))))) -(defn save-blocks! - [blocks] - (ui-outliner-tx/transact! - {:outliner-op :save-block} - (doseq [[block value] blocks] - (save-block-if-changed! block value)))) - (defonce *auto-save-timeout (atom nil)) (defn- clear-block-auto-save-timeout! [] @@ -1306,10 +1289,9 @@ (js/clearTimeout @*auto-save-timeout))) (defn save-current-block! - "skip-properties? if set true, when editing block is likely be properties, skip saving" ([] (save-current-block! {})) - ([{:keys [force? skip-properties? current-block] :as opts}] + ([{:keys [force? current-block] :as opts}] (clear-block-auto-save-timeout!) ;; non English input method (when-not (or (state/editor-in-composition?) @@ -1761,8 +1743,7 @@ (defn resize-image! [config block-id _metadata _full_text size] (let [asset (:asset-block config)] - (property-handler/set-block-property! (state/get-current-repo) - (if asset (:db/id asset) block-id) + (property-handler/set-block-property! (if asset (:db/id asset) block-id) :logseq.property.asset/resize-metadata size))) @@ -1822,7 +1803,7 @@ ;; Only trigger at beginning of a line, before whitespace or after a reference (or (re-find #"(?m)^#" (str (.-value input))) (start-of-new-word? input pos) - (and (= page-ref/right-brackets (common-util/safe-subs (str (.-value input)) (- pos 3) (dec pos)))))) + (= page-ref/right-brackets (common-util/safe-subs (str (.-value input)) (- pos 3) (dec pos))))) (do (state/set-editor-action-data! {:pos (cursor/get-caret-pos input)}) (state/set-editor-last-pos! pos) @@ -1853,9 +1834,6 @@ :forward-pos 3 :command :block-ref}) - ;; Save it so it'll be parsed correctly in the future - (property-handler/file-persist-block-id! (state/get-current-repo) (:block/uuid chosen)) - (when-let [input (gdom/getElement id)] (.focus input))))) @@ -1963,7 +1941,7 @@ (defn- block-tree->blocks "keep-uuid? - maintain the existing :uuid in tree vec" - [repo tree-vec format keep-uuid? page-name] + [tree-vec format keep-uuid? page-name] (->> (outliner-core/tree-vec-flatten tree-vec) (map (fn [block] (let [content (:content block) @@ -1982,12 +1960,11 @@ "`tree-vec`: a vector of blocks. A block element: {:content :properties :children [block-1, block-2, ...]}" [tree-vec format {:keys [target-block keep-uuid?] :as opts}] - (let [repo (state/get-current-repo) - page-id (or (:db/id (:block/page target-block)) + (let [page-id (or (:db/id (:block/page target-block)) (when (ldb/page? target-block) (:db/id target-block))) page-name (some-> page-id (db/entity) :block/name) - blocks (block-tree->blocks repo tree-vec format keep-uuid? page-name) + blocks (block-tree->blocks tree-vec format keep-uuid? page-name) blocks (gp-block/with-parent-and-order page-id blocks)] (ui-outliner-tx/transact! @@ -2263,8 +2240,7 @@ :down util/get-next-block-non-collapsed) current-block (util/rec-get-node input-or-active-element "ls-block") sibling-block (f current-block {:up-down? true}) - {:block/keys [uuid title format]} (state/get-edit-block) - format (or format :markdown) + {:block/keys [uuid title]} (state/get-edit-block) sibling-block (or (when (property-value-node? sibling-block) (first (dom/by-class sibling-block "ls-block"))) sibling-block) @@ -2332,8 +2308,7 @@ [direction {:keys [block]}] (let [up? (= :left direction) pos (if up? :max 0) - {:block/keys [format uuid] :as block} (or block (state/get-edit-block)) - format (or format :markdown) + {:block/keys [uuid] :as block} (or block (state/get-edit-block)) repo (state/get-current-repo) editing-block (state/get-editor-block-container) f (if up? util/get-prev-block-non-collapsed util/get-next-block-non-collapsed) @@ -3556,8 +3531,7 @@ (defn batch-set-heading! [block-ids heading] - (let [repo (state/get-current-repo)] - (db-editor-handler/batch-set-heading! repo block-ids heading))) + (db-editor-handler/batch-set-heading! block-ids heading)) (defn set-heading! [block-id heading] @@ -3580,25 +3554,24 @@ (defn run-query-command! [] - (let [repo (state/get-current-repo)] - (when-let [block (some-> (state/get-edit-block) - :db/id - (db/entity))] - (p/do! - (save-current-block!) - (state/clear-edit!) - (p/let [query-block (or (:logseq.property/query block) - (p/do! - (property-handler/set-block-property! repo (:db/id block) :logseq.property/query "") - (:logseq.property/query (db/entity (:db/id block))))) - current-query (:block/title (db/entity (:db/id block)))] - (p/do! - (ui-outliner-tx/transact! - {:outliner-op :save-block} - (property-handler/set-block-property! repo (:db/id block) :block/tags :logseq.class/Query) - (save-block-inner! block "" {}) - (when query-block - (save-block-inner! query-block current-query {}))))))))) + (when-let [block (some-> (state/get-edit-block) + :db/id + (db/entity))] + (p/do! + (save-current-block!) + (state/clear-edit!) + (p/let [query-block (or (:logseq.property/query block) + (p/do! + (property-handler/set-block-property! (:db/id block) :logseq.property/query "") + (:logseq.property/query (db/entity (:db/id block))))) + current-query (:block/title (db/entity (:db/id block)))] + (p/do! + (ui-outliner-tx/transact! + {:outliner-op :save-block} + (property-handler/set-block-property! (:db/id block) :block/tags :logseq.class/Query) + (save-block-inner! block "" {}) + (when query-block + (save-block-inner! query-block current-query {})))))))) (defn quick-add-ensure-new-block-exists! [] diff --git a/src/main/frontend/handler/export.cljs b/src/main/frontend/handler/export.cljs index b1c49128d5..73af2569d8 100644 --- a/src/main/frontend/handler/export.cljs +++ b/src/main/frontend/handler/export.cljs @@ -1,32 +1,21 @@ (ns ^:no-doc frontend.handler.export - (:require - ["/frontend/utils" :as utils] - ["@capacitor/filesystem" :refer [Encoding Filesystem]] - [cljs-bean.core :as bean] - [cljs.pprint :as pprint] - [clojure.set :as s] - [clojure.string :as string] - [clojure.walk :as walk] - [frontend.config :as config] - [frontend.db :as db] - [frontend.extensions.zip :as zip] - [frontend.external.roam-export :as roam-export] - [frontend.handler.assets :as assets-handler] - [frontend.handler.export.common :as export-common-handler] - [frontend.handler.notification :as notification] - [frontend.idb :as idb] - [frontend.mobile.util :as mobile-util] - [frontend.persist-db :as persist-db] - [frontend.state :as state] - [frontend.util :as util] - [goog.dom :as gdom] - [lambdaisland.glogi :as log] - [logseq.db :as ldb] - [logseq.db.common.sqlite :as common-sqlite] - [logseq.publishing.html :as publish-html] - [promesa.core :as p]) - (:import - [goog.string StringBuffer])) + (:require ["/frontend/utils" :as utils] + [clojure.string :as string] + [frontend.config :as config] + [frontend.db :as db] + [frontend.extensions.zip :as zip] + [frontend.handler.assets :as assets-handler] + [frontend.handler.export.common :as export-common-handler] + [frontend.handler.notification :as notification] + [frontend.idb :as idb] + [frontend.persist-db :as persist-db] + [frontend.state :as state] + [frontend.util :as util] + [goog.dom :as gdom] + [logseq.db :as ldb] + [logseq.db.common.sqlite :as common-sqlite] + [logseq.publishing.html :as publish-html] + [promesa.core :as p])) (defn download-repo-as-html! "download public pages as html" @@ -71,110 +60,12 @@ [repo] (db-based-export-repo-as-zip! repo)) -(defn- export-file-on-mobile [data path] - (p/catch - (.writeFile Filesystem (clj->js {:path path - :data data - :encoding (.-UTF8 Encoding) - :recursive true})) - (notification/show! "Export succeeded! You can find you exported file in the root directory of your graph." :success) - (fn [error] - (notification/show! "Export failed!" :error) - (log/error :export-file-failed error)))) - -;; FIXME: All uses of :block/properties in this ns -(defn- dissoc-properties [m ks] - (if (:block/properties m) - (update m :block/properties - (fn [v] - (apply dissoc v ks))) - m)) - -(defn- nested-select-keys - [keyseq vec-tree] - (walk/postwalk - (fn [x] - (cond - (and (map? x) (contains? x :block/uuid)) - (-> x - (s/rename-keys {:block/uuid :block/id - :block/title :block/page-name}) - (dissoc-properties [:id]) - (select-keys keyseq)) - - :else - x)) - vec-tree)) - -(defn- (string/replace repo config/local-db-prefix "") + (-> repo (string/replace #"^/+" "") (str "_" (quot (util/time-ms) 1000)) (str "." (string/lower-case (name extension))))) -(defn- > edn-str - js/encodeURIComponent - (str "data:text/edn;charset=utf-8,")) - filename (file-name repo :edn)] - (if (mobile-util/native-platform?) - (export-file-on-mobile edn-str filename) - (when-let [anchor (gdom/getElement "download-as-edn-v2")] - (.setAttribute anchor "href" data-str) - (.setAttribute anchor "download" filename) - (.click anchor))))))) - -(defn- nested-update-id - [vec-tree] - (walk/postwalk - (fn [x] - (if (and (map? x) (contains? x :block/id)) - (update x :block/id str) - x)) - vec-tree)) - -(defn export-repo-as-json! - [repo] - (p/let [result ( result - nested-update-id - clj->js - js/JSON.stringify) - filename (file-name repo :json) - data-str (str "data:text/json;charset=utf-8," - (js/encodeURIComponent json-str))] - (if (mobile-util/native-platform?) - (export-file-on-mobile json-str filename) - (when-let [anchor (gdom/getElement "download-as-json-v2")] - (.setAttribute anchor "href" data-str) - (.setAttribute anchor "download" filename) - (.click anchor))))) - (defn export-repo-as-debug-transit! [repo] (p/let [result (export-common-handler/ data - bean/->js - js/JSON.stringify) - data-str (str "data:text/json;charset=utf-8," - (js/encodeURIComponent json-str))] - (when-let [anchor (gdom/getElement "download-as-roam-json")] - (.setAttribute anchor "href" data-str) - (.setAttribute anchor "download" (file-name (str repo "_roam") :json)) - (.click anchor)))) + (defn export-repo-as-roam-json! + [repo] + (p/let [data ( data + bean/->js + js/JSON.stringify) + data-str (str "data:text/json;charset=utf-8," + (js/encodeURIComponent json-str))] + (when-let [anchor (gdom/getElement "download-as-roam-json")] + (.setAttribute anchor "href" data-str) + (.setAttribute anchor "download" (file-name (str repo "_roam") :json)) + (.click anchor))))) (defn- truncate-old-versioned-files! "reserve the latest 12 version files" diff --git a/src/main/frontend/handler/export/text.cljs b/src/main/frontend/handler/export/text.cljs index 81ccc3b5ef..2ad7869486 100644 --- a/src/main/frontend/handler/export/text.cljs +++ b/src/main/frontend/handler/export/text.cljs @@ -11,7 +11,6 @@ [goog.dom :as gdom] [logseq.cli.common.export.common :as cli-export-common] [logseq.cli.common.export.text :as cli-export-text] - [logseq.common.path :as path] [logseq.db :as ldb] [promesa.core :as p])) diff --git a/src/main/frontend/handler/page.cljs b/src/main/frontend/handler/page.cljs index e567094761..5d2db7af4e 100644 --- a/src/main/frontend/handler/page.cljs +++ b/src/main/frontend/handler/page.cljs @@ -112,7 +112,7 @@ (state/update-favorites-updated!)))))) (defn update-public-attribute! - [repo page value] + [page value] (db-property-handler/set-block-property! [:block/uuid (:block/uuid page)] :logseq.property/publishing-public? value)) (defn get-page-ref-text @@ -128,12 +128,11 @@ (defn db-based-save-filter! [page filter-page-id {:keys [include? add?]}] - (let [repo (state/get-current-repo) - property-id (if include? + (let [property-id (if include? :logseq.property.linked-references/includes :logseq.property.linked-references/excludes)] (if add? - (property-handler/set-block-property! repo (:db/id page) property-id filter-page-id) + (property-handler/set-block-property! (:db/id page) property-id filter-page-id) (db-property-handler/delete-property-value! (:db/id page) property-id filter-page-id)))) ;; Editor diff --git a/src/main/frontend/handler/property.cljs b/src/main/frontend/handler/property.cljs index 89066ad444..223fab05dc 100644 --- a/src/main/frontend/handler/property.cljs +++ b/src/main/frontend/handler/property.cljs @@ -5,48 +5,33 @@ [frontend.state :as state])) (defn remove-block-property! - [repo block-id property-id-or-key] + [block-id property-id-or-key] (assert (some? property-id-or-key) "remove-block-property! remove-block-property! is nil") (let [eid (if (uuid? block-id) [:block/uuid block-id] block-id)] (db-property-handler/remove-block-property! eid property-id-or-key))) (defn set-block-property! - [repo block-id key v] + [block-id key v] (assert (some? key) "set-block-property! key is nil") (let [eid (if (uuid? block-id) [:block/uuid block-id] block-id)] (if (or (nil? v) (and (coll? v) (empty? v))) (db-property-handler/remove-block-property! eid key) (db-property-handler/set-block-property! eid key v)))) -(defn add-page-property! - "Sanitized page-name, unsanitized key / value" - [page-entity key value] - (assert (some? key) "key is nil") - (when page-entity - (let [repo (state/get-current-repo)] - (set-block-property! repo (:block/uuid page-entity) key value)))) - -(defn remove-id-property - [repo format content] - content) - -(defn file-persist-block-id! - [repo block-id]) - (defn batch-remove-block-property! - [repo block-ids key] + [block-ids key] (assert (some? key) "key is nil") (db-property-handler/batch-remove-property! block-ids key)) (defn batch-set-block-property! - [repo block-ids key value & {:as opts}] + [block-ids key value & {:as opts}] (assert (some? key) "key is nil") (if (nil? value) (db-property-handler/batch-remove-property! block-ids key) (db-property-handler/batch-set-property! block-ids key value opts))) (defn set-block-properties! - [repo block-id properties] + [block-id properties] (assert (uuid? block-id)) (db-property-handler/set-block-properties! block-id properties)) diff --git a/src/main/frontend/handler/repo.cljs b/src/main/frontend/handler/repo.cljs index a70aadfecf..50df743ab3 100644 --- a/src/main/frontend/handler/repo.cljs +++ b/src/main/frontend/handler/repo.cljs @@ -8,7 +8,6 @@ [frontend.date :as date] [frontend.db :as db] [frontend.db.persist :as db-persist] - [frontend.db.react :as react] [frontend.db.restore :as db-restore] [frontend.handler.global-config :as global-config-handler] [frontend.handler.graph :as graph-handler] @@ -16,7 +15,6 @@ [frontend.handler.repo-config :as repo-config-handler] [frontend.handler.route :as route-handler] [frontend.handler.ui :as ui-handler] - [frontend.idb :as idb] [frontend.persist-db :as persist-db] [frontend.search :as search] [frontend.state :as state] @@ -37,7 +35,6 @@ :or {switch-graph? true}}] (let [current-repo (state/get-current-repo)] (p/do! - (idb/clear-local-db! url) ; clear file handles (db/remove-conn! url) (db-persist/delete-graph! url) (search/remove-db! url) @@ -79,32 +76,6 @@ (when-not config/publishing? (state/set-db-restoring! false)))) -(defn rebuild-index! - [url] - (when-not (state/unlinked-dir? (config/get-repo-dir url)) - (when url - (search/reset-indice! url) - (db/remove-conn! url) - (react/clear-query-state!) - (-> (p/do! (db-persist/delete-graph! url)) - (p/catch (fn [error] - (prn "Delete repo failed, error: " error))))))) - -(defn re-index! - [nfs-rebuild-index! ok-handler] - (when-let [repo (state/get-current-repo)] - (state/reset-parsing-state!) - (let [dir (config/get-repo-dir repo)] - (when-not (state/unlinked-dir? dir) - (route-handler/redirect-to-home!) - (let [local? (config/local-file-based-graph? repo)] - (if local? - (nfs-rebuild-index! repo ok-handler) - (rebuild-index! repo)) - (js/setTimeout - (route-handler/redirect-to-home!) - 500)))))) - (defn get-repos [] (p/let [nfs-dbs (db-persist/get-all-graphs) diff --git a/src/main/frontend/handler/ui.cljs b/src/main/frontend/handler/ui.cljs index a76516f81e..2a44c4e180 100644 --- a/src/main/frontend/handler/ui.cljs +++ b/src/main/frontend/handler/ui.cljs @@ -6,7 +6,6 @@ [frontend.db :as db] [frontend.db.model :as db-model] [frontend.db.react :as react] - [frontend.fs :as fs] [frontend.handler.assets :as assets-handler] [frontend.loader :refer [load]] [frontend.state :as state] @@ -14,7 +13,6 @@ [frontend.util :as util] [goog.dom :as gdom] [goog.object :as gobj] - [logseq.common.path :as path] [logseq.shui.dialog.core :as shui-dialog] [logseq.shui.ui :as shui] [promesa.core :as p] diff --git a/src/main/frontend/idb.cljs b/src/main/frontend/idb.cljs index 95c1b1a96d..452ed995e9 100644 --- a/src/main/frontend/idb.cljs +++ b/src/main/frontend/idb.cljs @@ -1,9 +1,6 @@ (ns frontend.idb "This system component provides indexedDB functionality" - (:require ["/frontend/idbkv" :as idb-keyval] - [clojure.string :as string] - [frontend.config :as config] - [promesa.core :as p])) + (:require ["/frontend/idbkv" :as idb-keyval])) ;; offline db @@ -41,26 +38,6 @@ (when (and key @store) (idb-keyval/get key @store))) -(defn get-keys - [] - (when @store - (idb-keyval/keys @store))) - -(defn get-nfs-dbs - [] - (p/let [ks (get-keys)] - (->> (filter (fn [k] (string/starts-with? k (str config/idb-db-prefix config/local-db-prefix))) ks) - (map #(string/replace-first % config/idb-db-prefix ""))))) - -(defn clear-local-db! - [repo] - (when repo - (p/let [ks (get-keys) - ks (filter (fn [k] (string/starts-with? k (str config/local-handle "/" repo))) ks)] - (when (seq ks) - (p/all (map (fn [key] - (remove-item! key)) ks)))))) - (defn start "This component's only responsibility is to create a Store object" [] diff --git a/src/main/frontend/page.cljs b/src/main/frontend/page.cljs index dc55f0cac0..73c2ea1533 100644 --- a/src/main/frontend/page.cljs +++ b/src/main/frontend/page.cljs @@ -1,7 +1,6 @@ (ns frontend.page "Provides root component for both Logseq app and publishing build" (:require [frontend.components.container :as container] - [frontend.components.onboarding.quick-tour :as quick-tour] [frontend.components.plugins :as plugin] [frontend.config :as config] [frontend.context.i18n :refer [t]] @@ -120,7 +119,6 @@ (state/load-app-user-cfgs) (ui/inject-document-devices-envs!) (ui/inject-dynamic-style-node!) - (quick-tour/init) (plugin-handler/host-mounted!) (assoc state ::teardown (setup-fns!))) :will-unmount (fn [state] diff --git a/src/main/frontend/persist_db.cljs b/src/main/frontend/persist_db.cljs index c6af67f0d2..be9a85cb2d 100644 --- a/src/main/frontend/persist_db.cljs +++ b/src/main/frontend/persist_db.cljs @@ -1,7 +1,6 @@ (ns frontend.persist-db "Backend of DB based graph" - (:require [frontend.config :as config] - [frontend.db :as db] + (:require [frontend.db :as db] [frontend.persist-db.browser :as browser] [frontend.persist-db.protocol :as protocol] [frontend.state :as state] diff --git a/src/main/frontend/publishing.cljs b/src/main/frontend/publishing.cljs index 8ca73dbd0a..cdeb979379 100644 --- a/src/main/frontend/publishing.cljs +++ b/src/main/frontend/publishing.cljs @@ -90,7 +90,6 @@ (state/set-component! :block/blocks-container block/blocks-container) (state/set-component! :block/reference block/block-reference) (state/set-component! :block/properties-cp block/db-properties-cp) - (state/set-component! :block/embed block/block-embed) (state/set-component! :block/page-cp block/page-cp) (state/set-component! :block/inline-text block/inline-text) (state/set-component! :block/asset-cp block/asset-cp) diff --git a/src/main/frontend/schema/handler/common_config.cljc b/src/main/frontend/schema/handler/common_config.cljc index ed990438dd..0429f11f4b 100644 --- a/src/main/frontend/schema/handler/common_config.cljc +++ b/src/main/frontend/schema/handler/common_config.cljc @@ -87,7 +87,4 @@ [:insert-today? :boolean] [:redirect-page? :boolean] [:default-page :string]])] - [:file-sync/ignore-files [:vector :string]] - [:dwim/settings [:map-of :keyword :boolean]] - [:file/name-format [:enum :legacy :triple-lowbar]] [:journal/file-name-format :string]])) diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index df72794dc9..362aa08716 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -20,7 +20,6 @@ [logseq.common.config :as common-config] [logseq.db :as ldb] [logseq.db.common.entity-plus :as entity-plus] - [logseq.db.sqlite.util :as sqlite-util] [logseq.shui.dialog.core :as shui-dialog] [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] diff --git a/src/main/frontend/worker/db_listener.cljs b/src/main/frontend/worker/db_listener.cljs index 3ad4e7171e..c37c8d5f58 100644 --- a/src/main/frontend/worker/db_listener.cljs +++ b/src/main/frontend/worker/db_listener.cljs @@ -22,7 +22,7 @@ (when repo (worker-state/set-db-latest-tx-time! repo)) (when-not (:rtc-download-graph? tx-meta) (let [{:keys [from-disk?]} tx-meta - result (worker-pipeline/invoke-hooks repo conn tx-report (worker-state/get-context)) + result (worker-pipeline/invoke-hooks conn tx-report (worker-state/get-context)) tx-report' (:tx-report result)] (when result (let [data (merge diff --git a/src/main/frontend/worker/pipeline.cljs b/src/main/frontend/worker/pipeline.cljs index 52433c6043..e6cb8bb017 100644 --- a/src/main/frontend/worker/pipeline.cljs +++ b/src/main/frontend/worker/pipeline.cljs @@ -59,7 +59,7 @@ blocks))) (defn- insert-tag-templates - [repo tx-report] + [tx-report] (let [db (:db-after tx-report) journal-id (:db/id (d/entity db :logseq.class/Journal)) journal-page (some (fn [d] (when (and (= :block/journal-day (:a d)) (:added d)) @@ -393,7 +393,7 @@ (distinct tx-data')))) (defn- compute-extra-tx-data - [repo tx-report] + [tx-report] (let [{:keys [db-before db-after tx-data tx-meta]} tx-report db db-after revert-tx-data (revert-disallowed-changes tx-report) @@ -405,7 +405,7 @@ commands-tx (when-not (or (:undo? tx-meta) (:redo? tx-meta) (rtc-tx-or-download-graph? tx-meta)) (commands/run-commands tx-report)) insert-templates-tx (when-not (rtc-tx-or-download-graph? tx-meta) - (insert-tag-templates repo tx-report)) + (insert-tag-templates tx-report)) created-by-tx (add-created-by-ref-hook db-before db-after tx-data tx-meta)] (concat revert-tx-data toggle-page-and-block-tx-data @@ -429,7 +429,7 @@ "Compute extra tx-data and block/refs, should ensure it's a pure function and doesn't call `d/transact!` or `ldb/transact!`." [repo {:keys [db-after tx-meta] :as tx-report}] - (let [extra-tx-data (compute-extra-tx-data repo tx-report) + (let [extra-tx-data (compute-extra-tx-data tx-report) tx-report* (if (seq extra-tx-data) (let [result (d/with db-after extra-tx-data)] (assoc tx-report @@ -466,7 +466,7 @@ (:db-after tx-report))))) (defn- invoke-hooks-default - [repo conn {:keys [tx-meta] :as tx-report} context] + [{:keys [tx-meta] :as tx-report} context] (try (let [{:keys [pages blocks]} (ds-report/get-blocks-and-pages tx-report) deleted-blocks (outliner-pipeline/filter-deleted-blocks (:tx-data tx-report)) @@ -494,7 +494,7 @@ (throw e)))) (defn invoke-hooks - [repo conn {:keys [tx-meta] :as tx-report} context] + [conn {:keys [tx-meta] :as tx-report} context] (let [{:keys [from-disk? new-graph? transact-new-graph-refs?]} tx-meta] (when-not transact-new-graph-refs? (cond @@ -511,4 +511,4 @@ (invoke-hooks-for-imported-graph conn tx-report) :else - (invoke-hooks-default repo conn tx-report context))))) + (invoke-hooks-default tx-report context))))) diff --git a/src/main/frontend/worker/rtc/client.cljs b/src/main/frontend/worker/rtc/client.cljs index eff090a471..e88952ff30 100644 --- a/src/main/frontend/worker/rtc/client.cljs +++ b/src/main/frontend/worker/rtc/client.cljs @@ -24,7 +24,7 @@ [tick.core :as tick])) (defn- task--apply-remote-updates-from-apply-ops - [apply-ops-resp graph-uuid repo conn date-formatter aes-key add-log-fn] + [apply-ops-resp graph-uuid repo conn aes-key add-log-fn] (m/sp (if-let [remote-ex (:ex-data apply-ops-resp)] (do (add-log-fn :rtc.log/pull-remote-data (assoc remote-ex :sub-type :pull-remote-data-exception)) @@ -104,7 +104,7 @@ "Return a task: get or create a mws(missionary wrapped websocket). see also `ws/get-mws-create`. But ensure `init-request` and `calibrate-graph-skeleton` has been sent" - [get-ws-create-task graph-uuid major-schema-version repo conn date-formatter + [get-ws-create-task graph-uuid major-schema-version repo conn *last-calibrate-t *online-users *server-schema-version *aes-key add-log-fn] (m/sp (let [ws (m/? get-ws-create-task) @@ -152,7 +152,7 @@ :graph-uuid graph-uuid :remote-schema-version max-remote-schema-version})) (m/? (task--apply-remote-updates-from-apply-ops - init-request-resp graph-uuid repo conn date-formatter @*aes-key add-log-fn)))) + init-request-resp graph-uuid repo conn @*aes-key add-log-fn)))) ws))) (defn- ->pos @@ -475,7 +475,7 @@ (defn new-task--push-local-ops "Return a task: push local updates" - [repo conn graph-uuid major-schema-version date-formatter get-ws-create-task *remote-profile? aes-key add-log-fn] + [repo conn graph-uuid major-schema-version get-ws-create-task *remote-profile? aes-key add-log-fn] (m/sp (let [block-ops-map-coll (client-op/get&remove-all-block-ops repo) update-kv-value-ops-map-coll (client-op/get&remove-all-update-kv-value-ops repo) @@ -547,7 +547,7 @@ (add-log-fn :rtc.log/push-local-update {:remote-t (:t r) :remote-t-query-end (:t-query-end r)}))))))))) (defn new-task--pull-remote-data - [repo conn graph-uuid major-schema-version date-formatter get-ws-create-task aes-key add-log-fn] + [repo conn graph-uuid major-schema-version get-ws-create-task aes-key add-log-fn] (m/sp (let [local-tx (client-op/get-local-tx repo) message {:action "apply-ops" @@ -558,4 +558,4 @@ :t-before local-tx} r (m/? (ws-util/send&recv get-ws-create-task message :timeout-ms 30000))] (r.throttle/add-rtc-api-call-record! message) - (m/? (task--apply-remote-updates-from-apply-ops r graph-uuid repo conn date-formatter aes-key add-log-fn))))) + (m/? (task--apply-remote-updates-from-apply-ops r graph-uuid repo conn aes-key add-log-fn))))) diff --git a/src/main/frontend/worker/rtc/client_op.cljs b/src/main/frontend/worker/rtc/client_op.cljs index f4e0660dec..7c0ec7b146 100644 --- a/src/main/frontend/worker/rtc/client_op.cljs +++ b/src/main/frontend/worker/rtc/client_op.cljs @@ -6,7 +6,6 @@ [frontend.worker.state :as worker-state] [lambdaisland.glogi :as log] [logseq.db :as ldb] - [logseq.db.sqlite.util :as sqlite-util] [malli.core :as ma] [malli.transform :as mt] [missionary.core :as m])) diff --git a/src/main/frontend/worker/rtc/core.cljs b/src/main/frontend/worker/rtc/core.cljs index c783cbc758..5faf836c40 100644 --- a/src/main/frontend/worker/rtc/core.cljs +++ b/src/main/frontend/worker/rtc/core.cljs @@ -25,7 +25,6 @@ [logseq.common.config :as common-config] [logseq.db :as ldb] [logseq.db.frontend.schema :as db-schema] - [logseq.db.sqlite.util :as sqlite-util] [malli.core :as ma] [missionary.core :as m]) (:import [missionary Cancelled])) @@ -211,7 +210,7 @@ (defn- ^:large-vars/cleanup-todo create-rtc-loop "Return a map with [:rtc-state-flow :rtc-loop-task :*rtc-auto-push? :onstarted-task] TODO: auto refresh token if needed" - [graph-uuid schema-version repo conn date-formatter token user-uuid + [graph-uuid schema-version repo conn token user-uuid & {:keys [auto-push? debug-ws-url] :or {auto-push? true}}] (let [major-schema-version (db-schema/major-version schema-version) ws-url (or debug-ws-url (ws-util/get-ws-url token)) @@ -230,7 +229,7 @@ {:keys [*current-ws] get-ws-create-task0 :get-ws-create-task} (gen-get-ws-create-map--memoized ws-url) get-ws-create-task (r.client/ensure-register-graph-updates--memoized - get-ws-create-task0 graph-uuid major-schema-version repo conn date-formatter + get-ws-create-task0 graph-uuid major-schema-version repo conn *last-calibrate-t *online-users *server-schema-version *aes-key add-log-fn) {:keys [assets-sync-loop-task]} (r.asset/create-assets-sync-loop @@ -271,19 +270,19 @@ (catch :default e (if (= :rtc.exception/local-graph-too-old (:type (ex-data e))) (m/? (r.client/new-task--pull-remote-data - repo conn graph-uuid major-schema-version date-formatter get-ws-create-task @*aes-key + repo conn graph-uuid major-schema-version get-ws-create-task @*aes-key add-log-fn)) (throw e)))) :local-update-check (try (m/? (r.client/new-task--push-local-ops - repo conn graph-uuid major-schema-version date-formatter + repo conn graph-uuid major-schema-version get-ws-create-task *remote-profile? @*aes-key add-log-fn)) (catch :default e (if (= :rtc.exception/local-graph-too-old (:type (ex-data e))) (m/? (r.client/new-task--pull-remote-data - repo conn graph-uuid major-schema-version date-formatter get-ws-create-task @*aes-key + repo conn graph-uuid major-schema-version get-ws-create-task @*aes-key add-log-fn)) (throw e)))) @@ -292,7 +291,7 @@ :pull-remote-updates (m/? (r.client/new-task--pull-remote-data - repo conn graph-uuid major-schema-version date-formatter get-ws-create-task @*aes-key + repo conn graph-uuid major-schema-version get-ws-create-task @*aes-key add-log-fn)) :inject-users-info @@ -367,8 +366,7 @@ :user-uuid user-uuid :graph-uuid graph-uuid :schema-version schema-version - :remote-schema-version remote-schema-version - :date-formatter (common-config/get-date-formatter (worker-state/get-config repo))})) + :remote-schema-version remote-schema-version})) (ex-info "Not found db-conn" {:type :rtc.exception/not-found-db-conn :repo repo}))) @@ -376,12 +374,12 @@ (defn- new-task--rtc-start* [repo token] (m/sp - (let [{:keys [conn user-uuid graph-uuid schema-version remote-schema-version date-formatter] :as r} + (let [{:keys [conn user-uuid graph-uuid schema-version remote-schema-version] :as r} (validate-rtc-start-conditions repo token)] (if (instance? ExceptionInfo r) r (let [{:keys [rtc-state-flow *rtc-auto-push? *rtc-remote-profile? rtc-loop-task *online-users onstarted-task]} - (create-rtc-loop graph-uuid schema-version repo conn date-formatter token user-uuid) + (create-rtc-loop graph-uuid schema-version repo conn token user-uuid) *last-stop-exception (atom nil) canceler (c.m/run-task :rtc-loop-task rtc-loop-task @@ -702,10 +700,9 @@ (def graph-uuid "ff7186c1-5903-4bc8-b4e9-ca23525b9983") (def repo "logseq_db_4-23") (def conn (worker-state/get-datascript-conn repo)) - (def date-formatter "MMM do, yyyy") (def debug-ws-url "wss://ws-dev.logseq.com/rtc-sync?token=???") (let [{:keys [rtc-state-flow *rtc-auto-push? rtc-loop-task]} - (create-rtc-loop user-uuid graph-uuid repo conn date-formatter nil {:debug-ws-url debug-ws-url}) + (create-rtc-loop user-uuid graph-uuid repo conn nil {:debug-ws-url debug-ws-url}) c (c.m/run-task rtc-loop-task :rtc-loop-task)] (def cancel c) (def rtc-state-flow rtc-state-flow) diff --git a/src/main/frontend/worker/rtc/remote_update.cljs b/src/main/frontend/worker/rtc/remote_update.cljs index a4af7cd090..d27b9f0ac3 100644 --- a/src/main/frontend/worker/rtc/remote_update.cljs +++ b/src/main/frontend/worker/rtc/remote_update.cljs @@ -18,9 +18,7 @@ [logseq.clj-fractional-indexing :as index] [logseq.common.util :as common-util] [logseq.db :as ldb] - [logseq.db.common.property-util :as db-property-util] [logseq.db.frontend.property :as db-property] - [logseq.graph-parser.whiteboard :as gp-whiteboard] [logseq.outliner.core :as outliner-core] [logseq.outliner.transaction :as outliner-tx] [missionary.core :as m])) diff --git a/src/main/logseq/api/editor.cljs b/src/main/logseq/api/editor.cljs index a43c4beea7..d93e0ca411 100644 --- a/src/main/logseq/api/editor.cljs +++ b/src/main/logseq/api/editor.cljs @@ -4,7 +4,6 @@ [cljs.reader] [clojure.string :as string] [frontend.commands :as commands] - [frontend.config :as config] [frontend.date :as date] [frontend.db :as db] [frontend.db.async :as db-async] @@ -258,8 +257,7 @@ (fn [block-uuid content ^js opts] (this-as this - (p/let [repo (state/get-current-repo) - block (clj opts)] (when block (db-based-api/update-block this block content opts')))))) @@ -452,9 +450,7 @@ key (if (not key-ns?) (api-block/get-db-ident-from-property-name key this) key)] - (property-handler/remove-block-property! - (state/get-current-repo) - block-uuid key)))) + (property-handler/remove-block-property! block-uuid key)))) (defn get_block_property [block-uuid key] diff --git a/src/test/frontend/handler/editor_test.cljs b/src/test/frontend/handler/editor_test.cljs index e3b010cd41..530f656a23 100644 --- a/src/test/frontend/handler/editor_test.cljs +++ b/src/test/frontend/handler/editor_test.cljs @@ -4,7 +4,7 @@ [frontend.db.model :as model] [frontend.handler.editor :as editor] [frontend.state :as state] - [frontend.test.helper :as test-helper :refer [load-test-files]] + [frontend.test.helper :as test-helper] [frontend.util.cursor :as cursor])) (use-fixtures :each test-helper/start-and-destroy-db) diff --git a/src/test/frontend/test/helper.cljs b/src/test/frontend/test/helper.cljs index b8f811b5dd..21969ac688 100644 --- a/src/test/frontend/test/helper.cljs +++ b/src/test/frontend/test/helper.cljs @@ -43,7 +43,7 @@ (d/transact! conn (sqlite-create-graph/build-db-initial-data ""))) (d/listen! conn ::listen-db-changes! (fn [tx-report] - (worker-pipeline/invoke-hooks test-db' conn tx-report {})))))) + (worker-pipeline/invoke-hooks conn tx-report {})))))) (defn destroy-test-db! [] diff --git a/src/test/frontend/worker/rtc/gen_client_op_test.cljs b/src/test/frontend/worker/rtc/gen_client_op_test.cljs index dd13a4397b..4419fc13d1 100644 --- a/src/test/frontend/worker/rtc/gen_client_op_test.cljs +++ b/src/test/frontend/worker/rtc/gen_client_op_test.cljs @@ -9,7 +9,6 @@ [frontend.worker.rtc.client-op :as client-op] [frontend.worker.rtc.fixture :as r.fixture] [frontend.worker.rtc.gen-client-op :as subject] - [frontend.worker.state :as worker-state] [logseq.db.test.helper :as db-test] [logseq.outliner.batch-tx :as batch-tx] [logseq.outliner.core :as outliner-core] diff --git a/src/test/frontend/worker/rtc/rtc_fns_test.cljs b/src/test/frontend/worker/rtc/rtc_fns_test.cljs index f065700d8a..271e5d1893 100644 --- a/src/test/frontend/worker/rtc/rtc_fns_test.cljs +++ b/src/test/frontend/worker/rtc/rtc_fns_test.cljs @@ -7,8 +7,6 @@ [frontend.worker.fixtures :as worker-fixtures] [frontend.worker.rtc.malli-schema :as rtc-schema] [frontend.worker.rtc.remote-update :as r.remote] - [frontend.worker.state :as worker-state] - [logseq.common.config :as common-config] [logseq.db :as ldb] [logseq.outliner.core :as outliner-core] [logseq.outliner.transaction :as outliner-tx])) @@ -311,7 +309,6 @@ result: - 1" (let [repo (state/get-current-repo) conn (conn/get-db repo false) - date-formatter (common-config/get-date-formatter (worker-state/get-config repo)) opts {:persist-op? false :transact-opts {:repo repo :conn conn}}