From 3f9aa71f41695cffa204e68731e1b0e08a5d20c8 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Sun, 26 Jan 2025 09:42:25 +0800 Subject: [PATCH] enhance: /scheduled and /deadline to create task --- .../src/logseq/outliner/property.cljs | 49 +++++++++---------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/deps/outliner/src/logseq/outliner/property.cljs b/deps/outliner/src/logseq/outliner/property.cljs index d37252f5ba..04cfac0488 100644 --- a/deps/outliner/src/logseq/outliner/property.cljs +++ b/deps/outliner/src/logseq/outliner/property.cljs @@ -27,28 +27,27 @@ {:property property-ident})))) (defn- build-property-value-tx-data - ([conn block property-id value] - (build-property-value-tx-data conn block property-id value (= property-id :logseq.task/status))) - ([conn block property-id value status?] - (when (some? value) - (let [old-value (get block property-id) - property (d/entity @conn property-id) - multiple-values? (= :db.cardinality/many (:db/cardinality property)) - retract-multiple-values? (and multiple-values? (sequential? value)) - multiple-values-empty? (and (sequential? old-value) - (contains? (set (map :db/ident old-value)) :logseq.property/empty-placeholder)) - update-block-tx (cond-> (outliner-core/block-with-updated-at {:db/id (:db/id block)}) - true - (assoc property-id value) - (and status? (or (empty? (:block/tags block)) (ldb/internal-page? block))) - (assoc :block/tags :logseq.class/Task))] - (cond-> [] - multiple-values-empty? - (conj [:db/retract (:db/id update-block-tx) property-id :logseq.property/empty-placeholder]) - retract-multiple-values? - (conj [:db/retract (:db/id update-block-tx) property-id]) - true - (conj update-block-tx)))))) + [conn block property-id value] + (when (some? value) + (let [old-value (get block property-id) + property (d/entity @conn property-id) + multiple-values? (= :db.cardinality/many (:db/cardinality property)) + retract-multiple-values? (and multiple-values? (sequential? value)) + multiple-values-empty? (and (sequential? old-value) + (contains? (set (map :db/ident old-value)) :logseq.property/empty-placeholder)) + update-block-tx (cond-> (outliner-core/block-with-updated-at {:db/id (:db/id block)}) + true + (assoc property-id value) + (and (contains? #{:logseq.task/status :logseq.task/scheduled :logseq.task/deadline} property-id) + (or (empty? (:block/tags block)) (ldb/internal-page? block))) + (assoc :block/tags :logseq.class/Task))] + (cond-> [] + multiple-values-empty? + (conj [:db/retract (:db/id update-block-tx) property-id :logseq.property/empty-placeholder]) + retract-multiple-values? + (conj [:db/retract (:db/id update-block-tx) property-id]) + true + (conj update-block-tx))))) (defn- get-property-value-schema "Gets a malli schema to validate the property value for the given property type and builds @@ -210,8 +209,7 @@ {:type :notification :payload {:message msg' :type :warning}}))) - (let [status? (= :logseq.task/status (:db/ident property)) - tx-data (build-property-value-tx-data conn block property-id new-value status?)] + (let [tx-data (build-property-value-tx-data conn block property-id new-value)] (ldb/transact! conn tx-data {:outliner-op :save-block}))))) (defn create-property-text-block! @@ -332,11 +330,10 @@ v' (if (db-property-type/value-ref-property-types property-type) (convert-ref-property-value conn property-id v property-type) v) - status? (= :logseq.task/status (:db/ident property)) txs (mapcat (fn [eid] (if-let [block (d/entity @conn eid)] - (build-property-value-tx-data conn block property-id v' status?) + (build-property-value-tx-data conn block property-id v') (js/console.error "Skipping setting a block's property because the block id could not be found:" eid))) block-eids)] (when (seq txs)