Ver código fonte

enhance(clock): support recording in repeated block // cleanup unused namespaces (#2777)

* enhance(clock): support recording in repeated block

* cleanup: unused namespaces

* cleanup: missing-else-branch if --> when

* enhance: wider search results window for mobile browser

* fix: namespace requirement
llcc 4 anos atrás
pai
commit
fef5bbf068
100 arquivos alterados com 716 adições e 937 exclusões
  1. 11 14
      src/main/frontend/commands.cljs
  2. 22 19
      src/main/frontend/components/block.cljs
  3. 8 8
      src/main/frontend/components/commit.cljs
  4. 15 18
      src/main/frontend/components/content.cljs
  5. 7 7
      src/main/frontend/components/datetime.cljs
  6. 14 15
      src/main/frontend/components/diff.cljs
  7. 5 5
      src/main/frontend/components/editor.cljs
  8. 7 8
      src/main/frontend/components/encryption.cljs
  9. 11 13
      src/main/frontend/components/file.cljs
  10. 15 22
      src/main/frontend/components/header.cljs
  11. 5 6
      src/main/frontend/components/hierarchy.cljs
  12. 11 18
      src/main/frontend/components/journal.cljs
  13. 26 36
      src/main/frontend/components/page.cljs
  14. 9 10
      src/main/frontend/components/plugins.cljs
  15. 8 9
      src/main/frontend/components/query_table.cljs
  16. 12 14
      src/main/frontend/components/reference.cljs
  17. 16 19
      src/main/frontend/components/repo.cljs
  18. 15 20
      src/main/frontend/components/right_sidebar.cljs
  19. 3 2
      src/main/frontend/components/search.cljs
  20. 3 3
      src/main/frontend/components/settings.cljs
  21. 2 4
      src/main/frontend/components/sidebar.cljs
  22. 6 7
      src/main/frontend/components/theme.cljs
  23. 8 9
      src/main/frontend/components/widgets.cljs
  24. 1 2
      src/main/frontend/db/migrate.cljs
  25. 2 4
      src/main/frontend/db/outliner.cljs
  26. 13 15
      src/main/frontend/db/query_dsl.cljs
  27. 9 12
      src/main/frontend/db/query_react.cljs
  28. 1 1
      src/main/frontend/db/react.cljs
  29. 4 5
      src/main/frontend/extensions/calc.cljc
  30. 25 26
      src/main/frontend/extensions/code.cljs
  31. 8 18
      src/main/frontend/extensions/excalidraw.cljs
  32. 5 14
      src/main/frontend/extensions/graph.cljs
  33. 5 28
      src/main/frontend/extensions/graph/pixi.cljs
  34. 8 10
      src/main/frontend/extensions/pdf/assets.cljs
  35. 19 22
      src/main/frontend/extensions/pdf/highlights.cljs
  36. 1 1
      src/main/frontend/extensions/pdf/utils.cljs
  37. 3 3
      src/main/frontend/extensions/srs.cljs
  38. 3 5
      src/main/frontend/extensions/zip.cljs
  39. 12 14
      src/main/frontend/extensions/zotero/extractor.cljs
  40. 2 2
      src/main/frontend/format/mldoc.cljs
  41. 1 3
      src/main/frontend/format/mldoc_test.cljs
  42. 0 1
      src/main/frontend/fs/bfs.cljs
  43. 1 1
      src/main/frontend/fs/nfs.cljs
  44. 8 10
      src/main/frontend/fs/node.cljs
  45. 6 12
      src/main/frontend/fs/watcher_handler.cljs
  46. 6 8
      src/main/frontend/handler.cljs
  47. 2 14
      src/main/frontend/handler/block.cljs
  48. 14 16
      src/main/frontend/handler/common.cljs
  49. 3 5
      src/main/frontend/handler/dnd.cljs
  50. 6 6
      src/main/frontend/handler/draw.cljs
  51. 2 1
      src/main/frontend/handler/editor.cljs
  52. 4 6
      src/main/frontend/handler/editor/keyboards.cljs
  53. 3 10
      src/main/frontend/handler/editor/lifecycle.cljs
  54. 18 18
      src/main/frontend/handler/events.cljs
  55. 1 3
      src/main/frontend/handler/export.cljs
  56. 13 15
      src/main/frontend/handler/extract.cljs
  57. 9 9
      src/main/frontend/handler/git.cljs
  58. 4 7
      src/main/frontend/handler/graph.cljs
  59. 4 9
      src/main/frontend/handler/history.cljs
  60. 6 6
      src/main/frontend/handler/image.cljs
  61. 7 9
      src/main/frontend/handler/metadata.cljs
  62. 20 22
      src/main/frontend/handler/page.cljs
  63. 2 2
      src/main/frontend/handler/plugin.cljs
  64. 2 2
      src/main/frontend/handler/repo.cljs
  65. 8 9
      src/main/frontend/handler/route.cljs
  66. 6 7
      src/main/frontend/handler/search.cljs
  67. 7 9
      src/main/frontend/handler/user.cljs
  68. 15 17
      src/main/frontend/handler/web/nfs.cljs
  69. 3 5
      src/main/frontend/idb.cljs
  70. 3 4
      src/main/frontend/image.cljs
  71. 2 4
      src/main/frontend/modules/datascript_report/core.cljs
  72. 5 12
      src/main/frontend/modules/file/core.cljs
  73. 7 8
      src/main/frontend/modules/outliner/core.cljs
  74. 0 2
      src/main/frontend/modules/outliner/datascript.cljc
  75. 9 9
      src/main/frontend/modules/outliner/file.cljs
  76. 2 3
      src/main/frontend/modules/outliner/pipeline.cljs
  77. 3 4
      src/main/frontend/modules/outliner/state.cljs
  78. 2 5
      src/main/frontend/modules/outliner/tree.cljs
  79. 1 3
      src/main/frontend/modules/shortcut/config.cljs
  80. 10 14
      src/main/frontend/search.cljs
  81. 3 7
      src/main/frontend/search/browser.cljs
  82. 5 6
      src/main/frontend/search/db.cljs
  83. 2 4
      src/main/frontend/search/node.cljs
  84. 12 12
      src/main/frontend/state.cljs
  85. 4 4
      src/main/frontend/template.cljs
  86. 3 4
      src/main/frontend/tools/html_export.cljs
  87. 26 28
      src/main/frontend/ui.cljs
  88. 6 10
      src/main/frontend/ui/date_picker.cljs
  89. 2 2
      src/main/frontend/util.cljc
  90. 16 15
      src/main/frontend/util/clock.cljs
  91. 1 1
      src/main/frontend/util/marker.cljs
  92. 4 5
      src/main/frontend/util/pool.cljs
  93. 1 1
      src/main/frontend/util/property.cljs
  94. 1 3
      src/main/frontend/util/thingatpt.cljs
  95. 28 29
      src/main/logseq/api.cljs
  96. 2 7
      src/test/frontend/db/model_test.cljs
  97. 4 6
      src/test/frontend/db/outliner_test.cljs
  98. 4 6
      src/test/frontend/db/query_dsl_test.cljs
  99. 1 1
      src/test/frontend/extensions/calc_test.cljc
  100. 6 8
      src/test/frontend/fixtures.cljs

+ 11 - 14
src/main/frontend/commands.cljs

@@ -1,22 +1,20 @@
 (ns frontend.commands
-  (:require [frontend.util :as util]
+  (:require [clojure.string :as string]
+            [frontend.config :as config]
+            [frontend.date :as date]
+            [frontend.db :as db]
+            [frontend.db.utils :as db-util]
+            [frontend.handler.draw :as draw]
+            [frontend.handler.notification :as notification]
+            [frontend.handler.plugin :as plugin-handler]
+            [frontend.search :as search]
+            [frontend.state :as state]
+            [frontend.util :as util]
             [frontend.util.cursor :as cursor]
             [frontend.util.marker :as marker]
             [frontend.util.priority :as priority]
-            [frontend.date :as date]
-            [frontend.state :as state]
-            [frontend.search :as search]
-            [frontend.config :as config]
-            [frontend.db.utils :as db-util]
-            [frontend.db :as db]
-            [clojure.string :as string]
             [goog.dom :as gdom]
             [goog.object :as gobj]
-            [frontend.format :as format]
-            [frontend.handler.common :as common-handler]
-            [frontend.handler.plugin :as plugin-handler]
-            [frontend.handler.draw :as draw]
-            [frontend.handler.notification :as notification]
             [promesa.core :as p]))
 
 ;; TODO: move to frontend.handler.editor.commands
@@ -134,7 +132,6 @@
    (->block type nil))
   ([type optional]
    (let [format (get (state/get-edit-block) :block/format :markdown)
-         org? (= format :org)
          t (string/lower-case type)
          markdown-src? (and (= format :markdown) (= t "src"))
          left (cond

+ 22 - 19
src/main/frontend/components/block.cljs

@@ -284,8 +284,8 @@
         repetition (if repetition
                      (str " " (repetition-to-string repetition))
                      "")
-        hour (if hour (util/zero-pad hour))
-        min  (if min (util/zero-pad min))
+        hour (when hour (util/zero-pad hour))
+        min  (when min (util/zero-pad min))
         time (cond
                (and hour min)
                (util/format " %s:%s" hour min)
@@ -323,7 +323,7 @@
                  "Stop"
                  "To: "
                  nil)]
-    (let [class (if (= kind "Closed")
+    (let [class (when (= kind "Closed")
                   "line-through")]
       [:span.timestamp (cond-> {:active (str active)}
                          class
@@ -490,7 +490,7 @@
            state)}
   [file]
   (let [loaded? (rum/react excalidraw-loaded?)
-        draw-component (if loaded?
+        draw-component (when loaded?
                          (resolve 'frontend.extensions.excalidraw/draw))]
     (when draw-component
       (draw-component {:file file}))))
@@ -556,7 +556,7 @@
   (let [page-name (string/trim (string/lower-case page-name))
         current-page (state/get-current-page)]
     [:div.color-level.embed.embed-page.bg-base-2
-     {:class (if (:sidebar? config) "in-sidebar")
+     {:class (when (:sidebar? config) "in-sidebar")
       :on-double-click #(edit-parent-block % config)
       :on-mouse-down #(.stopPropagation %)}
      [:section.flex.items-center.p-1.embed-header
@@ -1185,7 +1185,7 @@
             nil))
 
         (and plugin-handler/lsp-enabled? (= name "renderer"))
-        (if-let [block-uuid (str (:block/uuid config))]
+        (when-let [block-uuid (str (:block/uuid config))]
           (plugins/hook-ui-slot :macro-renderer-slotted (assoc options :uuid block-uuid)))
 
         (get @macro/macros name)
@@ -1210,7 +1210,7 @@
                                   1
                                   (util/format "[:img {:src \"%s\"}]" (first arguments))
                                   4
-                                  (if (and (util/safe-parse-int (nth arguments 1))
+                                  (when (and (util/safe-parse-int (nth arguments 1))
                                            (util/safe-parse-int (nth arguments 2)))
                                     (util/format "[:img.%s {:src \"%s\" :style {:width %s :height %s}}]"
                                                  (nth arguments 3)
@@ -1218,7 +1218,7 @@
                                                  (util/safe-parse-int (nth arguments 1))
                                                  (util/safe-parse-int (nth arguments 2))))
                                   3
-                                  (if (and (util/safe-parse-int (nth arguments 1))
+                                  (when (and (util/safe-parse-int (nth arguments 1))
                                            (util/safe-parse-int (nth arguments 2)))
                                     (util/format "[:img {:src \"%s\" :style {:width %s :height %s}}]"
                                                  (first arguments)
@@ -1471,7 +1471,7 @@
 (defn marker-cp
   [{:block/keys [pre-block? marker] :as block}]
   (when-not pre-block?
-    (if (contains? #{"IN-PROGRESS" "WAIT" "WAITING"} marker)
+    (when (contains? #{"IN-PROGRESS" "WAIT" "WAITING"} marker)
       [:span {:class (str "task-status block-marker " (string/lower-case marker))
               :style {:margin-right 3.5}}
        (string/upper-case marker)])))
@@ -1571,7 +1571,7 @@
        (if title
          (conj
            (map-inline config title)
-           (if (and (util/electron?) (not= block-type :default))
+           (when (and (util/electron?) (not= block-type :default))
              [:a.prefix-link
               {:on-click #(case block-type
                             ;; pdf annotation
@@ -1846,8 +1846,10 @@
                                (editor-handler/edit-block! block :max (:block/format block) (:block/uuid block))))}
            svg/edit])
 
-        (when (and (= (:block/marker block) "DONE")
-                   (state/enable-timetracking?))
+        (when (and (state/enable-timetracking?)
+                   (or (= (:block/marker block) "DONE")
+                       (and (:block/repeated? block)
+                            (= (:block/marker block) "TODO"))))
           (let [summary (clock/clock-summary body true)]
             (when (and summary
                        (not= summary "0m")
@@ -1855,6 +1857,7 @@
               (ui/tippy {:html        (fn []
                                         (when-let [logbook (drawer/get-logbook body)]
                                           (let [clocks (->> (last logbook)
+                                                            (filter #(string/starts-with? % "CLOCK:"))
                                                             (remove string/blank?))]
                                             [:div.p-4
                                              [:div.font-bold.mb-2 "LOGBOOK:"]
@@ -1863,9 +1866,9 @@
                                                 [:li clock])]])))
                          :interactive true
                          :delay       [1000, 100]}
-               [:div.text-sm.time-spent.ml-1 {:style {:padding-top 3}}
-                [:a.fade-link
-                 summary]]))))
+                        [:div.text-sm.time-spent.ml-1 {:style {:padding-top 3}}
+                         [:a.fade-link
+                          summary]]))))
 
         (let [block-refs-count (count (:block/_refs (db/entity (:db/id block))))]
           (when (and block-refs-count (> block-refs-count 0))
@@ -2185,7 +2188,7 @@
                     :else
                     (markup-elements-cp config content)))
         checked? (some? checkbox)
-        items (if (seq items)
+        items (when (seq items)
                 (->elem
                  (list-element items)
                  (for [item items]
@@ -2241,7 +2244,7 @@
                               col_groups)
                         (catch js/Error e
                           []))
-        head (if header
+        head (when header
                [:thead (tr :th header)])
         groups (mapv (fn [group]
                        (->elem
@@ -2459,7 +2462,7 @@
   [config options html-export?]
   (when options
     (let [{:keys [language lines pos_meta]} options
-          attr (if language
+          attr (when language
                  {:data-lang language})
           code (join-lines lines)]
       (cond
@@ -2510,7 +2513,7 @@
               (if (coll? v)
                 (let [vals (for [item v]
                              (if (coll? v)
-                               (let [config (if (= k :alias)
+                               (let [config (when (= k :alias)
                                               (assoc config :block/alias? true))]
                                  (page-cp config {:block/name item}))
                                (inline-text format item)))]

+ 8 - 8
src/main/frontend/components/commit.cljs

@@ -1,16 +1,16 @@
 (ns frontend.components.commit
-  (:require [rum.core :as rum]
-            [frontend.util :as util :refer [profile]]
-            [frontend.util.cursor :as cursor]
-            [clojure.string :as string]
+  (:require [clojure.string :as string]
+            [electron.ipc :as ipc]
+            [frontend.handler.notification :as notification]
             [frontend.handler.repo :as repo-handler]
-            [frontend.state :as state]
             [frontend.mixins :as mixins]
-            [frontend.handler.notification :as notification]
-            [promesa.core :as p]
+            [frontend.state :as state]
+            [frontend.util :as util]
+            [frontend.util.cursor :as cursor]
             [goog.dom :as gdom]
             [goog.object :as gobj]
-            [electron.ipc :as ipc]))
+            [promesa.core :as p]
+            [rum.core :as rum]))
 
 (defn commit-and-push!
   []

+ 15 - 18
src/main/frontend/components/content.cljs

@@ -1,31 +1,28 @@
 (ns frontend.components.content
-  (:require [rum.core :as rum]
+  (:require [cljs.pprint :as pprint]
+            [clojure.string :as string]
+            [dommy.core :as d]
+            [frontend.commands :as commands]
+            [frontend.components.editor :as editor]
+            [frontend.components.export :as export]
+            [frontend.config :as config]
+            [frontend.context.i18n :as i18n]
             [frontend.db :as db]
+            [frontend.extensions.srs :as srs]
             [frontend.format :as format]
             [frontend.format.protocol :as protocol]
+            [frontend.handler.common :as common-handler]
             [frontend.handler.editor :as editor-handler]
-            [frontend.handler.export :as export-handler]
             [frontend.handler.image :as image-handler]
-            [frontend.commands :as commands]
-            [frontend.util :as util :refer [profile]]
-            [frontend.state :as state]
+            [frontend.handler.notification :as notification]
+            [frontend.handler.page :as page-handler]
             [frontend.mixins :as mixins]
+            [frontend.state :as state]
             [frontend.ui :as ui]
-            [cljs-bean.core :as bean]
-            [frontend.config :as config]
+            [frontend.util :as util]
             [goog.dom :as gdom]
             [goog.object :as gobj]
-            [dommy.core :as d]
-            [clojure.string :as string]
-            [cljs.pprint :as pprint]
-            [frontend.handler.notification :as notification]
-            [frontend.components.editor :as editor]
-            [frontend.components.export :as export]
-            [frontend.context.i18n :as i18n]
-            [frontend.text :as text]
-            [frontend.handler.page :as page-handler]
-            [frontend.handler.common :as common-handler]
-            [frontend.extensions.srs :as srs]))
+            [rum.core :as rum]))
 
 (defn- set-format-js-loading!
   [format value]

+ 7 - 7
src/main/frontend/components/datetime.cljs

@@ -1,15 +1,15 @@
 (ns frontend.components.datetime
-  (:require [rum.core :as rum]
-            [frontend.util :as util :refer [profile]]
+  (:require [cljs-time.core :as t]
+            [clojure.string :as string]
+            [frontend.commands :as commands]
             [frontend.components.svg :as svg]
             [frontend.date :as date]
-            [frontend.state :as state]
-            [frontend.handler.repeated :as repeated]
             [frontend.handler.editor :as editor-handler]
-            [cljs-time.core :as t]
+            [frontend.handler.repeated :as repeated]
+            [frontend.state :as state]
             [frontend.ui :as ui]
-            [frontend.commands :as commands]
-            [clojure.string :as string]))
+            [frontend.util :as util]
+            [rum.core :as rum]))
 
 (defonce default-timestamp-value {:date nil
                                   :time ""

+ 14 - 15
src/main/frontend/components/diff.cljs

@@ -1,23 +1,22 @@
 (ns frontend.components.diff
-  (:require [rum.core :as rum]
-            [frontend.util :as util]
+  (:require [clojure.string :as string]
+            [frontend.components.svg :as svg]
             [frontend.config :as config]
-            [frontend.handler.git :as git-handler]
+            [frontend.diff :as diff]
+            [frontend.encrypt :as encrypt]
+            [frontend.git :as git]
+            [frontend.github :as github]
+            [frontend.handler.common :as common-handler]
             [frontend.handler.file :as file]
+            [frontend.handler.git :as git-handler]
             [frontend.handler.notification :as notification]
-            [frontend.handler.common :as common-handler]
             [frontend.state :as state]
-            [clojure.string :as string]
-            [frontend.db :as db]
-            [frontend.components.svg :as svg]
             [frontend.ui :as ui]
-            [frontend.git :as git]
+            [frontend.util :as util]
             [goog.object :as gobj]
-            [promesa.core :as p]
-            [frontend.github :as github]
-            [frontend.diff :as diff]
             [medley.core :as medley]
-            [frontend.encrypt :as encrypt]))
+            [promesa.core :as p]
+            [rum.core :as rum]))
 
 (defonce remote-hash-id (atom nil))
 (defonce diff-state (atom {}))
@@ -77,14 +76,14 @@
      (let [content (get contents path)]
        (if (or (and delete? (nil? content))
                content)
-         (if (not= content local-content)
+         (when (not= content local-content)
            (let [local-content (or local-content "")
                  content (or content "")
                  diff (medley/indexed (diff/diff local-content content))
                  diff? (some (fn [[_idx {:keys [added removed]}]]
                                (or added removed))
                              diff)]
-             [:div.pre-line-white-space.p-2 {:class (if collapse? "hidden")
+             [:div.pre-line-white-space.p-2 {:class (when collapse? "hidden")
                                              :style {:overflow "auto"}}
               (if edit?
                 [:div.grid.grid-cols-2.gap-1
@@ -199,7 +198,7 @@
   (let [diffs (util/react state/diffs)
         remote-oid (util/react remote-hash-id)
         repo (state/get-current-repo)
-        contents (if remote-oid (state/sub [:github/contents repo remote-oid]))
+        contents (when remote-oid (state/sub [:github/contents repo remote-oid]))
         pushing? (util/react *pushing?)]
     [:div#diffs {:style {:margin-bottom 200}}
      [:h1.title "Diff"]

+ 5 - 5
src/main/frontend/components/editor.cljs

@@ -2,19 +2,19 @@
   (:require [clojure.string :as string]
             [dommy.core :as d]
             [frontend.commands :as commands
-             :refer [*angle-bracket-caret-pos *matched-block-commands *matched-commands *show-block-commands *show-commands *slash-caret-pos *first-command-group]]
+             :refer [*angle-bracket-caret-pos *first-command-group *matched-block-commands *matched-commands *show-block-commands *show-commands *slash-caret-pos]]
+            [frontend.components.block :as block]
             [frontend.components.datetime :as datetime-comp]
             [frontend.components.search :as search]
             [frontend.components.svg :as svg]
-            [frontend.components.block :as block]
             [frontend.config :as config]
             [frontend.db :as db]
+            [frontend.extensions.zotero :as zotero]
             [frontend.handler.editor :as editor-handler :refer [get-state]]
             [frontend.handler.editor.lifecycle :as lifecycle]
             [frontend.handler.page :as page-handler]
             [frontend.mixins :as mixins]
             [frontend.modules.shortcut.core :as shortcut]
-            [frontend.extensions.zotero :as zotero]
             [frontend.state :as state]
             [frontend.ui :as ui]
             [frontend.util :as util]
@@ -301,7 +301,7 @@
                             (- (max (* 2 offset-top) delta-height) 16)
                             max-height))
                         max-height)
-        x-overflow? (if (and (seq rect) (> vw-width max-width))
+        x-overflow? (when (and (seq rect) (> vw-width max-width))
                       (let [delta-width (- vw-width (+ (:left rect) left))]
                         (< delta-width (* max-width 0.5))))] ;; FIXME: for translateY layer
     [:div.absolute.rounded-md.shadow-lg.absolute-modal
@@ -314,7 +314,7 @@
                ;; TODO: auto responsive fixed size
                :width "fit-content"
                :z-index    11}
-              (if set-default-width?
+              (when set-default-width?
                 {:width max-width})
               (if config/mobile?
                 {:left 0}

+ 7 - 8
src/main/frontend/components/encryption.cljs

@@ -1,15 +1,14 @@
 (ns frontend.components.encryption
-  (:require [rum.core :as rum]
-            [promesa.core :as p]
-            [frontend.encrypt :as e]
-            [frontend.util :as util :refer [profile]]
+  (:require [clojure.string :as string]
             [frontend.context.i18n :as i18n]
-            [frontend.db.utils :as db-utils]
-            [clojure.string :as string]
-            [frontend.state :as state]
+            [frontend.encrypt :as e]
             [frontend.handler.metadata :as metadata-handler]
+            [frontend.handler.notification :as notification]
+            [frontend.state :as state]
             [frontend.ui :as ui]
-            [frontend.handler.notification :as notification]))
+            [frontend.util :as util]
+            [promesa.core :as p]
+            [rum.core :as rum]))
 
 (rum/defcs encryption-dialog-inner <
   (rum/local false ::reveal-secret-phrase?)

+ 11 - 13
src/main/frontend/components/file.cljs

@@ -1,23 +1,21 @@
 (ns frontend.components.file
-  (:require [rum.core :as rum]
-            [frontend.util :as util]
-            [frontend.handler.export :as export-handler]
-            [frontend.config :as config]
-            [frontend.state :as state]
+  (:require [cljs-time.coerce :as tc]
+            [cljs-time.core :as t]
             [clojure.string :as string]
-            [frontend.db :as db]
-            [frontend.format :as format]
             [frontend.components.content :as content]
             [frontend.components.lazy-editor :as lazy-editor]
+            [frontend.components.svg :as svg]
             [frontend.config :as config]
-            [goog.object :as gobj]
-            [frontend.date :as date]
-            [cljs-time.coerce :as tc]
-            [cljs-time.core :as t]
-            [frontend.ui :as ui]
             [frontend.context.i18n :as i18n]
+            [frontend.date :as date]
+            [frontend.db :as db]
+            [frontend.format :as format]
+            [frontend.handler.export :as export-handler]
+            [frontend.state :as state]
+            [frontend.util :as util]
+            [goog.object :as gobj]
             [reitit.frontend.easy :as rfe]
-            [frontend.components.svg :as svg]))
+            [rum.core :as rum]))
 
 (defn- get-path
   [state]

+ 15 - 22
src/main/frontend/components/header.cljs

@@ -1,29 +1,22 @@
 (ns frontend.components.header
-  (:require [rum.core :as rum]
-            [reitit.frontend.easy :as rfe]
-            [clojure.string :as string]
-            [frontend.db :as db]
-            [frontend.ui :as ui]
-            [frontend.util :as util]
-            [frontend.state :as state]
-            [frontend.storage :as storage]
-            [frontend.config :as config]
-            [frontend.context.i18n :as i18n]
-            [frontend.handler.ui :as ui-handler]
-            [frontend.handler.user :as user-handler]
-            [frontend.handler.plugin :as plugin-handler]
-            [frontend.components.svg :as svg]
-            [frontend.components.repo :as repo]
-            [frontend.components.search :as search]
-            [frontend.components.export :as export]
+  (:require [frontend.components.export :as export]
             [frontend.components.plugins :as plugins]
+            [frontend.components.repo :as repo]
             [frontend.components.right-sidebar :as sidebar]
-            [frontend.modules.shortcut.core :as shortcut]
+            [frontend.components.search :as search]
+            [frontend.components.svg :as svg]
+            [frontend.config :as config]
+            [frontend.context.i18n :as i18n]
             [frontend.handler.page :as page-handler]
+            [frontend.handler.plugin :as plugin-handler]
+            [frontend.handler.user :as user-handler]
             [frontend.handler.web.nfs :as nfs]
-            [frontend.mixins :as mixins]
-            [goog.dom :as gdom]
-            [goog.object :as gobj]))
+            [frontend.modules.shortcut.core :as shortcut]
+            [frontend.state :as state]
+            [frontend.ui :as ui]
+            [frontend.util :as util]
+            [reitit.frontend.easy :as rfe]
+            [rum.core :as rum]))
 
 (rum/defc logo < rum/reactive
   [{:keys [white? electron-mac?]}]
@@ -226,7 +219,7 @@
              [:span.ml-1 {:style {:margin-top (if electron-mac? 0 2)}}
               (t :open)])]])
 
-       (if config/publishing?
+       (when config/publishing?
          [:a.text-sm.font-medium.button {:href (rfe/href :graph)}
           (t :graph)])
 

+ 5 - 6
src/main/frontend/components/hierarchy.cljs

@@ -1,13 +1,12 @@
 (ns frontend.components.hierarchy
-  (:require [frontend.search :as search]
-            [clojure.string :as string]
+  (:require [clojure.string :as string]
             [frontend.components.block :as block]
-            [rum.core :as rum]
-            [frontend.ui :as ui]
-            [medley.core :as medley]
             [frontend.db :as db]
             [frontend.state :as state]
-            [frontend.text :as text]))
+            [frontend.text :as text]
+            [frontend.ui :as ui]
+            [medley.core :as medley]
+            [rum.core :as rum]))
 
 ;; FIXME: use block/namespace to get the relation
 (defn get-relation

+ 11 - 18
src/main/frontend/components/journal.cljs

@@ -1,29 +1,22 @@
 (ns frontend.components.journal
-  (:require [rum.core :as rum]
-            [reitit.frontend.easy :as rfe]
-            [frontend.util :as util :refer [profile]]
+  (:require [clojure.string :as string]
+            [frontend.components.onboarding :as onboarding]
+            [frontend.components.page :as page]
+            [frontend.components.reference :as reference]
+            [frontend.components.widgets :as widgets]
             [frontend.config :as config]
             [frontend.date :as date]
-            [frontend.db-mixins :as db-mixins]
-            [frontend.handler.notification :as notification]
-            [frontend.handler.page :as page-handler]
-            [frontend.handler.editor :as editor-handler]
             [frontend.db :as db]
+            [frontend.db-mixins :as db-mixins]
             [frontend.db.model :as model]
+            [frontend.handler.page :as page-handler]
             [frontend.state :as state]
+            [frontend.text :as text]
             [frontend.ui :as ui]
-            [frontend.config :as config]
-            [frontend.components.content :as content]
-            [frontend.components.block :as block]
-            [frontend.components.editor :as editor]
-            [frontend.components.reference :as reference]
-            [frontend.components.page :as page]
-            [frontend.components.widgets :as widgets]
-            [frontend.components.onboarding :as onboarding]
+            [frontend.util :as util]
             [goog.object :as gobj]
-            [clojure.string :as string]
-            [frontend.handler.block :as block-handler]
-            [frontend.text :as text]))
+            [reitit.frontend.easy :as rfe]
+            [rum.core :as rum]))
 
 (rum/defc blocks-cp < rum/reactive db-mixins/query
   {}

+ 26 - 36
src/main/frontend/components/page.cljs

@@ -1,52 +1,42 @@
 (ns frontend.components.page
-  (:require [rum.core :as rum]
-            [frontend.util :as util :refer [profile]]
-            [frontend.util.marker :as marker]
-            [frontend.tools.html-export :as html-export]
-            [frontend.handler.page :as page-handler]
-            [frontend.handler.ui :as ui-handler]
-            [frontend.handler.common :as common-handler]
-            [frontend.commands :as commands]
-            [frontend.handler.plugin :as plugin-handler]
-            [frontend.handler.route :as route-handler]
-            [frontend.handler.graph :as graph-handler]
-            [frontend.handler.notification :as notification]
-            [frontend.handler.editor :as editor-handler]
-            [frontend.handler.config :as config-handler]
-            [frontend.state :as state]
+  (:require [cljs.pprint :as pprint]
             [clojure.string :as string]
+            [frontend.commands :as commands]
             [frontend.components.block :as block]
+            [frontend.components.content :as content]
             [frontend.components.editor :as editor]
+            [frontend.components.export :as export]
+            [frontend.components.hierarchy :as hierarchy]
             [frontend.components.plugins :as plugins]
             [frontend.components.reference :as reference]
             [frontend.components.svg :as svg]
-            [frontend.components.export :as export]
-            [frontend.extensions.graph :as graph]
-            [frontend.extensions.pdf.assets :as pdf-assets]
-            [frontend.components.hierarchy :as hierarchy]
-            [frontend.ui :as ui]
-            [frontend.components.content :as content]
             [frontend.config :as config]
+            [frontend.context.i18n :as i18n]
+            [frontend.date :as date]
             [frontend.db :as db]
+            [frontend.db-mixins :as db-mixins]
             [frontend.db.model :as model]
-            [frontend.db.utils :as db-utils]
+            [frontend.extensions.graph :as graph]
+            [frontend.extensions.pdf.assets :as pdf-assets]
+            [frontend.format.mldoc :as mldoc]
+            [frontend.handler.common :as common-handler]
+            [frontend.handler.config :as config-handler]
+            [frontend.handler.editor :as editor-handler]
+            [frontend.handler.graph :as graph-handler]
+            [frontend.handler.notification :as notification]
+            [frontend.handler.page :as page-handler]
+            [frontend.handler.plugin :as plugin-handler]
+            [frontend.handler.route :as route-handler]
+            [frontend.handler.shell :as shell]
             [frontend.mixins :as mixins]
-            [frontend.db-mixins :as db-mixins]
-            [goog.dom :as gdom]
+            [frontend.modules.shortcut.core :as shortcut]
+            [frontend.state :as state]
+            [frontend.text :as text]
+            [frontend.ui :as ui]
+            [frontend.util :as util]
             [goog.object :as gobj]
-            [frontend.utf8 :as utf8]
-            [frontend.date :as date]
-            [frontend.format.mldoc :as mldoc]
-            [cljs-time.coerce :as tc]
-            [cljs-time.core :as t]
-            [cljs.pprint :as pprint]
-            [frontend.context.i18n :as i18n]
             [reitit.frontend.easy :as rfe]
-            [frontend.text :as text]
-            [frontend.modules.shortcut.core :as shortcut]
-            [frontend.handler.block :as block-handler]
-            [cljs-bean.core :as bean]
-            [frontend.handler.shell :as shell]))
+            [rum.core :as rum]))
 
 (defn- get-page-name
   [state]

+ 9 - 10
src/main/frontend/components/plugins.cljs

@@ -1,15 +1,14 @@
 (ns frontend.components.plugins
-  (:require [rum.core :as rum]
+  (:require [cljs-bean.core :as bean]
+            [clojure.string :as string]
+            [frontend.components.svg :as svg]
+            [frontend.handler.notification :as notification]
+            [frontend.handler.plugin :as plugin-handler]
             [frontend.state :as state]
-            [cljs-bean.core :as bean]
             [frontend.ui :as ui]
             [frontend.util :as util]
-            [electron.ipc :as ipc]
             [promesa.core :as p]
-            [frontend.components.svg :as svg]
-            [frontend.handler.notification :as notification]
-            [frontend.handler.plugin :as plugin-handler]
-            [clojure.string :as string]))
+            [rum.core :as rum]))
 
 (rum/defc installed-themes
   < rum/reactive
@@ -24,14 +23,14 @@
        (let [current-selected (= selected (:url opt))]
          [:div.it.flex.px-3.py-2.mb-2.rounded-sm.justify-between
           {:key      (:url opt)
-           :class    [(if current-selected "is-selected")]
+           :class    [(when current-selected "is-selected")]
            :on-click #(do (js/LSPluginCore.selectTheme (if current-selected nil (clj->js opt)))
                           (state/set-modal! nil))}
           [:section
            [:strong.block (:name opt)]
            [:small.opacity-30 (:description opt)]]
           [:small.flex-shrink-0.flex.items-center.opacity-10
-           (if current-selected "current")]]))]))
+           (when current-selected "current")]]))]))
 
 (rum/defc unpacked-plugin-loader
   [unpacked-pkg-path]
@@ -108,7 +107,7 @@
         [:div.de
          [:strong svg/settings-sm]
          [:ul.menu-list
-          [:li {:on-click #(if usf (js/apis.openPath usf))} "Open settings"]
+          [:li {:on-click #(when usf (js/apis.openPath usf))} "Open settings"]
           [:li {:on-click #(js/apis.openPath url)} "Open plugin package"]
           [:li {:on-click
                 #(let [confirm-fn

+ 8 - 9
src/main/frontend/components/query_table.cljs

@@ -1,17 +1,16 @@
 (ns frontend.components.query-table
-  (:require [frontend.ui :as ui]
-            [frontend.util :as util]
-            [rum.core :as rum]
-            [frontend.util.property :as property]
-            [frontend.db :as db]
-            [frontend.date :as date]
-            [frontend.state :as state]
-            [clojure.string :as string]
+  (:require [clojure.string :as string]
             [frontend.components.svg :as svg]
+            [frontend.date :as date]
+            [frontend.db :as db]
             [frontend.handler.common :as common-handler]
             [frontend.handler.editor :as editor-handler]
+            [frontend.state :as state]
+            [frontend.util :as util]
             [frontend.util.clock :as clock]
-            [medley.core :as medley]))
+            [frontend.util.property :as property]
+            [medley.core :as medley]
+            [rum.core :as rum]))
 
 ;; TODO: extract to table utils
 (defn- sort-result-by

+ 12 - 14
src/main/frontend/components/reference.cljs

@@ -1,21 +1,19 @@
 (ns frontend.components.reference
-  (:require [rum.core :as rum]
-            [frontend.util :as util]
-            [frontend.state :as state]
-            [clojure.string :as string]
-            [frontend.db :as db]
+  (:require [clojure.string :as string]
             [frontend.components.block :as block]
-            [frontend.ui :as ui]
             [frontend.components.content :as content]
-            [frontend.date :as date]
             [frontend.components.editor :as editor]
-            [frontend.db-mixins :as db-mixins]
-            [clojure.string :as string]
-            [frontend.config :as config]
             [frontend.components.svg :as svg]
-            [frontend.handler.page :as page-handler]
+            [frontend.date :as date]
+            [frontend.db :as db]
+            [frontend.db-mixins :as db-mixins]
             [frontend.handler.block :as block-handler]
-            [medley.core :as medley]))
+            [frontend.handler.page :as page-handler]
+            [frontend.state :as state]
+            [frontend.ui :as ui]
+            [frontend.util :as util]
+            [medley.core :as medley]
+            [rum.core :as rum]))
 
 (rum/defc filter-dialog-inner < rum/reactive
   [filters-atom close-fn references page-name]
@@ -131,7 +129,7 @@
              [:div.flex.flex-row.flex-1.justify-between
               [:h2.font-bold.opacity-50 (let []
                                           (str n-ref " Linked Reference"
-                                               (if (> n-ref 1) "s")))]
+                                               (when (> n-ref 1) "s")))]
               [:a.opacity-50.hover:opacity-100.filter
                {:title "Filter"
                 :on-click #(state/set-modal! (filter-dialog filters-atom references page-name))}
@@ -190,7 +188,7 @@
           (ui/foldable
            [:h2.font-bold {:style {:opacity "0.3"}}
             (if @n-ref
-              (str @n-ref " Unlinked Reference" (if (> @n-ref 1)
+              (str @n-ref " Unlinked Reference" (when (> @n-ref 1)
                                                   "s"))
               "Unlinked References")]
            (fn [] (unlinked-references-aux page-name n-ref))

+ 16 - 19
src/main/frontend/components/repo.cljs

@@ -1,34 +1,31 @@
 (ns frontend.components.repo
-  (:require [rum.core :as rum]
+  (:require [clojure.string :as string]
+            [frontend.components.commit :as commit]
+            [frontend.components.encryption :as encryption]
+            [frontend.components.svg :as svg]
             [frontend.components.widgets :as widgets]
-            [frontend.ui :as ui]
-            [frontend.state :as state]
+            [frontend.config :as config]
+            [frontend.context.i18n :as i18n]
             [frontend.db :as db]
             [frontend.encrypt :as e]
-            [frontend.handler.repo :as repo-handler]
-            [frontend.handler.page :as page-handler]
             [frontend.handler.common :as common-handler]
-            [frontend.handler.route :as route-handler]
             [frontend.handler.export :as export-handler]
-            [frontend.handler.web.nfs :as nfs-handler]
             [frontend.handler.page :as page-handler]
+            [frontend.handler.repo :as repo-handler]
+            [frontend.handler.route :as route-handler]
+            [frontend.handler.web.nfs :as nfs-handler]
             [frontend.modules.shortcut.core :as shortcut]
+            [frontend.state :as state]
+            [frontend.ui :as ui]
             [frontend.util :as util]
-            [frontend.config :as config]
-            [reitit.frontend.easy :as rfe]
             [frontend.version :as version]
-            [frontend.components.commit :as commit]
-            [frontend.components.svg :as svg]
-            [frontend.components.encryption :as encryption]
-            [frontend.context.i18n :as i18n]
-            [clojure.string :as string]
-            [clojure.string :as str]
-            [frontend.modules.shortcut.core :as shortcut]))
+            [reitit.frontend.easy :as rfe]
+            [rum.core :as rum]))
 
 (rum/defc add-repo
   [args]
   (if-let [graph-types (get-in args [:query-params :graph-types])]
-    (let [graph-types-s (->> (str/split graph-types #",")
+    (let [graph-types-s (->> (string/split graph-types #",")
                              (mapv keyword))]
       (when (seq graph-types-s)
         (widgets/add-graph :graph-types graph-types-s)))
@@ -156,7 +153,7 @@
               [:div.flex.flex-row.justify-between.align-items.mt-2
                (ui/button (t :git/push)
                  :on-click (fn [] (state/set-modal! commit/add-commit-message)))
-               (if pushing? svg/loading)]]
+               (when pushing? svg/loading)]]
              [:hr]
              [:div
               (when-not (string/blank? last-pulled-at)
@@ -165,7 +162,7 @@
               [:div.flex.flex-row.justify-between.align-items
                (ui/button (t :git/pull)
                  :on-click (fn [] (repo-handler/pull-current-repo)))
-               (if pulling? svg/loading)]
+               (when pulling? svg/loading)]
               [:a.mt-5.text-sm.opacity-50.block
                {:on-click (fn []
                             (export-handler/export-repo-as-zip! repo))}

+ 15 - 20
src/main/frontend/components/right_sidebar.cljs

@@ -1,28 +1,23 @@
 (ns frontend.components.right-sidebar
-  (:require [rum.core :as rum]
-            [frontend.ui :as ui]
-            [frontend.components.svg :as svg]
-            [frontend.components.page :as page]
+  (:require [cljs-bean.core :as bean]
+            [clojure.string :as string]
             [frontend.components.block :as block]
-            [frontend.extensions.graph :as graph]
             [frontend.components.onboarding :as onboarding]
-            [frontend.handler.route :as route-handler]
-            [frontend.handler.page :as page-handler]
-            [frontend.handler.graph :as graph-handler]
-            [frontend.state :as state]
+            [frontend.components.page :as page]
+            [frontend.components.svg :as svg]
+            [frontend.context.i18n :as i18n]
+            [frontend.date :as date]
             [frontend.db :as db]
+            [frontend.db-mixins :as db-mixins]
             [frontend.db.model :as db-model]
-            [frontend.util :as util]
-            [frontend.date :as date]
-            [medley.core :as medley]
-            [clojure.string :as string]
             [frontend.extensions.slide :as slide]
-            [cljs-bean.core :as bean]
+            [frontend.state :as state]
+            [frontend.ui :as ui]
+            [frontend.util :as util]
             [goog.object :as gobj]
-            [frontend.context.i18n :as i18n]
+            [medley.core :as medley]
             [reitit.frontend.easy :as rfe]
-            [frontend.db-mixins :as db-mixins]
-            [frontend.config :as config]))
+            [rum.core :as rum]))
 
 (rum/defc toggle
   []
@@ -50,7 +45,7 @@
                    (remove nil?)
                    (remove #(= (string/lower-case %) "contents")))]
     [:div.recent-pages.text-sm.flex-col.flex.ml-3.mt-2
-     (if (seq pages)
+     (when (seq pages)
        (for [page pages]
          [:a.page-ref.mb-1 {:key      (str "recent-page-" page)
                    :href     (rfe/href :page {:name page})
@@ -189,7 +184,7 @@
                (get-in match [:path-params :path])
 
                (date/journal-name))]
-    (if page
+    (when page
       (string/lower-case page))))
 
 (defn get-current-page
@@ -242,7 +237,7 @@
     (rum/with-context [[t] i18n/*tongue-context*]
       [:div#right-sidebar.cp__right-sidebar.h-screen
        {:class (if sidebar-open? "open" "closed")}
-       (if sidebar-open?
+       (when sidebar-open?
          [:div.cp__right-sidebar-inner.flex.flex-col.h-full#right-sidebar-container
 
           (sidebar-resizer)

+ 3 - 2
src/main/frontend/components/search.cljs

@@ -121,8 +121,8 @@
         n (count content)
         [before after] (string/split content q-pattern 2)
         [before after] (if (>= n 64)
-                         [(if before (apply str (take-last 48 before)))
-                          (if after (apply str (take 48 after)))]
+                         [(when before (apply str (take-last 48 before)))
+                          (when after (apply str (take 48 after)))]
                          [before after])]
     [:p
      (when-not (string/blank? before)
@@ -172,6 +172,7 @@
                  :left 32
                  :height 400
                  :width 700
+                 :min-width 250
                  :max-width "100%"
                  :overflow "auto"})
         :class (if all? "search-all" "absolute")}

+ 3 - 3
src/main/frontend/components/settings.cljs

@@ -193,7 +193,7 @@
         (fn []
           (state/set-state! [:electron/user-cfgs :spell-check] (not enabled?))
           (p/then (ipc/ipc "userAppCfgs" :spell-check (not enabled?))
-                  #(if (js/confirm (t :relaunch-confirm-to-work))
+                  #(when (js/confirm (t :relaunch-confirm-to-work))
                      (js/logseq.api.relaunch))))
         true)]]]))
 
@@ -532,7 +532,7 @@
             (let [mode (not developer-mode?)]
               (state/set-developer-mode! mode)
               (and mode (util/electron?)
-                   (if (js/confirm (t :developer-mode-alert))
+                   (when (js/confirm (t :developer-mode-alert))
                      (js/logseq.api.relaunch)))))
           [:div.text-sm.opacity-50 (t :settings-page/developer-mode-desc)]))
 
@@ -665,7 +665,7 @@
                                        (notification/show! "Custom CORS proxy updated successfully!" :success)))
                     :on-key-press  (fn [event]
                                      (let [k (gobj/get event "key")]
-                                       (if (= "Enter" k)
+                                       (when (= "Enter" k)
                                          (when-let [server (util/evalue event)]
                                            (user-handler/set-cors! server)
                                            (notification/show! "Custom CORS proxy updated successfully!" :success)))))}]]]]

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

@@ -1,6 +1,7 @@
 (ns frontend.components.sidebar
   (:require [cljs-drag-n-drop.core :as dnd]
             [clojure.string :as string]
+            [frontend.components.command-palette :as command-palette]
             [frontend.components.header :as header]
             [frontend.components.journal :as journal]
             [frontend.components.repo :as repo]
@@ -8,15 +9,12 @@
             [frontend.components.settings :as settings]
             [frontend.components.theme :as theme]
             [frontend.components.widgets :as widgets]
-            [frontend.components.command-palette :as command-palette]
             [frontend.config :as config]
             [frontend.context.i18n :as i18n]
             [frontend.db :as db]
             [frontend.db-mixins :as db-mixins]
             [frontend.handler.editor :as editor-handler]
-            [frontend.handler.repo :as repo-handler]
             [frontend.handler.route :as route-handler]
-            [frontend.handler.web.nfs :as nfs-handler]
             [frontend.mixins :as mixins]
             [frontend.modules.shortcut.data-helper :as shortcut-dh]
             [frontend.state :as state]
@@ -81,7 +79,7 @@
               "translate-x-0"
               "-translate-x-full")
      :style {:max-width "86vw"}}
-    (if @open?
+    (when @open?
       [:div.absolute.top-0.right-0.p-1
        [:button#close-left-bar.close-panel-btn.flex.items-center.justify-center.h-12.w-12.rounded-full.focus:outline-none.focus:bg-gray-600
         {:on-click close-fn}

+ 6 - 7
src/main/frontend/components/theme.cljs

@@ -1,12 +1,11 @@
 (ns frontend.components.theme
-  (:require [rum.core :as rum]
-            [frontend.extensions.pdf.highlights :as pdf]
-            [frontend.util :as util]
-            [frontend.ui :as ui]
-            [frontend.handler.ui :as ui-handler]
-            [frontend.handler.route :as route-handler]
+  (:require [frontend.extensions.pdf.highlights :as pdf]
             [frontend.handler.plugin :as plugin-handler]
-            [frontend.components.svg :as svg]))
+            [frontend.handler.route :as route-handler]
+            [frontend.handler.ui :as ui-handler]
+            [frontend.ui :as ui]
+            [frontend.util :as util]
+            [rum.core :as rum]))
 
 (rum/defc container
   [{:keys [route theme on-click current-repo nfs-granted? db-restoring? sidebar-open? system-theme?] :as props} child]

+ 8 - 9
src/main/frontend/components/widgets.cljs

@@ -1,17 +1,16 @@
 (ns frontend.components.widgets
-  (:require [rum.core :as rum]
-            [frontend.util :as util]
-            [frontend.handler.user :as user-handler]
-            [frontend.handler.repo :as repo-handler]
+  (:require [clojure.string :as string]
+            [frontend.context.i18n :as i18n]
             [frontend.handler.notification :as notification]
-            [frontend.handler.web.nfs :as nfs]
             [frontend.handler.page :as page-handler]
+            [frontend.handler.repo :as repo-handler]
+            [frontend.handler.user :as user-handler]
+            [frontend.handler.web.nfs :as nfs]
+            [frontend.modules.shortcut.core :as shortcut]
             [frontend.state :as state]
-            [clojure.string :as string]
             [frontend.ui :as ui]
-            [frontend.context.i18n :as i18n]
-            [frontend.handler.web.nfs :as nfs]
-            [frontend.modules.shortcut.core :as shortcut]))
+            [frontend.util :as util]
+            [rum.core :as rum]))
 
 (rum/defc choose-preferred-format
   []

+ 1 - 2
src/main/frontend/db/migrate.cljs

@@ -1,6 +1,5 @@
 (ns frontend.db.migrate
-  (:require [clojure.walk :as walk]
-            [datascript.core :as d]
+  (:require [datascript.core :as d]
             [frontend.db-schema :as db-schema]
             [frontend.state :as state]))
 

+ 2 - 4
src/main/frontend/db/outliner.cljs

@@ -1,10 +1,8 @@
 (ns frontend.db.outliner
   (:require [datascript.core :as d]
             [frontend.db :as db]
-            [frontend.db.react :as react]
-            [frontend.util :as util]
-            [frontend.debug :as debug]
-            [frontend.db.utils :as db-utils]))
+            [frontend.db.utils :as db-utils]
+            [frontend.util :as util]))
 
 (defn get-by-id
   [conn id]

+ 13 - 15
src/main/frontend/db/query_dsl.cljs

@@ -1,22 +1,20 @@
 (ns frontend.db.query-dsl
-  (:require [cljs.reader :as reader]
-            [frontend.db.utils :as db-utils]
-            [datascript.core :as d]
-            [lambdaisland.glogi :as log]
-            [clojure.string :as string]
-            [frontend.text :as text]
-            [frontend.db.query-react :as react]
-            [frontend.db.model :as model]
-            [frontend.date :as date]
+  (:require [cljs-time.coerce :as tc]
             [cljs-time.core :as t]
-            [cljs-time.coerce :as tc]
-            [frontend.util :as util]
-            [medley.core :as medley]
-            [clojure.walk :as walk]
+            [cljs.reader :as reader]
             [clojure.core]
             [clojure.set :as set]
+            [clojure.string :as string]
+            [clojure.walk :as walk]
+            [frontend.date :as date]
+            [frontend.db.model :as model]
+            [frontend.db.query-react :as react]
+            [frontend.db.utils :as db-utils]
             [frontend.template :as template]
-            [frontend.util.property :as property]))
+            [frontend.text :as text]
+            [frontend.util :as util]
+            [frontend.util.property :as property]
+            [lambdaisland.glogi :as log]))
 
 
 ;; Query fields:
@@ -471,7 +469,7 @@
                               {:query query})
                              (merge
                               query-opts
-                              (if sort-by
+                              (when sort-by
                                 {:transform-fn sort-by}))))))))
 
 (comment

+ 9 - 12
src/main/frontend/db/query_react.cljs

@@ -1,21 +1,18 @@
 (ns frontend.db.query-react
   "Custom queries."
-  (:require [datascript.core :as d]
-            [frontend.db.utils :as db-utils :refer [date->int]]
+  (:require [cljs-time.core :as t]
+            [clojure.string :as string]
+            [clojure.walk :as walk]
+            [frontend.config :as config]
             [frontend.db.model :as model]
+            [frontend.db.react :as react]
+            [frontend.db.utils :as db-utils :refer [date->int]]
             [frontend.debug :as debug]
-            [cljs-time.core :as t]
-            [cljs-time.coerce :as tc]
-            [frontend.state :as state]
-            [clojure.string :as string]
-            [cljs.reader :as reader]
             [frontend.extensions.sci :as sci]
-            [lambdaisland.glogi :as log]
-            [frontend.util :as util]
-            [frontend.db.react :as react]
+            [frontend.state :as state]
             [frontend.text :as text]
-            [frontend.config :as config]
-            [clojure.walk :as walk]))
+            [frontend.util :as util]
+            [lambdaisland.glogi :as log]))
 
 (defn- resolve-input
   [input]

+ 1 - 1
src/main/frontend/db/react.cljs

@@ -256,7 +256,7 @@
                             (distinct))
               refed-pages (map
                            (fn [[k page-id]]
-                             (if (= k :block/refed-blocks)
+                             (when (= k :block/refed-blocks)
                                [:page/ref-pages page-id]))
                             related-keys)
               all-refed-blocks (get-current-repo-refs-keys)

+ 4 - 5
src/main/frontend/extensions/calc.cljc

@@ -1,12 +1,11 @@
 (ns frontend.extensions.calc
   (:refer-clojure :exclude [eval])
-  (:require #?(:clj [clojure.java.io :as io])
-            #?(:cljs [shadow.resource :as rc])
-            #?(:cljs [rum.core :as rum])
+  (:require [clojure.edn :as edn]
             [clojure.string :as str]
-            [clojure.edn :as edn]
-            [clojure.test :as test :refer [deftest testing is are]]
             [frontend.util :as util]
+            #?(:clj [clojure.java.io :as io])
+            #?(:cljs [shadow.resource :as rc])
+            #?(:cljs [rum.core :as rum])
             #?(:clj [instaparse.core :as insta]
                :cljs [instaparse.core :as insta :refer-macros [defparser]])))
 

+ 25 - 26
src/main/frontend/extensions/code.cljs

@@ -1,55 +1,54 @@
 (ns frontend.extensions.code
-  (:require [rum.core :as rum]
-            [frontend.util :as util]
-            [goog.dom :as gdom]
-            [goog.object :as gobj]
-            [frontend.db :as db]
-            [frontend.extensions.calc :as calc]
-            [frontend.commands :as commands]
-            [frontend.state :as state]
-            [frontend.handler.editor :as editor-handler]
-            [frontend.handler.file :as file-handler]
-            [clojure.string :as string]
-            [dommy.core :as dom]
-            [frontend.utf8 :as utf8]
+  (:require [clojure.string :as string]
             ["codemirror" :as cm]
-            ["codemirror/addon/edit/matchbrackets"]
             ["codemirror/addon/edit/closebrackets"]
+            ["codemirror/addon/edit/matchbrackets"]
             ["codemirror/addon/selection/active-line"]
-            ["codemirror/mode/clojure/clojure"]
-            ["codemirror/mode/powershell/powershell"]
-            ["codemirror/mode/javascript/javascript"]
-            ["codemirror/mode/jsx/jsx"]
             ["codemirror/mode/clike/clike"]
-            ["codemirror/mode/vue/vue"]
-            ["codemirror/mode/commonlisp/commonlisp"]
+            ["codemirror/mode/clojure/clojure"]
             ["codemirror/mode/coffeescript/coffeescript"]
+            ["codemirror/mode/commonlisp/commonlisp"]
             ["codemirror/mode/css/css"]
-            ["codemirror/mode/sass/sass"]
             ["codemirror/mode/dart/dart"]
             ["codemirror/mode/dockerfile/dockerfile"]
             ["codemirror/mode/elm/elm"]
             ["codemirror/mode/erlang/erlang"]
             ["codemirror/mode/go/go"]
             ["codemirror/mode/haskell/haskell"]
+            ["codemirror/mode/javascript/javascript"]
+            ["codemirror/mode/jsx/jsx"]
+            ["codemirror/mode/julia/julia"]
             ["codemirror/mode/lua/lua"]
             ["codemirror/mode/mathematica/mathematica"]
             ["codemirror/mode/perl/perl"]
             ["codemirror/mode/php/php"]
+            ["codemirror/mode/powershell/powershell"]
+            ["codemirror/mode/protobuf/protobuf"]
             ["codemirror/mode/python/python"]
+            ["codemirror/mode/r/r"]
             ["codemirror/mode/ruby/ruby"]
             ["codemirror/mode/rust/rust"]
+            ["codemirror/mode/sass/sass"]
             ["codemirror/mode/scheme/scheme"]
             ["codemirror/mode/shell/shell"]
             ["codemirror/mode/smalltalk/smalltalk"]
+            ["codemirror/mode/sparql/sparql"]
             ["codemirror/mode/sql/sql"]
             ["codemirror/mode/swift/swift"]
-            ["codemirror/mode/xml/xml"]
-            ["codemirror/mode/sparql/sparql"]
             ["codemirror/mode/turtle/turtle"]
-            ["codemirror/mode/r/r"]
-            ["codemirror/mode/julia/julia"]
-            ["codemirror/mode/protobuf/protobuf"]))
+            ["codemirror/mode/vue/vue"]
+            ["codemirror/mode/xml/xml"]
+            [dommy.core :as dom]
+            [frontend.commands :as commands]
+            [frontend.db :as db]
+            [frontend.extensions.calc :as calc]
+            [frontend.handler.editor :as editor-handler]
+            [frontend.handler.file :as file-handler]
+            [frontend.state :as state]
+            [frontend.util :as util]
+            [goog.dom :as gdom]
+            [goog.object :as gobj]
+            [rum.core :as rum]))
 
 ;; codemirror
 

+ 8 - 18
src/main/frontend/extensions/excalidraw.cljs

@@ -1,27 +1,17 @@
 (ns frontend.extensions.excalidraw
-  (:require [rum.core :as rum]
-            [goog.object :as gobj]
-            [frontend.rum :as r]
-            [frontend.util :as util :refer [profile]]
-            [frontend.mixins :as mixins]
-            [frontend.storage :as storage]
-            [frontend.components.svg :as svg]
+  (:require ["@excalidraw/excalidraw" :as Excalidraw]
             [cljs-bean.core :as bean]
-            [dommy.core :as d]
             [clojure.string :as string]
-            [frontend.handler.notification :as notification]
+            [frontend.config :as config]
             [frontend.handler.draw :as draw]
-            [frontend.handler.file :as file]
+            [frontend.handler.notification :as notification]
             [frontend.handler.ui :as ui-handler]
-            [frontend.ui :as ui]
-            [frontend.loader :as loader]
-            [frontend.config :as config]
+            [frontend.rum :as r]
             [frontend.state :as state]
-            [frontend.search :as search]
-            [frontend.components.repo :as repo]
-            [promesa.core :as p]
-            [reitit.frontend.easy :as rfe]
-            ["@excalidraw/excalidraw" :as Excalidraw]))
+            [frontend.ui :as ui]
+            [frontend.util :as util]
+            [goog.object :as gobj]
+            [rum.core :as rum]))
 
 (def excalidraw (r/adapt-class (gobj/get Excalidraw "default")))
 

+ 5 - 14
src/main/frontend/extensions/graph.cljs

@@ -1,20 +1,11 @@
 (ns frontend.extensions.graph
-  (:require [rum.core :as rum]
-            [frontend.rum :as r]
-            [frontend.ui :as ui]
-            [shadow.lazy :as lazy]
-            [frontend.handler.route :as route-handler]
-            [clojure.string :as string]
-            [cljs-bean.core :as bean]
-            [goog.object :as gobj]
-            [frontend.state :as state]
-            [frontend.db :as db]
-            [promesa.core :as p]
-            [clojure.set :as set]
+  (:require [cljs-bean.core :as bean]
             [cljs-bean.core :as bean]
+            [clojure.string :as string]
             [frontend.extensions.graph.pixi :as pixi]
-            [frontend.util :as util :refer [profile]]
-            [cljs-bean.core :as bean]))
+            [frontend.handler.route :as route-handler]
+            [goog.object :as gobj]
+            [rum.core :as rum]))
 
 (defn- highlight-node!
   [^js graph node]

+ 5 - 28
src/main/frontend/extensions/graph/pixi.cljs

@@ -1,34 +1,11 @@
 (ns frontend.extensions.graph.pixi
-  (:require [rum.core :as rum]
-            [frontend.rum :as r]
-            [frontend.ui :as ui]
-            [shadow.lazy :as lazy]
-            [frontend.handler.route :as route-handler]
-            [frontend.util :as util
-             :refer            [profile]]
-            [clojure.string :as string]
-            [cljs-bean.core :as bean]
+  (:require [cljs-bean.core :as bean]
+            ["d3-force"
+             :refer [forceCenter forceCollide forceLink forceManyBody forceSimulation forceX forceY]
+             :as    force]
             [goog.object :as gobj]
-            [frontend.state :as state]
-            [frontend.db :as db]
-            [promesa.core :as p]
-            [clojure.set :as set]
-            [cljs-bean.core :as bean]
-            ["pixi-graph-fork" :as Pixi-Graph]
-            ["@pixi/utils" :as pixi-utils]
             ["graphology" :as graphology]
-            ["d3-force"
-             :refer [forceSimulation
-                     forceManyBody
-                     forceCenter
-                     forceLink
-                     forceCollide
-                     forceRadial
-                     forceX
-                     forceY
-                     SimulationLinkDatum
-                     SimulationNodeDatum]
-             :as    force]))
+            ["pixi-graph-fork" :as Pixi-Graph]))
 
 (def Graph (gobj/get graphology "Graph"))
 

+ 8 - 10
src/main/frontend/extensions/pdf/assets.cljs

@@ -1,20 +1,18 @@
 (ns frontend.extensions.pdf.assets
-  (:require [rum.core :as rum]
-            [frontend.util :as util]
+  (:require [cljs.reader :as reader]
+            [clojure.string :as string]
+            [frontend.config :as config]
             [frontend.db.model :as db-model]
             [frontend.db.utils :as db-utils]
-            [frontend.handler.page :as page-handler]
+            [frontend.fs :as fs]
             [frontend.handler.editor :as editor-handler]
+            [frontend.handler.page :as page-handler]
             [frontend.state :as state]
-            [frontend.config :as config]
-            [frontend.fs :as fs]
-            [frontend.components.svg :as svg]
-            [reitit.frontend.easy :as rfe]
+            [frontend.util :as util]
             [medley.core :as medley]
-            [cljs.reader :as reader]
             [promesa.core :as p]
-            [clojure.string :as string]
-            [cljs-bean.core :as bean]))
+            [reitit.frontend.easy :as rfe]
+            [rum.core :as rum]))
 
 (defonce *asset-uploading? (atom false))
 

+ 19 - 22
src/main/frontend/extensions/pdf/highlights.cljs

@@ -1,22 +1,20 @@
 (ns frontend.extensions.pdf.highlights
-  (:require [rum.core :as rum]
-            [promesa.core :as p]
-            [cljs-bean.core :as bean]
-            [medley.core :as medley]
+  (:require [cljs-bean.core :as bean]
+            [clojure.string :as string]
+            [frontend.components.svg :as svg]
+            [frontend.config :as config]
             [frontend.context.i18n :as i18n]
-            [frontend.handler.notification :as notification]
-            [frontend.extensions.pdf.utils :as pdf-utils]
             [frontend.extensions.pdf.assets :as pdf-assets]
-            [frontend.util :as front-utils]
+            [frontend.extensions.pdf.utils :as pdf-utils]
+            [frontend.handler.notification :as notification]
+            [frontend.rum :refer [use-atom]]
             [frontend.state :as state]
-            [frontend.config :as config]
             [frontend.storage :as storage]
-            [frontend.components.svg :as svg]
-            [frontend.rum :refer [use-atom]]
+            [frontend.ui :as ui]
+            [frontend.util :as front-utils]
             [medley.core :as medley]
-            [frontend.fs :as fs]
-            [clojure.string :as string]
-            [frontend.ui :as ui]))
+            [promesa.core :as p]
+            [rum.core :as rum]))
 
 (defn dd [& args]
   (apply js/console.debug args))
@@ -31,11 +29,10 @@
   < rum/static rum/reactive
   [state ^js viewer]
   (when viewer
-    (if-let [ref-hl (state/sub :pdf/ref-highlight)]
-      (do
-        ;; delay handle: aim to fix page blink
-        (js/setTimeout #(pdf-utils/scroll-to-highlight viewer ref-hl) 100)
-        (js/setTimeout #(state/set-state! :pdf/ref-highlight nil) 1000)))))
+    (when-let [ref-hl (state/sub :pdf/ref-highlight)]
+      ;; delay handle: aim to fix page blink
+      (js/setTimeout #(pdf-utils/scroll-to-highlight viewer ref-hl) 100)
+      (js/setTimeout #(state/set-state! :pdf/ref-highlight nil) 1000))))
 
 (rum/defc pdf-page-finder < rum/static
   [^js viewer]
@@ -598,7 +595,7 @@
     [:div.extensions__pdf-highlights-cnt
 
      ;; hl context tip menu
-     (if (:highlight tip-state)
+     (when (:highlight tip-state)
        (js/ReactDOM.createPortal
          (pdf-highlights-ctx-menu
            viewer tip-state
@@ -662,7 +659,7 @@
        (map (fn [it]
               [:button.flex.items-center.justify-center
                {:key it :class it :on-click #(do (select-theme! it) (hide-settings!))}
-               (if (= theme it) (svg/check))])
+               (when (= theme it) (svg/check))])
             ["light", "warm", "dark"])
        ]]]))
 
@@ -816,7 +813,7 @@
          ;; selection
          [:a.button
           {:title    (str "Area highlight (" (if front-utils/mac? "⌘" "Shift") ")")
-           :class    (if area-mode? "is-active")
+           :class    (when area-mode? "is-active")
            :on-click #(set-area-mode! (not area-mode?))}
           (svg/icon-area 18)]
 
@@ -1054,7 +1051,7 @@
       [identity])
 
     [:div#pdf-layout-container.extensions__pdf-container
-     (if (and prepared identity ready)
+     (when (and prepared identity ready)
        (pdf-loader pdf-current))]))
 
 (rum/defc playground-effects

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

@@ -152,7 +152,7 @@
   (let [rge-rects (bean/->clj (.getClientRects r))
         ^js cnt-offset (.getBoundingClientRect page-cnt)]
 
-    (if (seq rge-rects)
+    (when (seq rge-rects)
       (let [rects (for [rect rge-rects]
                     {:top    (- (+ (.-top rect) (.-scrollTop page-cnt)) (.-top cnt-offset))
                      :left   (- (+ (.-left rect) (.-scrollLeft page-cnt)) (.-left cnt-offset))

+ 3 - 3
src/main/frontend/extensions/srs.cljs

@@ -258,7 +258,7 @@
           (when-let [query** (query-dsl/query-wrapper query* true)]
             (react/react-query repo
                                {:query query**}
-                               (if sort-by
+                               (when sort-by
                                  {:transform-fn sort-by}))))))))
 
 (defn- query-scheduled
@@ -413,7 +413,7 @@
             root-block (.-block card)
             root-block-id (:block/uuid root-block)]
         [:div.ls-card
-         {:class (if (or preview? modal?)
+         {:class (when (or preview? modal?)
                    (util/hiccup->class ".flex.flex-col.resize.overflow-y-auto.px-4"))}
          (let [repo (state/get-current-repo)]
            [:div.my-2.opacity-70.hover:opacity-100
@@ -530,7 +530,7 @@
             card-query-block (db/entity [:block/uuid (:block/uuid config)])
             filtered-total (count result)
             modal? (:modal? config)]
-        [:div.flex-1 {:style (if modal? {:height "100%"})}
+        [:div.flex-1 {:style (when modal? {:height "100%"})}
          [:div.flex.flex-row.items-center.justify-between.cards-title
           [:div
            [:span.text-sm [:span.font-bold "🗂️"]

+ 3 - 5
src/main/frontend/extensions/zip.cljs

@@ -1,10 +1,8 @@
 (ns frontend.extensions.zip
-  (:require ["jszip" :as JSZip]
-            ["/frontend/utils" :as utils]
-            [promesa.core :as p]
-            [clojure.string :as string]
+  (:require [clojure.string :as string]
             [frontend.config :as config]
-            [medley.core :as medley]))
+            ["jszip" :as JSZip]
+            [promesa.core :as p]))
 
 (defn make-file [content file-name args]
   (let [blob-content (clj->js [content])

+ 12 - 14
src/main/frontend/extensions/zotero/extractor.cljs

@@ -1,12 +1,10 @@
 (ns frontend.extensions.zotero.extractor
   (:require [clojure.set :refer [rename-keys]]
-            [clojure.string :as str]
             [clojure.string :as string]
             [frontend.date :as date]
             [frontend.extensions.html-parser :as html-parser]
             [frontend.extensions.zotero.schema :as schema]
             [frontend.extensions.zotero.setting :as setting]
-            [frontend.handler.notification :as notification]
             [frontend.util :as util]))
 
 (defn item-type [item] (-> item :data :item-type))
@@ -16,11 +14,11 @@
 (defn citation-key [item]
   (let [extra (-> item :data :extra)
         citation (->> extra
-                      (str/split-lines)
-                      (filterv (fn [s] (str/includes? s "Citation Key: ")))
+                      (string/split-lines)
+                      (filterv (fn [s] (string/includes? s "Citation Key: ")))
                       first)]
     (when citation
-      (str/trim (str/replace citation "Citation Key: " "")))))
+      (string/trim (string/replace citation "Citation Key: " "")))))
 
 (defn title [item] (-> item :data :title))
 
@@ -39,7 +37,7 @@
           (title item))
         citekey (citation-key item)]
     (if (and (setting/setting :prefer-citekey?)
-             (not (str/blank? citekey)))
+             (not (string/blank? citekey)))
       (str (setting/setting :page-insert-prefix) citekey)
       (str (setting/setting :page-insert-prefix) page-title))))
 
@@ -59,9 +57,9 @@
         (->> (-> item :data :tags)
              (mapv (fn [{:keys [tag]}] (string/trim tag)))
              (mapcat #(string/split % #",\s?")))
-        extra-tags (->> (str/split (setting/setting :extra-tags) #",")
-                        (map str/trim)
-                        (remove str/blank?))]
+        extra-tags (->> (string/split (setting/setting :extra-tags) #",")
+                        (map string/trim)
+                        (remove string/blank?))]
     (distinct (concat tags extra-tags))))
 
 (defn date->journal [item]
@@ -73,14 +71,14 @@
 (defn wrap-in-doublequotes [m]
   (->> m
        (map (fn [[k v]]
-              (if (str/includes? (str v) ",")
+              (if (string/includes? (str v) ",")
                 [k (pr-str v)]
                 [k v])))
        (into (array-map))))
 
 (defn skip-newline-properties [m]
   (->> m
-       (remove (fn [[_ v]] (str/includes? (str v) "\n")))
+       (remove (fn [[_ v]] (string/includes? (str v) "\n")))
        (into (array-map))))
 
 (defn markdown-link
@@ -136,7 +134,7 @@
                          (rename-keys {:title :original-title})
                          (assoc :title (page-name item)))]
     (->> data
-         (remove (comp (fn [v] (or (str/blank? v) (empty? v))) second))
+         (remove (comp (fn [v] (or (string/blank? v) (empty? v))) second))
          (into {}))))
 
 (defmethod extract "note"
@@ -160,12 +158,12 @@
        " "
        (zotero-imported-file-macro (item-key item) filename))
       "linked_file"
-      (if (str/starts-with? path "attachments:")
+      (if (string/starts-with? path "attachments:")
         (str
          (markdown-link title (local-link item))
          " "
          (zotero-linked-file-macro path))
-        (let [path (str/replace path " " "%20")]
+        (let [path (string/replace path " " "%20")]
           (if (= content-type "application/pdf")
             (markdown-link title (str "file://" path) true)
             (markdown-link title (str "file://" path)))))

+ 2 - 2
src/main/frontend/format/mldoc.cljs

@@ -183,10 +183,10 @@
                        (assoc :macros macros))
           alias (->> (->vec-concat (:roam_alias properties) (:alias properties))
                      (remove string/blank?))
-          filetags (if-let [org-file-tags (:filetags properties)]
+          filetags (when-let [org-file-tags (:filetags properties)]
                      (->> (string/split org-file-tags ":")
                           (remove string/blank?)))
-          roam-tags (if-let [org-roam-tags (:roam_tags properties)]
+          roam-tags (when-let [org-roam-tags (:roam_tags properties)]
                       (let [pat #"\"(.*?)\"" ;; note: lazy, capturing group
                             quoted (map second (re-seq pat org-roam-tags))
                             rest   (string/replace org-roam-tags pat "")

+ 1 - 3
src/main/frontend/format/mldoc_test.cljs

@@ -1,4 +1,2 @@
 (ns frontend.format.mldoc-test
-  (:require [frontend.format.mldoc]
-            [clojure.string :as string]
-            [cljs.test :refer [deftest are is testing]]))
+  (:require [frontend.format.mldoc]))

+ 0 - 1
src/main/frontend/fs/bfs.cljs

@@ -1,7 +1,6 @@
 (ns frontend.fs.bfs
   (:require [frontend.fs.protocol :as protocol]
             [frontend.util :as util]
-            [clojure.string :as string]
             [promesa.core :as p]))
 
 (defrecord Bfs []

+ 1 - 1
src/main/frontend/fs/nfs.cljs

@@ -140,7 +140,7 @@
                        (string/join "/"))
           sub-dir-handle-path (str "handle/"
                                    (subs dir 1)
-                                   (if sub-dir
+                                   (when sub-dir
                                      (str "/" sub-dir)))
           handle-path (if (= "/" (last sub-dir-handle-path))
                         (subs sub-dir-handle-path 0 (dec (count sub-dir-handle-path)))

+ 8 - 10
src/main/frontend/fs/node.cljs

@@ -1,17 +1,15 @@
 (ns frontend.fs.node
-  (:require [frontend.fs.protocol :as protocol]
-            [frontend.util :as util]
-            [frontend.db :as db]
-            [clojure.string :as string]
-            [promesa.core :as p]
+  (:require [clojure.string :as string]
             [electron.ipc :as ipc]
-            [cljs-bean.core :as bean]
-            [goog.object :as gobj]
-            [lambdaisland.glogi :as log]
             [frontend.config :as config]
+            [frontend.db :as db]
             [frontend.encrypt :as encrypt]
-            [frontend.handler.notification :as notification]
-            [frontend.state :as state]))
+            [frontend.fs.protocol :as protocol]
+            [frontend.state :as state]
+            [frontend.util :as util]
+            [goog.object :as gobj]
+            [lambdaisland.glogi :as log]
+            [promesa.core :as p]))
 
 (defn concat-path
   [dir path]

+ 6 - 12
src/main/frontend/fs/watcher_handler.cljs

@@ -1,21 +1,15 @@
 (ns frontend.fs.watcher-handler
-  (:require [clojure.core.async :as async]
-            [lambdaisland.glogi :as log]
-            [frontend.handler.file :as file-handler]
-            [frontend.handler.page :as page-handler]
-            [frontend.handler.notification :as notification]
-            [frontend.handler.route :as route-handler]
-            [cljs-time.coerce :as tc]
+  (:require [clojure.string :as string]
             [frontend.config :as config]
             [frontend.db :as db]
-            [frontend.state :as state]
-            [clojure.string :as string]
-            [frontend.encrypt :as encrypt]
             [frontend.db.model :as model]
+            [frontend.encrypt :as encrypt]
             [frontend.handler.editor :as editor]
             [frontend.handler.extract :as extract]
-            [promesa.core :as p]
-            [electron.ipc :as ipc]))
+            [frontend.handler.file :as file-handler]
+            [lambdaisland.glogi :as log]
+            [electron.ipc :as ipc]
+            [promesa.core :as p]))
 
 (defn- set-missing-block-ids!
   [content]

+ 6 - 8
src/main/frontend/handler.cljs

@@ -7,6 +7,8 @@
             [frontend.config :as config]
             [frontend.db :as db]
             [frontend.db-schema :as db-schema]
+            [frontend.error :as error]
+            [frontend.handler.command-palette :as command-palette]
             [frontend.handler.common :as common-handler]
             [frontend.handler.events :as events]
             [frontend.handler.file :as file-handler]
@@ -14,7 +16,6 @@
             [frontend.handler.page :as page-handler]
             [frontend.handler.repo :as repo-handler]
             [frontend.handler.ui :as ui-handler]
-            [frontend.handler.command-palette :as command-palette]
             [frontend.idb :as idb]
             [frontend.modules.instrumentation.core :as instrument]
             [frontend.modules.shortcut.core :as shortcut]
@@ -22,15 +23,12 @@
             [frontend.search.db :as search-db]
             [frontend.state :as state]
             [frontend.storage :as storage]
+            [frontend.ui :as ui]
             [frontend.util :as util]
-            [frontend.version :as version]
+            [frontend.util.pool :as pool]
             [goog.object :as gobj]
             [lambdaisland.glogi :as log]
-            [promesa.core :as p]
-            [frontend.ui :as ui]
-            [frontend.error :as error]
-            [frontend.util.pool :as pool]
-            [electron.listener :as electron-listener]))
+            [promesa.core :as p]))
 
 (defn set-global-error-notification!
   []
@@ -223,7 +221,7 @@
                                              (ui/button "YES"
                                                :on-click (fn []
                                                            (pool/terminate-parser-pool!)
-                                                           (p/let [_ (electron-listener/persist-dbs!)]
+                                                           (p/let [_ (el/persist-dbs!)]
                                                              (reset! triggered? true)
                                                              (js/window.location.reload))))]])
                          (reset! triggered? false)

+ 2 - 14
src/main/frontend/handler/block.cljs

@@ -1,20 +1,8 @@
 (ns frontend.handler.block
-  (:require [frontend.util :as util]
-            [frontend.util.property :as property]
+  (:require [clojure.set :as set]
             [clojure.walk :as walk]
             [frontend.db :as db]
-            [frontend.state :as state]
-            [frontend.format.mldoc :as mldoc]
-            [frontend.date :as date]
-            [frontend.config :as config]
-            [datascript.core :as d]
-            [clojure.set :as set]
-            [medley.core :as medley]
-            [frontend.format.block :as block]
-            [frontend.debug :as debug]
-            [clojure.string :as string]
-            [frontend.text :as text]
-            [frontend.handler.common :as common-handler]))
+            [frontend.format.block :as block]))
 
 (defn get-block-ids
   [block]

+ 14 - 16
src/main/frontend/handler/common.cljs

@@ -1,24 +1,22 @@
 (ns frontend.handler.common
-  (:require [goog.object :as gobj]
-            [frontend.state :as state]
-            [cljs-bean.core :as bean]
-            [promesa.core :as p]
-            [frontend.util :as util]
-            [frontend.util.property :as property]
-            [frontend.git :as git]
-            [frontend.db :as db]
-            [frontend.encrypt :as e]
-            [lambdaisland.glogi :as log]
-            [cljs.reader :as reader]
-            [frontend.spec :as spec]
+  (:require [cljs-bean.core :as bean]
             [cljs-time.core :as t]
             [cljs-time.format :as tf]
+            [cljs.reader :as reader]
+            [clojure.string :as string]
+            [dommy.core :as d]
             [frontend.config :as config]
-            ["ignore" :as Ignore]
-            ["/frontend/utils" :as utils]
             [frontend.date :as date]
-            [clojure.string :as string]
-            [dommy.core :as d]))
+            [frontend.db :as db]
+            [frontend.git :as git]
+            [frontend.spec :as spec]
+            [frontend.state :as state]
+            [frontend.util :as util]
+            [frontend.util.property :as property]
+            [goog.object :as gobj]
+            ["ignore" :as Ignore]
+            [lambdaisland.glogi :as log]
+            [promesa.core :as p]))
 
 (defn get-ref
   [repo-url]

+ 3 - 5
src/main/frontend/handler/dnd.cljs

@@ -1,11 +1,9 @@
 (ns frontend.handler.dnd
-  (:require [frontend.state :as state]
-            [frontend.db :as db]
+  (:require [frontend.db :as db]
+            [frontend.handler.editor :as editor-handler]
             [frontend.modules.outliner.core :as outliner-core]
             [frontend.modules.outliner.tree :as tree]
-            [lambdaisland.glogi :as log]
-            [frontend.debug :as debug]
-            [frontend.handler.editor :as editor-handler]
+            [frontend.state :as state]
             [frontend.util :as util]))
 
 

+ 6 - 6
src/main/frontend/handler/draw.cljs

@@ -1,13 +1,13 @@
 (ns frontend.handler.draw
   (:refer-clojure :exclude [load-file])
-  (:require [frontend.util :as util :refer [profile]]
-            [frontend.fs :as fs]
-            [promesa.core :as p]
-            [frontend.state :as state]
+  (:require [frontend.config :as config]
+            [frontend.date :as date]
             [frontend.db :as db]
+            [frontend.fs :as fs]
             [frontend.handler.file :as file-handler]
-            [frontend.date :as date]
-            [frontend.config :as config]))
+            [frontend.state :as state]
+            [frontend.util :as util]
+            [promesa.core :as p]))
 
 (defn create-draws-directory!
   [repo]

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

@@ -788,6 +788,7 @@
                            (reduce (fn [content [old new]]
                                      (string/replace content old new))
                                    content))
+          content (string/replace-first content "DOING" "TODO")
           content (clock/clock-out format content)
           content (drawer/insert-drawer
                    format content "logbook"
@@ -2809,7 +2810,7 @@
                                                  existed-file-path)
                              has-file-path? (not (string/blank? existed-file-path))
                              has-image? (js/window.apis.isClipboardHasImage)]
-                         (if (or has-image? has-file-path?)
+                         (when (or has-image? has-file-path?)
                            [:asset (js/File. #js[] (if has-file-path? existed-file-path "image.png"))]))
 
                        (when (and items (.-length items))

+ 4 - 6
src/main/frontend/handler/editor/keyboards.cljs

@@ -1,11 +1,9 @@
 (ns frontend.handler.editor.keyboards
-  (:require [frontend.state :as state]
-            [frontend.util :as util]
+  (:require [dommy.core :as d]
             [frontend.handler.editor :as editor-handler]
-            [dommy.core :as d]
-            [goog.dom :as gdom]
-            [goog.object :as gobj]
-            [frontend.mixins :as mixins]))
+            [frontend.mixins :as mixins]
+            [frontend.state :as state]
+            [goog.dom :as gdom]))
 
 ;; TODO: don't depend on handler.editor
 

+ 3 - 10
src/main/frontend/handler/editor/lifecycle.cljs

@@ -1,15 +1,8 @@
 (ns frontend.handler.editor.lifecycle
-  (:require [frontend.state :as state]
-            [goog.dom :as gdom]
-            [goog.object :as gobj]
-            [clojure.string :as string]
+  (:require [frontend.handler.editor :as editor-handler :refer [get-state]]
             [frontend.handler.editor.keyboards :as keyboards-handler]
-            [frontend.handler.page :as page-handler]
-            [frontend.handler.editor :as editor-handler :refer [get-state]]
-            [frontend.handler.notification :as notification]
-            [frontend.db :as db]
-            [frontend.date :as date]
-            [promesa.core :as p]))
+            [frontend.state :as state]
+            [goog.dom :as gdom]))
 
 (defn did-mount!
   [state]

+ 18 - 18
src/main/frontend/handler/events.cljs

@@ -1,28 +1,28 @@
 (ns frontend.handler.events
   (:refer-clojure :exclude [run!])
-  (:require [frontend.state :as state]
-            [clojure.core.async :as async]
-            [frontend.spec :as spec]
-            [frontend.ui :as ui]
-            [frontend.util :as util :refer [profile]]
-            [frontend.config :as config]
-            [frontend.handler.notification :as notification]
-            [frontend.handler.common :as common-handler]
-            [frontend.handler.editor :as editor-handler]
-            [frontend.handler.page :as page-handler]
+  (:require [clojure.core.async :as async]
+            [clojure.set :as set]
+            [datascript.core :as d]
+            [frontend.components.diff :as diff]
             [frontend.components.encryption :as encryption]
-            [frontend.components.shell :as shell]
             [frontend.components.git :as git-component]
-            [frontend.components.diff :as diff]
-            [frontend.fs.nfs :as nfs]
+            [frontend.components.shell :as shell]
+            [frontend.config :as config]
+            [frontend.db :as db]
+            [frontend.db-schema :as db-schema]
             [frontend.db.conn :as conn]
             [frontend.extensions.srs :as srs]
-            [frontend.db-schema :as db-schema]
-            [frontend.db :as db]
-            [datascript.core :as d]
-            ["semver" :as semver]
-            [clojure.set :as set]
+            [frontend.fs.nfs :as nfs]
+            [frontend.handler.common :as common-handler]
+            [frontend.handler.editor :as editor-handler]
+            [frontend.handler.notification :as notification]
+            [frontend.handler.page :as page-handler]
+            [frontend.spec :as spec]
+            [frontend.state :as state]
+            [frontend.ui :as ui]
+            [frontend.util :as util]
             [rum.core :as rum]
+            ["semver" :as semver]
             [clojure.string :as string]))
 
 ;; TODO: should we move all events here?

+ 1 - 3
src/main/frontend/handler/export.cljs

@@ -1,6 +1,5 @@
 (ns frontend.handler.export
-  (:require [cljs-bean.core :as bean]
-            [cljs.pprint :as pprint]
+  (:require [cljs.pprint :as pprint]
             [clojure.set :as s]
             [clojure.string :as string]
             [clojure.walk :as walk]
@@ -11,7 +10,6 @@
             [frontend.external.roam-export :as roam-export]
             [frontend.format :as f]
             [frontend.format.protocol :as fp]
-            [frontend.handler.common :as common-handler]
             [frontend.handler.file :as file-handler]
             [frontend.modules.file.core :as outliner-file]
             [frontend.modules.outliner.tree :as outliner-tree]

+ 13 - 15
src/main/frontend/handler/extract.cljs

@@ -1,23 +1,21 @@
 (ns frontend.handler.extract
   "Extract helper."
-  (:require [frontend.util :as util]
-            [frontend.db :as db]
-            [lambdaisland.glogi :as log]
+  (:require [cljs-time.coerce :as tc]
+            [cljs-time.core :as t]
             [clojure.set :as set]
-            [frontend.utf8 :as utf8]
-            [frontend.date :as date]
-            [frontend.text :as text]
-            [frontend.util.property :as property]
             [clojure.string :as string]
-            [frontend.format.mldoc :as mldoc]
-            [frontend.format.block :as block]
-            [frontend.format :as format]
-            [cljs-time.core :as t]
-            [cljs-time.coerce :as tc]
-            [medley.core :as medley]
             [clojure.walk :as walk]
-            [frontend.state :as state]
             [frontend.config :as config]
+            [frontend.db :as db]
+            [frontend.format :as format]
+            [frontend.format.block :as block]
+            [frontend.format.mldoc :as mldoc]
+            [frontend.state :as state]
+            [frontend.text :as text]
+            [frontend.utf8 :as utf8]
+            [frontend.util :as util]
+            [frontend.util.property :as property]
+            [lambdaisland.glogi :as log]
             [promesa.core :as p]))
 
 (defn- extract-page-list
@@ -102,7 +100,7 @@
                                                     (conj
                                                      (remove #{alias} aliases)
                                                      page))
-                                           aliases (if (seq aliases)
+                                           aliases (when (seq aliases)
                                                      (map
                                                        (fn [alias]
                                                          {:block/name (string/lower-case alias)})

+ 9 - 9
src/main/frontend/handler/git.cljs

@@ -1,16 +1,16 @@
 (ns frontend.handler.git
-  (:require [frontend.util :as util :refer [profile]]
-            [promesa.core :as p]
-            [lambdaisland.glogi :as log]
-            [frontend.state :as state]
+  (:require [cljs-time.local :as tl]
+            [frontend.config :as config]
+            [frontend.date :as date]
             [frontend.db :as db]
             [frontend.git :as git]
-            [frontend.date :as date]
+            [frontend.handler.common :as common-handler]
             [frontend.handler.notification :as notification]
             [frontend.handler.route :as route-handler]
-            [frontend.handler.common :as common-handler]
-            [frontend.config :as config]
-            [cljs-time.local :as tl]))
+            [frontend.state :as state]
+            [frontend.util :as util]
+            [lambdaisland.glogi :as log]
+            [promesa.core :as p]))
 
 (defn- set-git-status!
   [repo-url value]
@@ -24,7 +24,7 @@
 
 (defn- set-git-error!
   [repo-url value]
-  (db/set-key-value repo-url :git/error (if value (str value))))
+  (db/set-key-value repo-url :git/error (when value (str value))))
 
 (defn git-add
   ([repo-url file]

+ 4 - 7
src/main/frontend/handler/graph.cljs

@@ -1,13 +1,10 @@
 (ns frontend.handler.graph
-  (:require [frontend.db :as db]
+  (:require [clojure.set :as set]
             [clojure.string :as string]
-            [frontend.util :as util :refer [profile]]
-            [frontend.date :as date]
-            [frontend.state :as state]
-            [clojure.set :as set]
-            [medley.core :as medley]
+            [frontend.db :as db]
             [frontend.db.default :as default-db]
-            [frontend.text :as text]))
+            [frontend.state :as state]
+            [frontend.util :as util]))
 
 (defn- build-links
   [links]

+ 4 - 9
src/main/frontend/handler/history.cljs

@@ -1,16 +1,11 @@
 (ns frontend.handler.history
-  (:require [frontend.state :as state]
-            [frontend.db :as db]
+  (:require [frontend.db :as db]
             [frontend.handler.editor :as editor]
             [frontend.handler.ui :as ui-handler]
-            [promesa.core :as p]
-            [clojure.core.async :as async]
-            [goog.dom :as gdom]
-            [goog.object :as gobj]
-            [dommy.core :as d]
+            [frontend.modules.editor.undo-redo :as undo-redo]
+            [frontend.state :as state]
             [frontend.util :as util]
-            [medley.core :as medley]
-            [frontend.modules.editor.undo-redo :as undo-redo]))
+            [goog.dom :as gdom]))
 
 (defn- default-undo
   []

+ 6 - 6
src/main/frontend/handler/image.cljs

@@ -1,13 +1,13 @@
 (ns frontend.handler.image
-  (:require [goog.object :as gobj]
-            [frontend.handler.notification :as notification]
-            [frontend.util :as util :refer [profile]]
+  (:require [clojure.string :as string]
             [frontend.config :as config]
+            [frontend.fs :as fs]
+            [frontend.handler.notification :as notification]
             [frontend.image :as image]
             [frontend.state :as state]
-            [frontend.fs :as fs]
-            [clojure.string :as string]
-            [goog.dom :as gdom]))
+            [frontend.util :as util]
+            [goog.dom :as gdom]
+            [goog.object :as gobj]))
 
 (defn render-local-images!
   []

+ 7 - 9
src/main/frontend/handler/metadata.cljs

@@ -1,16 +1,14 @@
 (ns frontend.handler.metadata
-  (:require [frontend.state :as state]
-            [frontend.handler.file :as file-handler]
-            [cljs.reader :as reader]
+  (:require [cljs.reader :as reader]
+            [clojure.string :as string]
+            [datascript.db :as ddb]
             [frontend.config :as config]
             [frontend.db :as db]
             [frontend.fs :as fs]
-            [datascript.db :as ddb]
-            [clojure.string :as string]
-            [promesa.core :as p]
-            [frontend.util :as util]
-            [frontend.date :as date]
-            [frontend.handler.common :as common-handler]))
+            [frontend.handler.common :as common-handler]
+            [frontend.handler.file :as file-handler]
+            [frontend.state :as state]
+            [promesa.core :as p]))
 
 (def default-metadata-str "{}")
 

+ 20 - 22
src/main/frontend/handler/page.cljs

@@ -1,36 +1,34 @@
 (ns frontend.handler.page
-  (:require [clojure.string :as string]
-            [frontend.db :as db]
+  (:require [cljs.reader :as reader]
+            [clojure.string :as string]
+            [clojure.walk :as walk]
             [datascript.core :as d]
-            [frontend.state :as state]
-            [frontend.util :as util :refer [profile]]
-            [frontend.util.cursor :as cursor]
+            [frontend.commands :as commands]
             [frontend.config :as config]
+            [frontend.date :as date]
+            [frontend.db :as db]
+            [frontend.db-schema :as db-schema]
+            [frontend.db.model :as model]
+            [frontend.format.block :as block]
+            [frontend.fs :as fs]
+            [frontend.git :as git]
             [frontend.handler.common :as common-handler]
-            [frontend.handler.route :as route-handler]
-            [frontend.handler.repo :as repo-handler]
             [frontend.handler.editor :as editor-handler]
-            [frontend.handler.web.nfs :as web-nfs]
             [frontend.handler.notification :as notification]
-            [frontend.handler.config :as config-handler]
+            [frontend.handler.repo :as repo-handler]
+            [frontend.handler.route :as route-handler]
             [frontend.handler.ui :as ui-handler]
-            [frontend.modules.outliner.file :as outliner-file]
+            [frontend.handler.web.nfs :as web-nfs]
             [frontend.modules.outliner.core :as outliner-core]
+            [frontend.modules.outliner.file :as outliner-file]
             [frontend.modules.outliner.tree :as outliner-tree]
-            [frontend.commands :as commands]
-            [frontend.date :as date]
-            [frontend.db-schema :as db-schema]
-            [frontend.db.model :as model]
-            [clojure.walk :as walk]
-            [frontend.git :as git]
-            [frontend.fs :as fs]
+            [frontend.state :as state]
+            [frontend.util :as util]
+            [frontend.util.cursor :as cursor]
             [frontend.util.property :as property]
-            [promesa.core :as p]
-            [lambdaisland.glogi :as log]
-            [frontend.format.block :as block]
-            [cljs.reader :as reader]
             [goog.object :as gobj]
-            [clojure.data :as data]))
+            [lambdaisland.glogi :as log]
+            [promesa.core :as p]))
 
 (defn- get-directory
   [journal?]

+ 2 - 2
src/main/frontend/handler/plugin.cljs

@@ -82,7 +82,7 @@
 (defn parse-user-md-content
   [content {:keys [url]}]
   (try
-    (if-not (string/blank? content)
+    (when-not (string/blank? content)
       (let [content (if-not (string/blank? url)
                       (string/replace
                        content #"!\[[^\]]*\]\((.*?)\s*(\"(?:.*[^\"])\")?\s*\)"
@@ -109,7 +109,7 @@
 
 (defn load-unpacked-plugin
   []
-  (if util/electron?
+  (when util/electron?
     (p/let [path (ipc/ipc "openDialogSync")]
       (when-not (:plugin/selected-unpacked-pkg @state/state)
         (state/set-state! :plugin/selected-unpacked-pkg path)))))

+ 2 - 2
src/main/frontend/handler/repo.cljs

@@ -101,7 +101,7 @@
            file-name (date/journal-title->default title)
            default-content (util/default-content-with-title format)
            template (state/get-journal-template)
-           template (if (and template
+           template (when (and template
                              (not (string/blank? template)))
                       template)
            content (cond
@@ -304,7 +304,7 @@
               remove-files (filter-diffs "remove")
               modify-files (filter-diffs "modify")
               add-files (filter-diffs "add")
-              delete-files (if (seq remove-files)
+              delete-files (when (seq remove-files)
                              (db/delete-files remove-files))
               delete-blocks (db/delete-blocks repo-url remove-files true)
               delete-blocks (->>

+ 8 - 9
src/main/frontend/handler/route.cljs

@@ -1,16 +1,15 @@
 (ns frontend.handler.route
-  (:require [frontend.util :as util]
-            [reitit.frontend.easy :as rfe]
-            [reitit.frontend.history :as rfh]
-            [frontend.state :as state]
+  (:require [clojure.string :as string]
+            [frontend.date :as date]
+            [frontend.db :as db]
             [frontend.handler.plugin :as plugin-handler]
-            [goog.dom :as gdom]
             [frontend.handler.ui :as ui-handler]
-            [frontend.db :as db]
-            [frontend.date :as date]
-            [clojure.string :as string]
+            [frontend.state :as state]
+            [frontend.text :as text]
+            [frontend.util :as util]
+            [goog.dom :as gdom]
             [medley.core :as medley]
-            [frontend.text :as text]))
+            [reitit.frontend.easy :as rfe]))
 
 (defn redirect!
   "If `push` is truthy, previous page will be left in history."

+ 6 - 7
src/main/frontend/handler/search.cljs

@@ -1,13 +1,12 @@
 (ns frontend.handler.search
-  (:require [goog.object :as gobj]
-            [frontend.state :as state]
+  (:require [clojure.string :as string]
             [frontend.db :as db]
-            [goog.dom :as gdom]
-            [frontend.search :as search]
-            [frontend.search.db :as search-db]
             [frontend.handler.notification :as notification-handler]
-            [promesa.core :as p]
-            [clojure.string :as string]))
+            [frontend.search :as search]
+            [frontend.state :as state]
+            [goog.dom :as gdom]
+            [goog.object :as gobj]
+            [promesa.core :as p]))
 
 (defn search
   ([repo q]

+ 7 - 9
src/main/frontend/handler/user.cljs

@@ -1,15 +1,13 @@
 (ns frontend.handler.user
-  (:require [frontend.util :as util :refer [profile]]
-            [frontend.state :as state]
+  (:require [frontend.config :as config]
             [frontend.db :as db]
-            [frontend.idb :as idb]
-            [frontend.config :as config]
-            [frontend.storage :as storage]
-            [promesa.core :as p]
-            [goog.object :as gobj]
-            [frontend.handler.notification :as notification]
             [frontend.handler.config :as config-handler]
-            [lambdaisland.glogi :as log])
+            [frontend.handler.notification :as notification]
+            [frontend.idb :as idb]
+            [frontend.state :as state]
+            [frontend.util :as util]
+            [lambdaisland.glogi :as log]
+            [promesa.core :as p])
   (:import [goog.format EmailAddress]))
 
 (defn email? [v]

+ 15 - 17
src/main/frontend/handler/web/nfs.cljs

@@ -1,27 +1,25 @@
 (ns frontend.handler.web.nfs
   "The File System Access API, https://web.dev/file-system-access/."
-  (:require [cljs-bean.core :as bean]
-            [promesa.core :as p]
-            [medley.core :as medley]
-            [goog.object :as gobj]
-            [frontend.util :as util]
+  (:require ["/frontend/utils" :as utils]
+            [cljs-bean.core :as bean]
+            [clojure.set :as set]
+            [clojure.string :as string]
+            [frontend.config :as config]
+            [frontend.db :as db]
+            [frontend.encrypt :as encrypt]
+            [frontend.fs :as fs]
+            [frontend.fs.nfs :as nfs]
             [frontend.handler.common :as common-handler]
-            ["/frontend/utils" :as utils]
             [frontend.handler.repo :as repo-handler]
             [frontend.handler.route :as route-handler]
             [frontend.idb :as idb]
+            [frontend.search :as search]
             [frontend.state :as state]
-            [clojure.string :as string]
-            [clojure.set :as set]
-            [frontend.fs :as fs]
-            [frontend.fs.nfs :as nfs]
-            [frontend.db :as db]
-            [frontend.db.model :as db-model]
-            [frontend.config :as config]
+            [frontend.storage :as storage]
+            [frontend.util :as util]
+            [goog.object :as gobj]
             [lambdaisland.glogi :as log]
-            [frontend.encrypt :as encrypt]
-            [frontend.search :as search]
-            [frontend.storage :as storage]))
+            [promesa.core :as p]))
 
 (defn remove-ignore-files
   [files]
@@ -85,7 +83,7 @@
 
 (defn- set-files-aux!
   [handles]
-  (if (seq handles)
+  (when (seq handles)
     (let [[h t] (split-at 50 handles)]
       (p/let [_ (p/promise (fn [_]
                              (js/setTimeout (fn []

+ 3 - 5
src/main/frontend/idb.cljs

@@ -1,12 +1,10 @@
 (ns frontend.idb
-  (:require [cljs-bean.core :as bean]
-            [goog.object :as gobj]
-            [promesa.core :as p]
+  (:require ["/frontend/idbkv" :as idb-keyval :refer [Store]]
             [clojure.string :as string]
             [frontend.config :as config]
-            [frontend.util :as util]
             [frontend.storage :as storage]
-            ["/frontend/idbkv" :as idb-keyval :refer [Store]]))
+            [goog.object :as gobj]
+            [promesa.core :as p]))
 
 
 ;; offline db

+ 3 - 4
src/main/frontend/image.cljs

@@ -1,9 +1,8 @@
 (ns frontend.image
-  (:require [goog.object :as gobj]
-            ["/frontend/exif" :as exif]
-            [frontend.util :as util]
+  (:require ["/frontend/exif" :as exif]
+            [clojure.string :as string]
             [frontend.date :as date]
-            [clojure.string :as string]))
+            [goog.object :as gobj]))
 
 (defn reverse?
   [exif-orientation]

+ 2 - 4
src/main/frontend/modules/datascript_report/core.cljs

@@ -1,8 +1,6 @@
 (ns frontend.modules.datascript-report.core
-  (:require [lambdaisland.glogi :as log]
-            [datascript.core :as d]
-            [datascript.db :as db]
-            [clojure.set :as set]))
+  (:require [clojure.set :as set]
+            [datascript.core :as d]))
 
 (def keys-of-deleted-entity 1)
 

+ 5 - 12
src/main/frontend/modules/file/core.cljs

@@ -1,19 +1,12 @@
 (ns frontend.modules.file.core
-  (:require [frontend.debug :as debug]
+  (:require [cljs.core.async :as async]
             [clojure.string :as string]
-            [frontend.state :as state]
-            [cljs.core.async :as async]
-            [frontend.db.conn :as conn]
-            [frontend.db.utils :as db-utils]
-            [frontend.db.model :as model]
-            [frontend.db :as db]
             [frontend.config :as config]
             [frontend.date :as date]
-            [frontend.fs :as fs]
-            [frontend.handler.notification :as notification]
-            [frontend.util :as util]
-            [frontend.modules.outliner.tree :as tree]
-            [promesa.core :as p]))
+            [frontend.db :as db]
+            [frontend.db.utils :as db-utils]
+            [frontend.state :as state]
+            [frontend.util :as util]))
 
 (defn- indented-block-content
   [content spaces-tabs]

+ 7 - 8
src/main/frontend/modules/outliner/core.cljs

@@ -1,17 +1,16 @@
 (ns frontend.modules.outliner.core
-  (:require [frontend.modules.outliner.tree :as tree]
+  (:require [clojure.set :as set]
+            [clojure.zip :as zip]
             [frontend.db :as db]
             [frontend.db-schema :as db-schema]
-            [frontend.db.outliner :as db-outliner]
             [frontend.db.conn :as conn]
-            [frontend.modules.outliner.utils :as outliner-u]
+            [frontend.db.outliner :as db-outliner]
+            [frontend.modules.outliner.datascript :as ds]
             [frontend.modules.outliner.state :as outliner-state]
+            [frontend.modules.outliner.tree :as tree]
+            [frontend.modules.outliner.utils :as outliner-u]
             [frontend.state :as state]
-            [clojure.set :as set]
-            [clojure.zip :as zip]
-            [frontend.modules.outliner.datascript :as ds]
-            [frontend.util :as util]
-            [frontend.util.property :as property]))
+            [frontend.util :as util]))
 
 (defrecord Block [data])
 

+ 0 - 2
src/main/frontend/modules/outliner/datascript.cljc

@@ -6,9 +6,7 @@
                      [frontend.modules.outliner.pipeline :as pipelines]
                      [frontend.modules.editor.undo-redo :as undo-redo]
                      [frontend.state :as state]
-                     [frontend.util :as util :refer [profile]]
                      [frontend.config :as config]
-                     [frontend.util :as util]
                      [lambdaisland.glogi :as log])))
 
 

+ 9 - 9
src/main/frontend/modules/outliner/file.cljs

@@ -1,16 +1,16 @@
 (ns frontend.modules.outliner.file
-  (:require [frontend.db.model :as model]
+  (:require [clojure.core.async :as async]
+            [clojure.string :as string]
+            [frontend.config :as config]
             [frontend.db :as db]
-            [frontend.modules.outliner.tree :as tree]
-            [frontend.modules.file.core :as file]
-            [lambdaisland.glogi :as log]
-            [clojure.core.async :as async]
-            [frontend.util :as util :refer [profile]]
+            [frontend.db.model :as model]
             [frontend.handler.notification :as notification]
-            [goog.object :as gobj]
+            [frontend.modules.file.core :as file]
+            [frontend.modules.outliner.tree :as tree]
             [frontend.state :as state]
-            [clojure.string :as string]
-            [frontend.config :as config]))
+            [frontend.util :as util]
+            [goog.object :as gobj]
+            [lambdaisland.glogi :as log]))
 
 (def write-chan (async/chan))
 

+ 2 - 3
src/main/frontend/modules/outliner/pipeline.cljs

@@ -1,7 +1,6 @@
 (ns frontend.modules.outliner.pipeline
-  (:require [frontend.modules.outliner.file :as file]
-            [frontend.modules.datascript-report.core :as ds-report]
-            [frontend.handler.metadata :as metadata-handler]))
+  (:require [frontend.modules.datascript-report.core :as ds-report]
+            [frontend.modules.outliner.file :as file]))
 
 (defn updated-block-hook
   [block])

+ 3 - 4
src/main/frontend/modules/outliner/state.cljs

@@ -1,9 +1,8 @@
 (ns frontend.modules.outliner.state
-  (:require [frontend.modules.outliner.utils :as u-outliner]
+  (:require [frontend.db.outliner :as db-outliner]
             [frontend.db.react :as react]
-            [frontend.db.outliner :as db-outliner]
-            [frontend.util :as util]
-            [frontend.modules.outliner.tree :as tree]))
+            [frontend.modules.outliner.utils :as u-outliner]
+            [frontend.util :as util]))
 
 (defn get-by-parent-id
   [repo id]

+ 2 - 5
src/main/frontend/modules/outliner/tree.cljs

@@ -1,9 +1,6 @@
 (ns frontend.modules.outliner.tree
-  (:require [clojure.set :as set]
-            [frontend.modules.outliner.utils :as outliner-u]
-            [frontend.debug :as debug]
-            [frontend.util :as util]
-            [frontend.db :as db]))
+  (:require [frontend.db :as db]
+            [frontend.util :as util]))
 
 (defprotocol INode
   (-get-id [this])

+ 1 - 3
src/main/frontend/modules/shortcut/config.cljs

@@ -1,15 +1,13 @@
 (ns frontend.modules.shortcut.config
   (:require [frontend.components.commit :as commit]
+            [frontend.extensions.srs.handler :as srs]
             [frontend.handler.config :as config-handler]
             [frontend.handler.editor :as editor-handler]
             [frontend.handler.history :as history]
-            [frontend.handler.repo :as repo-handler]
             [frontend.handler.page :as page-handler]
             [frontend.handler.route :as route-handler]
             [frontend.handler.search :as search-handler]
             [frontend.handler.ui :as ui-handler]
-            [frontend.handler.web.nfs :as nfs-handler]
-            [frontend.extensions.srs.handler :as srs]
             [frontend.modules.shortcut.before :as m]
             [frontend.state :as state]
             [frontend.util :refer [mac?]]))

+ 10 - 14
src/main/frontend/search.cljs

@@ -1,21 +1,17 @@
 (ns frontend.search
-  (:require [frontend.db :as db]
-            [frontend.search.db :as search-db :refer [indices]]
-            [frontend.config :as config]
-            [frontend.state :as state]
-            [frontend.util :as util :refer [profile]]
-            [cljs-bean.core :as bean]
+  (:require [cljs-bean.core :as bean]
             [clojure.string :as string]
-            [clojure.set :as set]
+            [frontend.config :as config]
+            [frontend.db :as db]
             [frontend.regex :as regex]
-            [cljs-bean.core :as bean]
-            [goog.object :as gobj]
-            [medley.core :as medley]
-            [promesa.core :as p]
-            ["/frontend/utils" :as utils]
-            [frontend.search.protocol :as protocol]
             [frontend.search.browser :as search-browser]
-            [frontend.search.node :as search-node]))
+            [frontend.search.db :as search-db :refer [indices]]
+            [frontend.search.node :as search-node]
+            [frontend.search.protocol :as protocol]
+            [frontend.state :as state]
+            [frontend.util :as util]
+            [goog.object :as gobj]
+            [promesa.core :as p]))
 
 (defn get-engine
   [repo]

+ 3 - 7
src/main/frontend/search/browser.cljs

@@ -1,13 +1,9 @@
 (ns frontend.search.browser
-  (:require [frontend.search.protocol :as protocol]
-            [frontend.util :as util]
-            [cljs-bean.core :as bean]
+  (:require [cljs-bean.core :as bean]
             [frontend.search.db :as search-db :refer [indices]]
-            [clojure.string :as string]
-            [promesa.core :as p]
+            [frontend.search.protocol :as protocol]
             [goog.object :as gobj]
-            [frontend.db :as db]
-            [medley.core :as medley]))
+            [promesa.core :as p]))
 
 ;; fuse.js
 

+ 5 - 6
src/main/frontend/search/db.cljs

@@ -1,13 +1,12 @@
 (ns frontend.search.db
   (:refer-clojure :exclude [empty?])
-  (:require [frontend.text :as text]
-            [frontend.util.property :as property]
-            [frontend.util.drawer :as drawer]
+  (:require [cljs-bean.core :as bean]
+            [clojure.string :as string]
             [frontend.db :as db]
             [frontend.state :as state]
-            [cljs-bean.core :as bean]
-            ["fuse.js" :as fuse]
-            [clojure.string :as string]))
+            [frontend.text :as text]
+            [frontend.util.drawer :as drawer]
+            ["fuse.js" :as fuse]))
 
 (defonce indices (atom nil))
 

+ 2 - 4
src/main/frontend/search/node.cljs

@@ -1,10 +1,8 @@
 (ns frontend.search.node
-  (:require [frontend.search.protocol :as protocol]
-            [frontend.util :as util]
+  (:require [cljs-bean.core :as bean]
             [electron.ipc :as ipc]
-            [cljs-bean.core :as bean]
             [frontend.search.db :as search-db]
-            [frontend.db :as db]
+            [frontend.search.protocol :as protocol]
             [promesa.core :as p]))
 
 (defrecord Node [repo]

+ 12 - 12
src/main/frontend/state.cljs

@@ -1,20 +1,20 @@
 (ns frontend.state
-  (:require [frontend.storage :as storage]
-            [rum.core :as rum]
-            [frontend.util :as util :refer [profile]]
-            [frontend.util.cursor :as cursor]
+  (:require [cljs-bean.core :as bean]
+            [cljs-time.core :as t]
+            [cljs-time.format :as tf]
+            [cljs.core.async :as async]
             [clojure.string :as string]
-            [cljs-bean.core :as bean]
-            [medley.core :as medley]
-            [goog.object :as gobj]
-            [goog.dom :as gdom]
             [dommy.core :as dom]
-            [cljs.core.async :as async]
+            [electron.ipc :as ipc]
+            [frontend.storage :as storage]
+            [frontend.util :as util]
+            [frontend.util.cursor :as cursor]
+            [goog.dom :as gdom]
+            [goog.object :as gobj]
             [lambdaisland.glogi :as log]
-            [cljs-time.core :as t]
+            [medley.core :as medley]
             [promesa.core :as p]
-            [electron.ipc :as ipc]
-            [cljs-time.format :as tf]))
+            [rum.core :as rum]))
 
 (defonce ^:private state
   (let [document-mode? (or (storage/get :document/mode?) false)

+ 4 - 4
src/main/frontend/template.cljs

@@ -1,9 +1,9 @@
 (ns frontend.template
-  (:require [frontend.util :as util :refer [profile]]
-            [frontend.date :as date]
+  (:require [cljs-time.coerce :as tc]
             [clojure.string :as string]
-            [cljs-time.coerce :as tc]
-            [frontend.state :as state]))
+            [frontend.date :as date]
+            [frontend.state :as state]
+            [frontend.util :as util]))
 
 (defn- variable-rules
   []

+ 3 - 4
src/main/frontend/tools/html_export.cljs

@@ -1,11 +1,10 @@
 (ns frontend.tools.html-export
   (:require-macros [hiccups.core :as hiccups :refer [html]])
-  (:require [frontend.db :as db]
+  (:require [clojure.set :as set]
+            [clojure.walk :as walk]
             [frontend.components.block :as block]
+            [frontend.db :as db]
             [frontend.extensions.slide :as slide]
-            [hiccups.runtime :as hiccupsrt]
-            [clojure.walk :as walk]
-            [clojure.set :as set]
             [medley.core :as medley]))
 
 ;; Consider generate a db index so that search can still works

+ 26 - 28
src/main/frontend/ui.cljs

@@ -1,26 +1,24 @@
 (ns frontend.ui
-  (:require [rum.core :as rum]
-            [frontend.rum :as r]
-            ["react-transition-group" :refer [TransitionGroup CSSTransition]]
-            ["react-textarea-autosize" :as TextareaAutosize]
-            ["react-resize-context" :as Resize]
-            ["react-tippy" :as react-tippy]
-            ["react-tweet-embed" :as react-tweet-embed]
-            [frontend.util :as util]
-            [frontend.mixins :as mixins]
-            [frontend.handler.notification :as notification-handler]
-            [frontend.handler.ui :as ui-handler]
-            [frontend.state :as state]
+  (:require [clojure.string :as string]
             [frontend.components.svg :as svg]
-            [clojure.string :as string]
-            [goog.object :as gobj]
-            [goog.dom :as gdom]
-            [medley.core :as medley]
-            [frontend.ui.date-picker]
             [frontend.context.i18n :as i18n]
+            [frontend.handler.notification :as notification-handler]
+            [frontend.mixins :as mixins]
             [frontend.modules.shortcut.core :as shortcut]
+            [frontend.rum :as r]
+            [frontend.state :as state]
+            [frontend.ui.date-picker]
+            [frontend.util :as util]
+            [goog.dom :as gdom]
+            [goog.object :as gobj]
             [lambdaisland.glogi :as log]
-            [frontend.config :as config]))
+            [medley.core :as medley]
+            ["react-resize-context" :as Resize]
+            ["react-textarea-autosize" :as TextareaAutosize]
+            ["react-tippy" :as react-tippy]
+            ["react-transition-group" :refer [CSSTransition TransitionGroup]]
+            ["react-tweet-embed" :as react-tweet-embed]
+            [rum.core :as rum]))
 
 (defonce transition-group (r/adapt-class TransitionGroup))
 (defonce css-transition (r/adapt-class CSSTransition))
@@ -116,7 +114,7 @@
   [text & {:keys [background href class intent on-click small?]
            :or {small? false}
            :as   option}]
-  (let [klass (if-not intent ".bg-indigo-600.hover:bg-indigo-700.focus:border-indigo-700.active:bg-indigo-700")
+  (let [klass (when-not intent ".bg-indigo-600.hover:bg-indigo-700.focus:border-indigo-700.active:bg-indigo-700")
         klass (if background (string/replace klass "indigo" background) klass)
         klass (if small? (str klass ".px-2.py-1") klass)]
     (if href
@@ -244,12 +242,12 @@
 (defn inject-document-devices-envs!
   []
   (let [cl (.-classList js/document.documentElement)]
-    (if util/mac? (.add cl "is-mac"))
-    (if util/win32? (.add cl "is-win32"))
-    (if (util/electron?) (.add cl "is-electron"))
-    (if (util/ios?) (.add cl "is-ios"))
-    (if (util/mobile?) (.add cl "is-mobile"))
-    (if (util/safari?) (.add cl "is-safari"))
+    (when util/mac? (.add cl "is-mac"))
+    (when util/win32? (.add cl "is-win32"))
+    (when (util/electron?) (.add cl "is-electron"))
+    (when (util/ios?) (.add cl "is-ios"))
+    (when (util/mobile?) (.add cl "is-mobile"))
+    (when (util/safari?) (.add cl "is-safari"))
     (when (util/electron?)
       (js/window.apis.on "full-screen" #(js-invoke cl (if (= % "enter") "add" "remove") "is-fullscreen")))))
 
@@ -266,7 +264,7 @@
   "fix a common issue about ios webpage viewport
    when soft keyboard setup"
   []
-  (if (and
+  (when (and
        (util/ios?)
        (not (nil? js/window.visualViewport)))
     (let [viewport js/visualViewport
@@ -276,7 +274,7 @@
           set-raf-pending! #(reset! raf-pending? %)
           handler
           (fn []
-            (if-not @raf-pending?
+            (when-not @raf-pending?
               (let [f (fn []
                         (set-raf-pending! false)
                         (let [vh (+ (.-offsetTop viewport) (.-height viewport))
@@ -455,7 +453,7 @@
              "exiting" "ease-in duration-200 opacity-100 translate-y-0 sm:scale-100"
              "exited" "ease-in duration-200 opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95")}
    [:div.absolute.top-0.right-0.pt-2.pr-2
-    (if close-btn?
+    (when close-btn?
       [:a.ui__modal-close.opacity-60.hover:opacity-100
        {:aria-label "Close"
         :type       "button"

+ 6 - 10
src/main/frontend/ui/date_picker.cljs

@@ -1,14 +1,10 @@
 (ns frontend.ui.date-picker
-  (:require
-   [rum.core :as rum]
-   [cljs-time.core       :refer [now today minus plus months days weeks year month day day-of-week first-day-of-the-month before? after?]]
-   [cljs-time.predicates :refer [sunday?]]
-   [cljs-time.format     :refer [parse unparse formatters formatter]]
-   [frontend.util          :refer [deref-or-value now->utc]]
-   [frontend.modules.shortcut.core :as shortcut]
-   [frontend.util :as util]
-   [frontend.state :as state]
-   [goog.object :as gobj]))
+  (:require [cljs-time.core       :refer [after? before? day day-of-week days first-day-of-the-month minus month months plus weeks year]]
+            [cljs-time.format     :refer [formatter formatters parse unparse]]
+            [frontend.modules.shortcut.core :as shortcut]
+            [frontend.state :as state]
+            [frontend.util  :as util    :refer [deref-or-value now->utc]]
+            [rum.core :as rum]))
 
 ;; Adapted from re-com date-picker
 

+ 2 - 2
src/main/frontend/util.cljc

@@ -793,7 +793,7 @@
   (safe-re-find (re-pattern uuid-pattern) s))
 
 (defn drop-nth [n coll]
-  (keep-indexed #(if (not= %1 n) %2) coll))
+  (keep-indexed #(when (not= %1 n) %2) coll))
 
 (defn capitalize-all [s]
   (some->> (string/split s #" ")
@@ -959,7 +959,7 @@
        [(.getData c "text/html") (.getData c "text")]
        (if-let [c (gobj/getValueByKeys event "originalEvent" "clipboardData")]
          [(.getData c "text/html") (.getData c "text")]
-         (if-let [c (gobj/get js/window "clipboardData")]
+         (when-let [c (gobj/get js/window "clipboardData")]
            [(.getData c "Text") (.getData c "Text")])))))
 
 (defn pp-str [x]

+ 16 - 15
src/main/frontend/util/clock.cljs

@@ -56,18 +56,19 @@
 (defn clock-summary
   [body string?]
   (when-let [logbook (drawer/get-logbook body)]
-    (when-let [clock-lines (last logbook)]
-      (let [times (map #(string/trim (last (string/split % "=>"))) clock-lines)
-            hours (map #(int (first (string/split % ":"))) times)
-            minutes (map #(int (second (string/split % ":"))) times)
-            hours (reduce + hours)
-            minutes (reduce + minutes)]
-        (if string?
-          (util/format "%s%s"
-                      (if (>= hours 1)
-                        (if hours (str hours "h"))
-                        "")
-                      (if (zero? minutes)
-                        ""
-                        (str minutes "m")))
-          (+ (* hours 60) minutes))))))
+    (when-let [logbook-lines (last logbook)]
+      (when-let [clock-lines (filter #(string/starts-with? % "CLOCK:") logbook-lines)]
+       (let [times (map #(string/trim (last (string/split % "=>"))) clock-lines)
+             hours (map #(int (first (string/split % ":"))) times)
+             minutes (map #(int (second (string/split % ":"))) times)
+             hours (reduce + hours)
+             minutes (reduce + minutes)]
+         (if string?
+           (util/format "%s%s"
+                        (if (>= hours 1)
+                          (when hours (str hours "h"))
+                          "")
+                        (if (zero? minutes)
+                          ""
+                          (str minutes "m")))
+           (+ (* hours 60) minutes)))))))

+ 1 - 1
src/main/frontend/util/marker.cljs

@@ -36,7 +36,7 @@
 
 (defn header-marker-pattern
   [markdown? marker]
-  (re-pattern (str "^" (if markdown? "#*\\s*") marker)))
+  (re-pattern (str "^" (when markdown? "#*\\s*") marker)))
 
 (defn replace-marker
   [content markdown? old-marker new-marker]

+ 4 - 5
src/main/frontend/util/pool.cljs

@@ -1,10 +1,9 @@
 (ns frontend.util.pool
-  (:require ["threads" :refer [spawn Pool Worker]]
-            [promesa.core :as p]
+  (:require [electron.ipc :as ipc]
+            [frontend.config :as config]
             [frontend.util :as util]
-            ["path" :as path]
-            [electron.ipc :as ipc]
-            [frontend.config :as config]))
+            [promesa.core :as p]
+            ["threads" :refer [Pool Worker spawn]]))
 
 (defonce parser-pool (atom nil))
 

+ 1 - 1
src/main/frontend/util/property.cljs

@@ -133,7 +133,7 @@
             properties-in-content? (and title (= (string/upper-case title) properties-start))
             no-title? (or (simplified-property? title) properties-in-content?)
             properties-and-body (concat
-                                 (if (and no-title? (not org?)) [title])
+                                 (when (and no-title? (not org?)) [title])
                                  (if (and org? properties-in-content?)
                                    (rest body)
                                    body))

+ 1 - 3
src/main/frontend/util/thingatpt.cljs

@@ -1,10 +1,8 @@
 (ns frontend.util.thingatpt
   (:require [clojure.string :as string]
-            [frontend.util :as util]
             [frontend.state :as state]
-            [goog.object :as gobj]
             [frontend.util.cursor :as cursor]
-            ))
+            [goog.object :as gobj]))
 
 (defn- get-content&pos-at-point []
   (when-let [input (state/get-input)]

+ 28 - 29
src/main/logseq/api.cljs

@@ -1,37 +1,36 @@
 (ns ^:no-doc logseq.api
-  (:require [frontend.db :as db]
+  (:require [camel-snake-kebab.core :as csk]
+            [cljs-bean.core :as bean]
+            [cljs.reader]
+            [clojure.string :as string]
+            [clojure.walk :as walk]
+            [datascript.core :as d]
+            [electron.ipc :as ipc]
+            [frontend.commands :as commands]
+            [frontend.components.plugins :as plugins]
+            [frontend.config :as config]
+            [frontend.db :as db]
             [frontend.db.model :as db-model]
+            [frontend.db.query-dsl :as query-dsl]
             [frontend.db.utils :as db-utils]
-            [frontend.handler.block :as block-handler]
-            [frontend.handler.editor :as editor-handler]
-            [frontend.handler.page :as page-handler]
+            [frontend.fs :as fs]
             [frontend.handler.dnd :as editor-dnd-handler]
+            [frontend.handler.editor :as editor-handler]
             [frontend.handler.export :as export-handler]
+            [frontend.handler.notification :as notification]
+            [frontend.handler.page :as page-handler]
+            [frontend.handler.plugin :as plugin-handler]
             [frontend.modules.outliner.core :as outliner]
             [frontend.modules.outliner.tree :as outliner-tree]
+            [frontend.state :as state]
             [frontend.util :as util]
-            [frontend.config :as config]
             [frontend.util.cursor :as cursor]
-            [electron.ipc :as ipc]
-            [promesa.core :as p]
             [goog.dom :as gdom]
-            [sci.core :as sci]
             [lambdaisland.glogi :as log]
-            [camel-snake-kebab.core :as csk]
-            [cljs-bean.core :as bean]
-            [frontend.state :as state]
-            [frontend.components.plugins :as plugins]
-            [frontend.handler.plugin :as plugin-handler]
-            [frontend.commands :as commands]
-            [frontend.handler.notification :as notification]
-            [datascript.core :as d]
             [medley.core :as medley]
-            [frontend.fs :as fs]
-            [clojure.string :as string]
-            [clojure.walk :as walk]
-            [cljs.reader]
+            [promesa.core :as p]
             [reitit.frontend.easy :as rfe]
-            [frontend.db.query-dsl :as query-dsl]))
+            [sci.core :as sci]))
 
 ;; helpers
 (defn- normalize-keyword-for-json
@@ -105,7 +104,7 @@
           _ (when-not exist? (fs/mkdir-recur! path))
           user-path (util/node-path.join path file)
           sub-dir? (string/starts-with? user-path path)
-          _ (if-not sub-dir? (do (log/info :debug user-path) (throw "write file denied")))
+          _ (when-not sub-dir? (do (log/info :debug user-path) (throw "write file denied")))
           user-path-root (util/node-path.dirname user-path)
           exist? (fs/file-exists? user-path-root "")
           _ (when-not exist? (fs/mkdir-recur! user-path-root))
@@ -119,9 +118,9 @@
           path (util/node-path.join path sub-root)
           user-path (util/node-path.join path file)
           sub-dir? (string/starts-with? user-path path)
-          _ (if-not sub-dir? (do (log/info :debug user-path) (throw "read file denied")))
+          _ (when-not sub-dir? (log/info :debug user-path) (throw "read file denied"))
           exist? (fs/file-exists? "" user-path)
-          _ (when-not exist? (do (log/info :debug user-path) (throw "file not existed")))
+          _ (when-not exist? (log/info :debug user-path) (throw "file not existed"))
           content (fs/read-file "" user-path)]
     content))
 
@@ -132,9 +131,9 @@
           path (util/node-path.join path sub-root)
           user-path (util/node-path.join path file)
           sub-dir? (string/starts-with? user-path path)
-          _ (if-not sub-dir? (do (log/info :debug user-path) (throw "access file denied")))
+          _ (when-not sub-dir? (log/info :debug user-path) (throw "access file denied"))
           exist? (fs/file-exists? "" user-path)
-          _ (when-not exist? (do (log/info :debug user-path) (throw "file not existed")))
+          _ (when-not exist?(log/info :debug user-path) (throw "file not existed"))
           _ (fs/unlink! repo user-path {})]))
 
 (def ^:export write_user_tmp_file
@@ -307,7 +306,7 @@
     (when-let [page (cond
                       (number? id-or-page-name) (db-utils/pull id-or-page-name)
                       (string? id-or-page-name) (db-model/get-page id-or-page-name))]
-      (if-not (contains? page :block/left)
+      (when-not (contains? page :block/left)
         (bean/->js (normalize-keyword-for-json (db-utils/pull (:db/id page))))))))
 
 (def ^:export get_all_pages
@@ -409,7 +408,7 @@
     (when-let [block (cond
                        (number? id-or-uuid) (db-utils/pull id-or-uuid)
                        (string? id-or-uuid) (db-model/query-block-by-uuid id-or-uuid))]
-      (if-not (contains? block :block/name)
+      (when-not (contains? block :block/name)
         (when-let [uuid (:block/uuid block)]
           (let [{:keys [includeChildren]} (bean/->clj opts)
                 block (if (not includeChildren) block (first (outliner-tree/blocks->vec-tree [block] uuid)))]
@@ -419,7 +418,7 @@
   (fn [uuid]
     (when-let [block (db-model/query-block-by-uuid uuid)]
       (let [{:block/keys [parent left]} block
-            block (if-not (= parent left) (db-utils/pull (:db/id left)))]
+            block (when-not (= parent left) (db-utils/pull (:db/id left)))]
         (and block (bean/->js (normalize-keyword-for-json block)))))))
 
 (def ^:export get_next_sibling_block

+ 2 - 7
src/test/frontend/db/model_test.cljs

@@ -1,11 +1,6 @@
 (ns frontend.db.model-test
-  (:require [frontend.db.model :as model]
-            [frontend.db.config :refer [test-db] :as config]
-            [datascript.core :as d]
-            [frontend.db-schema :as schema]
-            [frontend.handler.repo :as repo-handler]
-            [promesa.core :as p]
-            [cljs.test :refer [deftest is are testing use-fixtures]]))
+  (:require [cljs.test :refer [use-fixtures]]
+            [frontend.db.config :as config]))
 
 ;; (deftest test-page-alias-with-multiple-alias
 ;;   []

+ 4 - 6
src/test/frontend/db/outliner_test.cljs

@@ -1,11 +1,9 @@
 (ns frontend.db.outliner-test
-  (:require [datascript.core :as d]
-            [frontend.db.conn :as conn]
+  (:require [cljs.test :refer [deftest is use-fixtures]]
+            [datascript.core :as d]
+            [frontend.core-test :as core-test]
             [frontend.db.outliner :as outliner]
-            [cljs.test :refer [deftest is are testing use-fixtures run-tests]]
-            [cljs-run-test :refer [run-test]]
-            [frontend.fixtures :as fixtures]
-            [frontend.core-test :as core-test]))
+            [frontend.fixtures :as fixtures]))
 
 (use-fixtures :each fixtures/reset-db)
 

+ 4 - 6
src/test/frontend/db/query_dsl_test.cljs

@@ -1,13 +1,11 @@
 (ns frontend.db.query-dsl-test
-  (:require [frontend.db.query-dsl :as dsl]
+  (:require [cljs.test :refer [are async deftest testing use-fixtures]]
+            [datascript.core :as d]
             [frontend.db :as db]
-            [frontend.db.conn :as conn]
             [frontend.db.config :refer [test-db] :as config]
-            [datascript.core :as d]
-            [frontend.db-schema :as schema]
+            [frontend.db.query-dsl :as dsl]
             [frontend.handler.repo :as repo-handler]
-            [promesa.core :as p]
-            [cljs.test :refer [deftest is are testing use-fixtures run-tests async]]))
+            [promesa.core :as p]))
 
 ;; TODO: quickcheck
 ;; 1. generate query filters

+ 1 - 1
src/test/frontend/extensions/calc_test.cljc

@@ -1,5 +1,5 @@
 (ns frontend.extensions.calc-test
-  (:require [clojure.test :as test :refer [deftest testing is are]]
+  (:require [clojure.test :as test :refer [are deftest testing]]
             [frontend.extensions.calc :as calc]))
 
 (defn run [expr]

+ 6 - 8
src/test/frontend/fixtures.cljs

@@ -1,14 +1,12 @@
 (ns frontend.fixtures
-  (:require [cljs.test :refer [deftest is are testing use-fixtures run-tests]]
-            [frontend.react-impls :as react-impls]
-            [frontend.react :as react-test]
+  (:require [datascript.core :as d]
+            [frontend.config :as config]
+            [frontend.db-schema :as db-schema]
             [frontend.db.conn :as conn]
             [frontend.db.react :as db-react]
-            [rum.core :as rum]
-            [datascript.core :as d]
-            [frontend.db-schema :as db-schema]
-            [frontend.state :as state]
-            [frontend.config :as config]))
+            [frontend.react :as react-test]
+            [frontend.react-impls :as react-impls]
+            [frontend.state :as state]))
 
 (defn load-test-env
   [f]

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff