Selaa lähdekoodia

fix: can't remove Many values

Tienson Qin 1 vuosi sitten
vanhempi
sitoutus
89edb3af9a

+ 1 - 1
bb.edn

@@ -1,7 +1,7 @@
 {:paths ["scripts/src" "src/main" "src/resources"]
  :deps
  {metosin/malli
-  {:mvn/version "0.10.0"}
+  {:mvn/version "0.16.1"}
   logseq/bb-tasks
   #_{:local/root "../bb-tasks"}
   {:git/url "https://github.com/logseq/bb-tasks"

+ 3 - 3
deps.edn

@@ -37,12 +37,12 @@
   logseq/outliner                       {:local/root "deps/outliner"}
   logseq/publishing                     {:local/root "deps/publishing"}
   logseq/shui                           {:local/root "deps/shui"}
-  metosin/malli                         {:mvn/version "0.10.0"}
+  metosin/malli                         {:mvn/version "0.16.1"}
   com.cognitect/transit-cljs            {:mvn/version "0.8.280"}
   missionary/missionary                 {:mvn/version "b.39"}}
 
  :aliases {:cljs {:extra-paths ["src/dev-cljs/" "src/test/" "src/electron/"]
-                  :extra-deps  {org.clojure/clojurescript        {:mvn/version "1.11.54"}
+                  :extra-deps  {org.clojure/clojurescript        {:mvn/version "1.11.132"}
                                 org.clojure/tools.namespace      {:mvn/version "0.2.11"}
                                 cider/cider-nrepl                {:mvn/version "0.47.0"}
                                 org.clojars.knubie/cljs-run-test {:mvn/version "1.0.1"}
@@ -50,7 +50,7 @@
                   :main-opts   ["-m" "shadow.cljs.devtools.cli"]}
 
            :test {:extra-paths ["src/test/"]
-                  :extra-deps  {org.clojure/clojurescript        {:mvn/version "1.11.54"}
+                  :extra-deps  {org.clojure/clojurescript        {:mvn/version "1.11.132"}
                                 org.clojure/test.check           {:mvn/version "1.1.1"}
                                 pjstadig/humane-test-output      {:mvn/version "0.11.0"}
                                 org.clojars.knubie/cljs-run-test {:mvn/version "1.0.1"}

+ 1 - 1
deps/common/deps.edn

@@ -5,7 +5,7 @@
  :aliases
  {:test {:extra-paths ["test"]
          :extra-deps  {olical/cljs-test-runner   {:mvn/version "3.8.0"}
-                       org.clojure/clojurescript {:mvn/version "1.11.54"}}
+                       org.clojure/clojurescript {:mvn/version "1.11.132"}}
          :main-opts   ["-m" "cljs-test-runner.main"]}
   :clj-kondo
   {:replace-deps {clj-kondo/clj-kondo {:mvn/version "2023.05.26"}}

+ 1 - 1
deps/db/nbb.edn

@@ -3,6 +3,6 @@
  {logseq/common
   {:local/root "../common"}
   metosin/malli
-  {:mvn/version "0.10.0"}
+  {:mvn/version "0.16.1"}
   io.github.nextjournal/nbb-test-runner
   {:git/sha "60ed57aa04bca8d604f5ba6b28848bd887109347"}}}

+ 1 - 1
deps/graph-parser/deps.edn

@@ -17,7 +17,7 @@
  ;; with karma, shadow-cljs.edn and headless mode on CI
  {:test {:extra-paths ["test"]
          :extra-deps  {olical/cljs-test-runner   {:mvn/version "3.8.0"}
-                       org.clojure/clojurescript {:mvn/version "1.11.54"}}
+                       org.clojure/clojurescript {:mvn/version "1.11.132"}}
          :main-opts   ["-m" "cljs-test-runner.main"]}
 
   :clj-kondo {:replace-deps {clj-kondo/clj-kondo {:mvn/version "2023.05.26"}}

+ 1 - 1
deps/outliner/deps.edn

@@ -5,7 +5,7 @@
   logseq/db             {:local/root "../db"}
   logseq/graph-parser   {:local/root "../db"}
   com.cognitect/transit-cljs {:mvn/version "0.8.280"}
-  metosin/malli {:mvn/version "0.10.0"}}
+  metosin/malli {:mvn/version "0.16.1"}}
  :aliases
  {:clj-kondo
   {:replace-deps {clj-kondo/clj-kondo {:mvn/version "2023.05.26"}}

+ 1 - 1
deps/outliner/nbb.edn

@@ -5,6 +5,6 @@
   logseq/graph-parser
   {:local/root "../graph-parser"}
   metosin/malli
-  {:mvn/version "0.10.0"}
+  {:mvn/version "0.16.1"}
   io.github.nextjournal/nbb-test-runner
   {:git/sha "60ed57aa04bca8d604f5ba6b28848bd887109347"}}}

+ 1 - 1
deps/shui/deps.edn

@@ -1,7 +1,7 @@
 {:paths ["src"]
  :deps
  {org.clojure/clojure                   {:mvn/version "1.11.1"}
-  org.clojure/clojurescript             {:mvn/version "1.11.54"}
+  org.clojure/clojurescript             {:mvn/version "1.11.132"}
   funcool/promesa                       {:mvn/version "4.0.2"}
   rum/rum                               {:mvn/version "0.12.9"}
   medley/medley                         {:mvn/version "1.4.0"}

+ 15 - 1
src/main/frontend/extensions/code.cljs

@@ -251,6 +251,20 @@
     :vector "[]"
     nil))
 
+;; TODO: mu/to-map-syntax has been deprecated, consider removing usage
+(defn -map-syntax-walker [schema _ children _]
+  (let [properties (m/properties schema)
+        options (m/options schema)
+        r (when properties (properties :registry))
+        properties (if r (assoc properties :registry (m/-property-registry r options m/-form)) properties)]
+    (cond-> {:type (m/type schema)}
+      (seq properties) (assoc :properties properties)
+      (seq children) (assoc :children children))))
+
+(defn- malli-to-map-syntax
+  ([?schema] (malli-to-map-syntax ?schema nil))
+  ([?schema options] (m/walk ?schema -map-syntax-walker options)))
+
 (.registerHelper CodeMirror "hint" "clojure"
                  (fn [cm _options]
                    (let [cur (.getCursor cm)
@@ -324,7 +338,7 @@
                                                 "false" nil)
 
                                          :enum
-                                         (let [{:keys [children]} (mu/to-map-syntax schema)]
+                                         (let [{:keys [children]} (malli-to-map-syntax schema)]
                                            (doseq [child children]
                                              (swap! result assoc (str child) nil)))
 

+ 7 - 2
src/main/frontend/handler/db_based/property.cljs

@@ -197,14 +197,19 @@
                       (catch :default e
                         (notification/show! (str e) :error false)
                         nil))
-            old-values (get block (:db/ident property))]
+            old-values (get block (:db/ident property))
+            deleted-values (remove values' old-values)]
         (when (not= old-values values')
           (if-let [msg (validate-property-value schema values')]
             (let [msg' (str "\"" (:block/original-name property) "\"" " " (if (coll? msg) (first msg) msg))]
               (notification/show! msg' :warning))
             (do
               (upsert-property! repo property-id (assoc property-schema :type property-type) {})
-              (let [tx-data (build-property-value-tx-data block property-id values' false)]
+              (let [tx-data (concat
+                             (map (fn [v]
+                                    (let [v' (if (map? v) (:db/id v) v)]
+                                      [:db/retract (:db/id block) property-id v'])) deleted-values)
+                             (build-property-value-tx-data block property-id values' false))]
                 (db/transact! repo tx-data {:outliner-op :save-block})))))))))
 
 (defn- resolve-tag

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

@@ -40,7 +40,7 @@
 
 #?(:cljs
    (extend-protocol IPrintWithWriter
-     js/Symbol
+     symbol
      (-pr-writer [sym writer _]
        (-write writer (str "\"" (.toString sym) "\"")))))
 #?(:cljs