Tienson Qin 2 dagar sedan
förälder
incheckning
467c5200d6
65 ändrade filer med 438 tillägg och 1523 borttagningar
  1. 0 18
      deps/common/resources/templates/config.edn
  2. 0 28
      src/bench/frontend/benchmark_test_runner.cljs
  3. 1 12
      src/electron/electron/handler.cljs
  4. 3 7
      src/electron/electron/utils.cljs
  5. 0 1
      src/main/frontend/commands.cljs
  6. 1 79
      src/main/frontend/common/async_util.cljc
  7. 0 17
      src/main/frontend/common/file/util.cljs
  8. 0 2
      src/main/frontend/components/all_pages.cljs
  9. 10 101
      src/main/frontend/components/block.cljs
  10. 2 2
      src/main/frontend/components/block/macros.cljs
  11. 0 1
      src/main/frontend/components/container.cljs
  12. 212 216
      src/main/frontend/components/content.cljs
  13. 0 1
      src/main/frontend/components/editor.cljs
  14. 0 22
      src/main/frontend/components/imports.cljs
  15. 0 1
      src/main/frontend/components/left_sidebar.cljs
  16. 1 0
      src/main/frontend/components/onboarding/index.css
  17. 0 285
      src/main/frontend/components/onboarding/quick_tour.cljs
  18. 1 1
      src/main/frontend/components/page.cljs
  19. 0 1
      src/main/frontend/components/page_menu.cljs
  20. 2 3
      src/main/frontend/components/property.cljs
  21. 4 5
      src/main/frontend/components/property/config.cljs
  22. 7 13
      src/main/frontend/components/property/value.cljs
  23. 8 10
      src/main/frontend/components/query/builder.cljs
  24. 4 67
      src/main/frontend/components/settings.cljs
  25. 0 24
      src/main/frontend/components/svg.cljs
  26. 30 32
      src/main/frontend/components/views.cljs
  27. 12 132
      src/main/frontend/config.cljs
  28. 0 3
      src/main/frontend/db/conn.cljs
  29. 5 11
      src/main/frontend/db/persist.cljs
  30. 2 4
      src/main/frontend/extensions/fsrs.cljs
  31. 1 1
      src/main/frontend/extensions/pdf/assets.cljs
  32. 1 7
      src/main/frontend/extensions/pdf/core.cljs
  33. 0 1
      src/main/frontend/fs/node.cljs
  34. 0 1
      src/main/frontend/handler.cljs
  35. 0 2
      src/main/frontend/handler/code.cljs
  36. 3 13
      src/main/frontend/handler/common.cljs
  37. 0 1
      src/main/frontend/handler/common/developer.cljs
  38. 1 30
      src/main/frontend/handler/common/page.cljs
  39. 3 3
      src/main/frontend/handler/db_based/editor.cljs
  40. 1 1
      src/main/frontend/handler/db_based/export.cljs
  41. 5 18
      src/main/frontend/handler/dnd.cljs
  42. 39 66
      src/main/frontend/handler/editor.cljs
  43. 41 149
      src/main/frontend/handler/export.cljs
  44. 0 1
      src/main/frontend/handler/export/text.cljs
  45. 3 4
      src/main/frontend/handler/page.cljs
  46. 5 20
      src/main/frontend/handler/property.cljs
  47. 0 29
      src/main/frontend/handler/repo.cljs
  48. 0 2
      src/main/frontend/handler/ui.cljs
  49. 1 24
      src/main/frontend/idb.cljs
  50. 0 2
      src/main/frontend/page.cljs
  51. 1 2
      src/main/frontend/persist_db.cljs
  52. 0 1
      src/main/frontend/publishing.cljs
  53. 0 3
      src/main/frontend/schema/handler/common_config.cljc
  54. 0 1
      src/main/frontend/state.cljs
  55. 1 1
      src/main/frontend/worker/db_listener.cljs
  56. 7 7
      src/main/frontend/worker/pipeline.cljs
  57. 6 6
      src/main/frontend/worker/rtc/client.cljs
  58. 0 1
      src/main/frontend/worker/rtc/client_op.cljs
  59. 10 13
      src/main/frontend/worker/rtc/core.cljs
  60. 0 2
      src/main/frontend/worker/rtc/remote_update.cljs
  61. 2 6
      src/main/logseq/api/editor.cljs
  62. 1 1
      src/test/frontend/handler/editor_test.cljs
  63. 1 1
      src/test/frontend/test/helper.cljs
  64. 0 1
      src/test/frontend/worker/rtc/gen_client_op_test.cljs
  65. 0 3
      src/test/frontend/worker/rtc/rtc_fns_test.cljs

+ 0 - 18
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
  }

+ 0 - 28
src/bench/frontend/benchmark_test_runner.cljs

@@ -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))))

+ 1 - 12
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

+ 3 - 7
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]

+ 0 - 1
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))

+ 1 - 79
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 <?
   [port]
   `(throw-err (cljs.core.async/<! ~port)))
-
-#?(:cljs
-   (defn c->p
-     "Converts a Core.async channel to a Promise"
-     [chan]
-     (let [d (p/deferred)]
-       (if chan
-         (async/go
-           (let [result (async/<! chan)]
-             (if (instance? ExceptionInfo result)
-               (p/reject! d result)
-               (p/resolve! d result))))
-         (p/resolve! d nil))
-       d)))
-
-#?(:cljs
-   (defn drain-chan
-     "drop all stuffs in CH, and return all of them"
-     [ch]
-     (->> (repeatedly #(async/poll! ch))
-          (take-while identity))))
-
-#?(:cljs
-   (defn <ratelimit
-     "return a channel CH,
-  ratelimit flush items in in-ch every max-duration(ms),
-  opts:
-  - :filter-fn filter item before putting items into returned CH, (filter-fn item)
-               will poll it when its return value is channel,
-  - :flush-fn exec flush-fn when time to flush, (flush-fn item-coll)
-  - :stop-ch stop go-loop when stop-ch closed
-  - :distinct-key-fn distinct coll when put into CH
-  - :chan-buffer buffer of return CH, default use (async/chan 1000)
-  - :flush-now-ch flush the content in the queue immediately
-  - :refresh-timeout-ch refresh (timeout max-duration)"
-     [in-ch max-duration & {:keys [filter-fn flush-fn stop-ch distinct-key-fn chan-buffer flush-now-ch refresh-timeout-ch]}]
-     (let [ch (if chan-buffer (async/chan chan-buffer) (async/chan 1000))
-           stop-ch* (or stop-ch (async/chan))
-           flush-now-ch* (or flush-now-ch (async/chan))
-           refresh-timeout-ch* (or refresh-timeout-ch (async/chan))]
-       (async/go-loop [timeout-ch (async/timeout max-duration) coll []]
-         (let [{:keys [refresh-timeout timeout e stop flush-now]}
-               (async/alt! refresh-timeout-ch* {:refresh-timeout true}
-                           timeout-ch {:timeout true}
-                           in-ch ([e] {:e e})
-                           stop-ch* {:stop true}
-                           flush-now-ch* {:flush-now true})]
-           (cond
-             refresh-timeout
-             (recur (async/timeout max-duration) coll)
-
-             (or flush-now timeout)
-             (do (async/onto-chan! ch coll false)
-                 (flush-fn coll)
-                 (drain-chan flush-now-ch*)
-                 (recur (async/timeout max-duration) []))
-
-             (some? e)
-             (let [filter-v (filter-fn e)
-                   filter-v* (if (instance? ManyToManyChannel filter-v)
-                               (async/<! filter-v)
-                               filter-v)]
-               (if filter-v*
-                 (recur timeout-ch (cond->> (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)))

+ 0 - 17
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)]

+ 0 - 2
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]))
 

+ 10 - 101
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/<get-block (state/get-current-repo)
-                                          block-uuid
-                                          {:children? false
-                                           :skip-refresh? true})]
-         (set-block! block)))
-     [])
-    (when block
-      [:div.color-level.embed-block.bg-base-2
-       {:style {:z-index 2}
-        :on-pointer-down (fn [e] (.stopPropagation e))}
-       [:div.px-3.pt-1.pb-2
-        (let [config' (assoc config
-                             :db/id (:db/id block)
-                             :id (str block-uuid)
-                             :embed-id block-uuid
-                             :embed? true
-                             :embed-parent (:block config)
-                             :ref? false)]
-          (block-container config' block))]])))
-
-(rum/defc page-embed-aux < rum/reactive db-mixins/query
-  [config block]
-  (let [current-page (state/get-current-page)
-        block (db/sub-block (:db/id block))
-        page-name (:block/name block)]
-    [:div.color-level.embed.embed-page.bg-base-2
-     {:class (when (:sidebar? config) "in-sidebar")
-      :on-pointer-down #(.stopPropagation %)}
-     [:section.flex.items-center.p-1.embed-header
-      [:div.mr-3 svg/page]
-      (page-cp config block)]
-     (when (and
-            (not= (util/page-name-sanity-lc (or current-page ""))
-                  page-name)
-            (not= (util/page-name-sanity-lc (get config :id ""))
-                  page-name))
-       (let [blocks (ldb/get-children block)
-             config' (assoc config
-                            :db/id (:db/id block)
-                            :id page-name
-                            :embed? true
-                            :page-embed? true
-                            :ref? false)]
-         (blocks-container config' blocks)))]))
-
-(rum/defc page-embed
-  [config page-name]
-  (let [page-name (util/page-name-sanity-lc (string/trim page-name))
-        [block set-block!] (hooks/use-state nil)]
-    (hooks/use-effect!
-     (fn []
-       (p/let [block (db-async/<get-block (state/get-current-repo)
-                                          page-name
-                                          {:children? true
-                                           :skip-refresh? true})]
-         (set-block! block)))
-     [])
-    (when block
-      (page-embed-aux config block))))
-
 (defn- get-label-text
   [label]
   (when (and (= 1 (count label))
@@ -1422,31 +1349,6 @@
    [:span.warning
     (util/format "{{function %s}}" (first arguments))]))
 
-(defn- macro-embed-cp
-  [config arguments]
-  (let [a (first arguments)
-        {:keys [link-depth]} config
-        link-depth (or link-depth 0)]
-    (cond
-      (nil? a)                                              ; empty embed
-      nil
-
-      (> 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!

+ 2 - 2
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)

+ 0 - 1
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]

+ 212 - 216
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)))
-
-     (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)))
-
+  [:<>
+   (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-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 "copy"
-       :on-click #(editor-handler/copy-selection-blocks true)}
-      (t :editor/copy)
-      (shui/dropdown-menu-shortcut (ui/keyboard-shortcut-from-config :editor/copy)))
+      {: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 "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))
+(rum/defc ^:large-vars/cleanup-todo block-context-menu-content <
+  shortcut/disable-all-shortcuts
+  [_target block-id property-default-value?]
+  (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)))
 
-     (shui/dropdown-menu-item
-      {:key "copy block refs"
-       :on-click editor-handler/copy-block-refs}
-      (t :content/copy-block-ref))
+       (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)
 
-     (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)))
+        {: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 "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)))]))
-
-(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)))
-
-         (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-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      "Open in sidebar"
+          {:key      "Copy block URL"
            :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)
+                       (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      "Copy block ref"
+          {:key "Cut"
            :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)))
+                       (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      "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)
+          {: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 "Toggle number list"
-           :on-click #(state/pub-event! [:editor/toggle-own-number-list (state/get-selection-block-ids)])}
-          (t :context-menu/toggle-number-list))
+          {:key      "Make a Card"
+           :on-click #(fsrs/batch-make-cards! [block-id])}
+          (t :context-menu/make-a-flashcard))
+         :else
+         nil)
 
-         (shui/dropdown-menu-separator)
+       (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 "Expand all"
-           :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)))
+       (shui/dropdown-menu-separator)
 
-         (shui/dropdown-menu-item
-          {:key "Collapse all"
-           :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)))
-
-         (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 (state/sub [:ui/developer-mode?])
-           [:<>
-            (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/<invoke-db-worker :thread-api/rtc-get-block-content-versions token graph-uuid block-id)]
-                      (prn :Dev-show-block-content-history)
-                      (doseq [[block-uuid versions] blocks-versions]
-                        (prn :block-uuid block-uuid)
-                        (pp/print-table [:content :created-at]
-                                        (map (fn [version]
-                                               {:created-at (tc/from-long (* (:created-at version) 1000))
-                                                :content (:value version)})
-                                             versions))))))}
-
-               "(Dev) Show block content history")))])]))))
+       (shui/dropdown-menu-item
+        {:key "Expand all"
+         :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)))
+
+       (shui/dropdown-menu-item
+        {:key "Collapse all"
+         :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)))
+
+       (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 (state/sub [:ui/developer-mode?])
+         [:<>
+          (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/<invoke-db-worker :thread-api/rtc-get-block-content-versions token graph-uuid block-id)]
+                    (prn :Dev-show-block-content-history)
+                    (doseq [[block-uuid versions] blocks-versions]
+                      (prn :block-uuid block-uuid)
+                      (pp/print-table [:content :created-at]
+                                      (map (fn [version]
+                                             {:created-at (tc/from-long (* (:created-at version) 1000))
+                                              :content (:value version)})
+                                           versions))))))}
+
+             "(Dev) Show block content history")))])])))
 
 (rum/defc block-ref-custom-context-menu-content
   [block block-ref-id]

+ 0 - 1
src/main/frontend/components/editor.cljs

@@ -5,7 +5,6 @@
             [frontend.components.datepicker :as datepicker]
             [frontend.components.icon :as icon-component]
             [frontend.components.svg :as svg]
-            [frontend.config :as config]
             [frontend.context.i18n :refer [t]]
             [frontend.date :as date]
             [frontend.db :as db]

+ 0 - 22
src/main/frontend/components/imports.cljs

@@ -43,8 +43,6 @@
 ;; Can't name this component as `frontend.components.import` since shadow-cljs
 ;; will complain about it.
 
-(defonce *opml-imported-pages (atom nil))
-
 (defn- finished-cb
   []
   (notification/show! "Import finished!" :success)
@@ -134,26 +132,6 @@
       (notification/show! "Please choose an EDN or a JSON file."
                           :error))))
 
-(defn- opml-import-handler
-  [e]
-  (let [file      (first (array-seq (.-files (.-target e))))
-        file-name (gobj/get file "name")]
-    (if (string/ends-with? file-name ".opml")
-      (do
-        (state/set-state! :graph/importing :opml)
-        (let [reader (js/FileReader.)]
-          (set! (.-onload reader)
-                (fn [e]
-                  (let [text (.. e -target -result)]
-                    (import-handler/import-from-opml! text
-                                                      (fn [pages]
-                                                        (reset! *opml-imported-pages pages)
-                                                        (state/set-state! :graph/importing nil)
-                                                        (finished-cb))))))
-          (.readAsText reader file)))
-      (notification/show! "Please choose a OPML file."
-                          :error))))
-
 (rum/defcs set-graph-name-dialog
   < rum/reactive
   (rum/local "" ::input)

+ 0 - 1
src/main/frontend/components/left_sidebar.cljs

@@ -46,7 +46,6 @@
   [page recent?]
   (when-let [id (:db/id page)]
     (let [page (db/sub-block id)
-          repo (state/get-current-repo)
           icon (icon/get-node-icon-cp page {:size 16})
           title (:block/title page)
           untitled? (db-model/untitled-page? title)

+ 1 - 0
src/main/frontend/components/onboarding/index.css

@@ -1,3 +1,4 @@
+/* TODO: Remove this file */
 body[data-page=repo-add],
 body[data-page=import] {
   .cp__header .add-graph-btn {

+ 0 - 285
src/main/frontend/components/onboarding/quick_tour.cljs

@@ -1,285 +0,0 @@
-(ns frontend.components.onboarding.quick-tour
-  (:require [promesa.core :as p]
-            [cljs-bean.core :as bean]
-            [frontend.state :as state]
-            [frontend.context.i18n :refer [t]]
-            [frontend.date :as date]
-            [frontend.util :as util]
-            [frontend.handler.route :as route-handler]
-            [frontend.handler.command-palette :as command-palette]
-            [hiccups.runtime :as h]
-            [dommy.core :as d]))
-
-(defn- load-base-assets$
-  []
-  (util/js-load$ (str util/JS_ROOT "/shepherd.min.js")))
-
-(defn- make-skip-fns
-  [^js jsTour]
-  (let [^js el (js/document.createElement "button")]
-    (.add (.-classList el) "cp__onboarding-skip-quick-tour")
-    (set! (.-innerHTML el) (h/render-html [:span [:i.ti.ti-player-skip-forward] (t :on-boarding/quick-tour-btn-skip)]))
-    (.addEventListener el "click" #(.cancel jsTour))
-    [#(.appendChild js/document.body el)
-     #(.removeChild js/document.body el)]))
-
-(defn- wait-target
-  [fn-or-selector time]
-  (p/let [action (if (string? fn-or-selector)
-                   #(d/sel1 fn-or-selector)
-                   fn-or-selector)
-          _ (action)
-          _ (p/delay time)]))
-
-(defn- inject-steps-indicator
-  [current total]
-
-  (h/render-html
-   [:div.steps
-    [:strong (str (t :on-boarding/quick-tour-steps) current)]
-    [:ul (for [i (range total)] [:li {:class (when (= current (inc i)) "active")} i])]]))
-
-(defn- create-steps! [^js jsTour]
-  [
-   ;; step 1
-   {:id                "nav-help"
-    :text              (h/render-html [:section [:h2 (t :on-boarding/quick-tour-help-title)]
-                                       [:p (t :on-boarding/quick-tour-help-desc)]])
-    :attachTo          {:element ".cp__sidebar-help-btn" :on "top"}
-    :beforeShowPromise #(if (state/sub :ui/sidebar-open?)
-                          (wait-target state/hide-right-sidebar! 700)
-                          (p/resolved true))
-    :canClickTarget    true
-    :buttons           [{:text (t :on-boarding/quick-tour-btn-next) :action (.-next jsTour)}]
-    :popperOptions     {:modifiers [{:name    "preventOverflow"
-                                     :options {:padding 20}}
-                                    {:name    "offset"
-                                     :options {:offset [0, 10]}}]}}
-
-   ;; step 2
-   {:id                "nav-journal-page"
-    :text              (h/render-html [:section [:h2 (t :on-boarding/quick-tour-journal-page-title)]
-                                       [:p
-                                        [:span (t :on-boarding/quick-tour-journal-page-desc-1)]
-                                        [:a (t :on-boarding/quick-tour-journal-page-desc-2)]
-                                        [:span (t :on-boarding/quick-tour-journal-page-desc-3)]]])
-
-    :attachTo          {:element ".page.is-journals .page-title" :on "top-end"}
-    :beforeShowPromise #(if-not (= (util/safe-lower-case (state/get-current-page))
-                                   (util/safe-lower-case (date/today)))
-                          (wait-target (fn []
-                                         (route-handler/redirect-to-page! (date/today))
-                                         (util/scroll-to-top)) 200)
-                          (p/resolved true))
-    :buttons           [{:text (t :on-boarding/quick-tour-btn-back) :classes "back" :action (.-back jsTour)}
-                        {:text (t :on-boarding/quick-tour-btn-next) :action (.-next jsTour)}]
-    :popperOptions     {:modifiers [{:name    "preventOverflow"
-                                     :options {:padding 63}}
-                                    {:name    "offset"
-                                     :options {:offset [10, 10]}}]}}
-
-   ;; step 3
-   {:id                "nav-left-sidebar"
-    :text              (h/render-html [:section [:h2 (t :on-boarding/quick-tour-left-sidebar-title)]
-                                       [:p [:span (t :on-boarding/quick-tour-left-sidebar-desc)]]])
-
-    :attachTo          {:element "#left-menu" :on "top"}
-    :beforeShowPromise #(p/resolved true)
-    :buttons           [{:text (t :on-boarding/quick-tour-btn-back) :classes "back" :action (.-back jsTour)}
-                        {:text (t :on-boarding/quick-tour-btn-next) :action (.-next jsTour)}]
-    :popperOptions     {:modifiers [{:name    "preventOverflow"
-                                     :options {:padding 20}}
-                                    {:name    "offset"
-                                     :options {:offset [10, 10]}}]}}
-
-   ;; step 4
-   {:id                "nav-favorites"
-    :text              (h/render-html [:section [:h2 (t :on-boarding/quick-tour-favorites-title)]
-                                       [:p (t :on-boarding/quick-tour-favorites-desc-1)]
-                                       [:p (t :on-boarding/quick-tour-favorites-desc-2)]])
-    :beforeShowPromise #(if-not (state/sub :ui/left-sidebar-open?)
-                          (wait-target state/toggle-left-sidebar! 500)
-                          (p/resolved true))
-    :attachTo          {:element ".nav-content-item.favorites" :on "right"}
-    :buttons           [{:text (t :on-boarding/quick-tour-btn-back) :classes "back" :action (.-back jsTour)}
-                        {:text (t :on-boarding/quick-tour-btn-finish) :action (.-complete jsTour)}]}
-   ])
-
-(defn- create-steps-file-sync! [^js jsTour]
-  [
-   ;; initiate graph
-   {:id             "sync-initiate"
-    :text           (h/render-html [:section [:h2 "🚀 Initiate synchronization of your current graph"]
-                                    [:p "Clicking here will start the process of uploading your local files to an encrypted remote graph."]])
-    :attachTo       {:element ".cp__file-sync-indicator" :on "bottom"}
-    :canClickTarget true
-    :buttons        [{:text "Cancel" :classes "bg-gray" :action (fn [] (.hide jsTour))}
-                     {:text "Continue" :action (fn []
-                                                 (some->> (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)))

+ 1 - 1
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"

+ 0 - 1
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)))}})
 

+ 2 - 3
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)))

+ 4 - 5
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?")]

+ 7 - 13
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] (<add-property! block property-id property-value {}))
   ([block property-id property-value {:keys [selected? exit-edit? class-schema? entity-id?]
                                       :or {exit-edit? true}}]
-   (let [repo (state/get-current-repo)
-         class? (ldb/class? block)
+   (let [class? (ldb/class? block)
          property (db/entity property-id)
          many? (db-property/many? property)
          checkbox? (= :checkbox (:logseq.property/type property))
@@ -200,10 +197,10 @@
                                           (= property-value (:db/id (db/entity :logseq.property.view/type.list))))]
             (ui-outliner-tx/transact!
              {:outliner-op :set-block-property}
-             (property-handler/batch-set-block-property! repo block-ids property-id property-value {:entity-id? entity-id?})
+             (property-handler/batch-set-block-property! block-ids property-id property-value {:entity-id? entity-id?})
              (when (and set-query-list-view?
                         (nil? (:logseq.property.view/group-by-property block)))
-               (property-handler/batch-set-block-property! repo block-ids :logseq.property.view/group-by-property
+               (property-handler/batch-set-block-property! block-ids :logseq.property.view/group-by-property
                                                            (:db/id (db/entity :block/page))
                                                            {:entity-id? entity-id?})))))
         (when (seq (:view/selected-blocks @state/state))
@@ -443,8 +440,7 @@
 (defn- delete-block-property!
   [block property]
   (editor-handler/move-cross-boundary-up-down :up {})
-  (property-handler/remove-block-property! (state/get-current-repo)
-                                           (:db/id block)
+  (property-handler/remove-block-property! (:db/id block)
                                            (:db/ident property)))
 
 (rum/defc date-picker
@@ -520,7 +516,6 @@
 (rum/defc property-value-date-picker
   [block property value opts]
   (let [multiple-values? (db-property/many? property)
-        repo (state/get-current-repo)
         datetime? (= :datetime (:logseq.property/type property))]
     (date-picker value
                  (merge opts
@@ -530,7 +525,7 @@
                          :multiple-values? multiple-values?
                          :on-change (fn [value]
                                       (let [blocks (get-operating-blocks block)]
-                                        (property-handler/batch-set-block-property! repo (map :block/uuid blocks)
+                                        (property-handler/batch-set-block-property! (map :block/uuid blocks)
                                                                                     (:db/ident property)
                                                                                     (if datetime?
                                                                                       value
@@ -539,7 +534,7 @@
                          :on-delete (fn [e]
                                       (util/stop-propagation e)
                                       (let [blocks (get-operating-blocks block)]
-                                        (property-handler/batch-set-block-property! repo (map :block/uuid blocks)
+                                        (property-handler/batch-set-block-property! (map :block/uuid blocks)
                                                                                     (:db/ident property)
                                                                                     nil))
                                       (shui/popup-hide!))}))))
@@ -643,7 +638,6 @@
                 (let [blocks (get-operating-blocks block)
                       block-ids (map :block/uuid blocks)]
                   (property-handler/batch-remove-block-property!
-                   (state/get-current-repo)
                    block-ids
                    (:db/ident property)))
                 (when-not (false? (:exit-edit? opts))

+ 8 - 10
src/main/frontend/components/query/builder.cljs

@@ -2,7 +2,6 @@
   "DSL query builder."
   (:require [clojure.string :as string]
             [frontend.components.select :as component-select]
-            [frontend.config :as config]
             [frontend.date :as date]
             [frontend.db :as db]
             [frontend.db-mixins :as db-mixins]
@@ -20,7 +19,6 @@
             [logseq.common.util.page-ref :as page-ref]
             [logseq.db :as ldb]
             [logseq.db.frontend.property :as db-property]
-            [logseq.graph-parser.db :as gp-db]
             [logseq.shui.hooks :as hooks]
             [logseq.shui.ui :as shui]
             [promesa.core :as p]
@@ -144,7 +142,7 @@
      (select (map #(hash-map :db/ident (:db/ident %)
                              :value (:block/title %))
                   properties)
-             (fn [{value :value db-ident :db/ident}]
+             (fn [{db-ident :db/ident}]
                (reset! *mode "property-value")
                (reset! *property db-ident)))]))
 
@@ -211,7 +209,7 @@
     (select result on-chosen {:loading? loading?})))
 
 (defn- db-based-query-filter-picker
-  [state *find *tree loc clause opts]
+  [state *tree loc clause opts]
   (let [*mode (::mode state)
         *property (::property state)
         *private-property? (::private-property? state)
@@ -290,7 +288,7 @@
   (rum/local nil ::mode)                ; pick mode
   (rum/local nil ::property)
   (rum/local false ::private-property?)
-  [state *find *tree loc clause opts]
+  [state *tree loc clause opts]
   (let [*mode (::mode state)
         filters query-builder/db-based-block-filters
         filters-and-ops (concat filters query-builder/operators)
@@ -298,7 +296,7 @@
     [:div.query-builder-picker
      (if @*mode
        (when-not (operator? @*mode)
-         (db-based-query-filter-picker state *find *tree loc clause opts))
+         (db-based-query-filter-picker state *tree loc clause opts))
        [:div
         (select
          (map name filters-and-ops)
@@ -315,7 +313,7 @@
          {:input-default-placeholder "Add filter/operator"})])]))
 
 (rum/defc add-filter
-  [*find *tree loc clause]
+  [*tree loc clause]
   (shui/button
    {:class "jtrigger !px-1 h-6 add-filter text-muted-foreground"
     :size :sm
@@ -324,7 +322,7 @@
     :on-click (fn [^js e]
                 (shui/popup-show! (.-target e)
                                   (fn [{:keys [id]}]
-                                    (picker *find *tree loc clause {:toggle-fn #(shui/popup-hide! id)}))
+                                    (picker *tree loc clause {:toggle-fn #(shui/popup-hide! id)}))
                                   {:align :start}))}
    (ui/icon "plus" {:size 14})
    (when (= [0] loc) "Filter")))
@@ -509,7 +507,7 @@
      (when parens? [:div.clause-bracket ")"])
 
      (when (not= loc [0])
-       (add-filter *find *tree loc []))]))
+       (add-filter *tree loc []))]))
 
 (rum/defc clause-tree < rum/reactive
   [*tree *find]
@@ -588,4 +586,4 @@
       (when (and (seq @*tree)
                  (not= @*tree [:and]))
         (clause-tree *tree *find))
-      (add-filter *find *tree [0] [])]]))
+      (add-filter *tree [0] [])]]))

+ 4 - 67
src/main/frontend/components/settings.cljs

@@ -387,12 +387,10 @@
      [:select.form-select.is-small
       {:value     preferred-date-format
        :on-change (fn [e]
-                    (let [repo (state/get-current-repo)
-                          format (util/evalue e)]
+                    (let [format (util/evalue e)]
                       (when-not (string/blank? format)
                         (p/do!
-                         (property-handler/set-block-property! repo
-                                                               :logseq.class/Journal
+                         (property-handler/set-block-property! :logseq.class/Journal
                                                                :logseq.property.journal/title-format
                                                                format)
                          (notification/show! "Please refresh the app for this change to take effect"))
@@ -400,25 +398,6 @@
       (for [format (sort (date/journal-title-formatters))]
         [:option {:key format} format])]]]])
 
-(defn workflow-row [t preferred-workflow]
-  [: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_workflow"}
-    (t :settings-page/preferred-workflow)]
-   [:div.mt-1.sm:mt-0.sm:col-span-2
-    [:div.max-w-lg.rounded-md
-     [:select.form-select.is-small
-      {:value     (name preferred-workflow)
-       :on-change (fn [e]
-                    (-> (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)

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 24
src/main/frontend/components/svg.cljs


+ 30 - 32
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]

+ 12 - 132
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)))

+ 0 - 3
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)))
 

+ 5 - 11
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/<list-db)
+  (p/let [repos (persist-db/<list-db)
           repos' (map
                   (fn [{:keys [name] :as repo}]
                     (assoc repo :name
-                           (if (config/local-file-based-graph? name)
-                             name
-                             (str config/db-version-prefix name))))
+                           (str config/db-version-prefix name)))
                   repos)
           electron-disk-graphs (when (util/electron?) (ipc/ipc "getGraphs"))]
     (distinct (concat
                repos'
                (map (fn [repo-name] {:name repo-name})
-                    (concat idb-repos (some-> 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/<unsafe-delete graph)]
-      (if (util/electron?)
-        (ipc/ipc "deleteGraph" graph key true)
-        (idb/remove-item! key)))))
+      (when (util/electron?)
+        (ipc/ipc "deleteGraph" graph key true)))))

+ 2 - 4
src/main/frontend/extensions/fsrs.cljs

@@ -70,7 +70,7 @@
                                 (assoc :logseq/last-rating rating))
             prop-fsrs-due (:due prop-card-map)]
         (property-handler/set-block-properties!
-         repo (:block/uuid block-entity)
+         (:block/uuid block-entity)
          {:logseq.property.fsrs/state prop-fsrs-state
           :logseq.property.fsrs/due prop-fsrs-due})))))
 
@@ -332,11 +332,9 @@
 (defn batch-make-cards!
   ([] (batch-make-cards! (state/get-selection-block-ids)))
   ([block-ids]
-   (let [repo (state/get-current-repo)
-         blocks (get-operating-blocks block-ids)]
+   (let [blocks (get-operating-blocks block-ids)]
      (when-let [block-ids (not-empty (map :block/uuid blocks))]
        (property-handler/batch-set-block-property!
-        repo
         block-ids
         :block/tags
         (:db/id (db/entity :logseq.class/Card)))))))

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

@@ -175,7 +175,7 @@
             color' (let [colors (:property/closed-values (db/entity :logseq.property.pdf/hl-color))]
                      (some (fn [color-block] (when (= (:block/title color-block) color)
                                                (:db/id color-block))) colors))]
-        (property-handler/set-block-property! (state/get-current-repo) (:block/uuid block) k color')))))
+        (property-handler/set-block-property! (:block/uuid block) k color')))))
 
 (defn unlink-hl-area-image$
   [^js _viewer current hl]

+ 1 - 7
src/main/frontend/extensions/pdf/core.cljs

@@ -905,8 +905,7 @@
   [asset last-visit-page]
   (when (and (number? last-visit-page)
              (> 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)

+ 0 - 1
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]))

+ 0 - 1
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)

+ 0 - 2
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

+ 3 - 13
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

+ 0 - 1
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]

+ 1 - 30
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)]

+ 3 - 3
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)))

+ 1 - 1
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)))))

+ 5 - 18
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')]

+ 39 - 66
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!
   []

+ 41 - 149
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- <build-blocks
-  [repo]
-  (p/let [pages (export-common-handler/<get-all-pages repo)]
-    {:version 1
-     :blocks
-     (nested-select-keys [:block/id
-                          :block/type
-                          :block/page-name
-                          :block/properties
-                          :block/format
-                          :block/children
-                          :block/title
-                          :block/created-at
-                          :block/updated-at]
-                         pages)}))
-
 (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)))))
 
-(defn- <export-repo-as-edn-str [repo]
-  (p/let [result (<build-blocks repo)]
-    (let [sb (StringBuffer.)]
-      (pprint/pprint result (StringBufferWriter. sb))
-      (str sb))))
-
-(defn export-repo-as-edn!
-  [repo]
-  (p/let [edn-str (<export-repo-as-edn-str repo)]
-    (when edn-str
-      (let [data-str (some->> 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 (<build-blocks repo)
-          json-str (-> 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/<get-debug-datoms repo)
@@ -205,28 +96,29 @@
 
 ;; https://roamresearch.com/#/app/help/page/Nxz8u0vXU
 ;; export to roam json according to above spec
-(defn- <roam-data [repo]
-  (p/let [pages (export-common-handler/<get-all-pages repo)]
-    (let [non-empty-pages (remove #(empty? (:block/children %)) pages)]
-      (roam-export/traverse
-       [:page/title
-        :block/string
-        :block/uid
-        :block/children]
-       non-empty-pages))))
-
-(defn export-repo-as-roam-json!
-  [repo]
-  (p/let [data (<roam-data repo)
-          json-str (-> 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))))
+(comment
+  (defn- <roam-data [repo]
+    (p/let [pages (export-common-handler/<get-all-pages repo)]
+      (let [non-empty-pages (remove #(empty? (:block/children %)) pages)]
+        (roam-export/traverse
+         [:page/title
+          :block/string
+          :block/uid
+          :block/children]
+         non-empty-pages))))
+
+  (defn export-repo-as-roam-json!
+    [repo]
+    (p/let [data (<roam-data repo)
+            json-str (-> 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"

+ 0 - 1
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]))
 

+ 3 - 4
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

+ 5 - 20
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))
 

+ 0 - 29
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)

+ 0 - 2
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]

+ 1 - 24
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"
   []

+ 0 - 2
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]

+ 1 - 2
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]

+ 0 - 1
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)

+ 0 - 3
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]]))

+ 0 - 1
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]

+ 1 - 1
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

+ 7 - 7
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)))))

+ 6 - 6
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)))))

+ 0 - 1
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]))

+ 10 - 13
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)

+ 0 - 2
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]))

+ 2 - 6
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 (<get-block block-uuid {:children? false})
+     (p/let [block (<get-block block-uuid {:children? false})
              opts' (bean/->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]

+ 1 - 1
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)

+ 1 - 1
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!
   []

+ 0 - 1
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]

+ 0 - 3
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}}

Vissa filer visades inte eftersom för många filer har ändrats