Skip to content

Commit 69c4d36

Browse files
committed
fix: :block/name shouldn't be updated for custom date formatter
fixes logseq/db-test#830
1 parent 62eac11 commit 69c4d36

10 files changed

Lines changed: 58 additions & 11 deletions

File tree

.projectile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
-/resources/static/js/react-force-graph.min.js
1616
-/resources/js/lsplugin.user.js
1717
-/resources/js/pdf_viewer2.js
18+
-/deps/db-sync/test/logseq/db_sync/fixtures/*.edn
19+
-/src/test/fixtures/*.transit
20+
-/src/test/migration/*.transit
1821
-/deps/graph-parser/test/resources/
1922
-/ios/App/App/public
2023
-/android/

deps/common/src/logseq/common/util/date_time.cljs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
[logseq.common.util :as common-util]))
88

99
(def ^:private yyyyMMdd-formatter (tf/formatter "yyyyMMdd"))
10+
(def ^:api default-journal-title-formatter "MMM do, yyyy")
1011

1112
;; (tf/parse (tf/formatter "dd.MM.yyyy") "2021Q4") => 20040120T000000
1213
(defn safe-journal-title-formatters
1314
[date-formatter]
14-
(->> [date-formatter "MMM do, yyyy" "yyyy-MM-dd" "yyyy_MM_dd"]
15+
(->> [date-formatter default-journal-title-formatter "yyyy-MM-dd" "yyyy_MM_dd"]
1516
(remove string/blank?)
1617
distinct))
1718

@@ -106,4 +107,4 @@
106107
tc/from-long
107108
t/to-default-time-zone
108109
(tf/unparse yyyyMMdd-formatter)
109-
parse-long))
110+
parse-long))

deps/graph-parser/src/logseq/graph_parser/block.cljs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,8 +297,9 @@
297297
;; for page names to change which breaks looking up journal refs for unconfigured journal pages
298298
(if export-to-db-graph? [date-formatter] (date-time-util/safe-journal-title-formatters date-formatter))))]
299299
(if day
300-
(let [original-page-name' (date-time-util/int->journal-title day date-formatter)]
301-
[original-page-name' (common-util/page-name-sanity-lc original-page-name') day])
300+
(let [original-page-name' (date-time-util/int->journal-title day date-formatter)
301+
default-journal-page-name (date-time-util/int->journal-title day date-time-util/default-journal-title-formatter)]
302+
[original-page-name' (common-util/page-name-sanity-lc default-journal-page-name) day])
302303
[original-page-name page-name day]))))
303304

304305
(def convert-page-if-journal (memoize convert-page-if-journal-impl))

deps/outliner/src/logseq/outliner/core.cljs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
[datascript.core :as d]
77
[datascript.impl.entity :as de :refer [Entity]]
88
[logseq.common.util :as common-util]
9+
[logseq.common.util.date-time :as date-time-util]
910
[logseq.common.util.page-ref :as page-ref]
1011
[logseq.common.uuid :as common-uuid]
1112
[logseq.db :as ldb]
@@ -300,7 +301,10 @@
300301
(outliner-validate/validate-page-title-characters block-title {:node m*}))
301302
m (if page-title-changed?
302303
(let [_ (outliner-validate/validate-page-title (:block/title m*) {:node m*})
303-
page-name (common-util/page-name-sanity-lc (:block/title m*))]
304+
page-name (if-let [journal-day (:block/journal-day block-entity)]
305+
(common-util/page-name-sanity-lc
306+
(date-time-util/int->journal-title journal-day date-time-util/default-journal-title-formatter))
307+
(common-util/page-name-sanity-lc (:block/title m*)))]
304308
(assoc m* :block/name page-name))
305309
m*)
306310
_ (when (and ;; page or object changed?

deps/outliner/test/logseq/outliner/page_test.cljs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
(:require [cljs.test :refer [deftest is testing]]
33
[datascript.core :as d]
44
[logseq.common.config :as common-config]
5+
[logseq.common.util :as common-util]
6+
[logseq.common.util.date-time :as date-time-util]
57
[logseq.common.util.page-ref :as page-ref]
68
[logseq.db :as ldb]
79
[logseq.db.common.order :as db-order]
@@ -159,3 +161,16 @@
159161
:block/tags
160162
(map #(:db/ident (d/entity @conn (:db/id %))))))
161163
"New journal only has Journal tag")))
164+
165+
(deftest create-journal-keeps-default-block-name-with-custom-title-format
166+
(let [conn (db-test/create-conn)
167+
_ (d/transact! conn [[:db/add :logseq.class/Journal :logseq.property.journal/title-format "yyyy-MM-dd EEEE"]])
168+
[_ page-uuid] (outliner-page/create! conn "Dec 16th, 2024" {})
169+
page (d/entity @conn [:block/uuid page-uuid])
170+
default-name (-> (:block/journal-day page)
171+
(date-time-util/int->journal-title date-time-util/default-journal-title-formatter)
172+
common-util/page-name-sanity-lc)]
173+
(is (= "2024-12-16 Monday" (:block/title page))
174+
"Journal title follows configured formatter")
175+
(is (= default-name (:block/name page))
176+
"Journal block/name remains the default formatter, independent of title format")))

src/main/frontend/components/block.cljs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,9 @@
754754
(last child)
755755
(let [{:keys [content children]} (last child)
756756
page-name (subs content 2 (- (count content) 2))]
757-
(rum/with-key (page-reference (assoc config :children children) page-name nil) page-name))))
757+
(rum/with-key (page-reference (assoc config :children children)
758+
(or (:block/uuid page-entity) page-name)
759+
nil) page-name))))
758760
(cond
759761
(and label
760762
(string? label)
@@ -3018,7 +3020,7 @@
30183020
:disable-preview? true)]
30193021
(when (seq parents)
30203022
(let [parents-props (doall
3021-
(for [{:block/keys [uuid name title] :as block} parents]
3023+
(for [{:block/keys [uuid name] :as block} parents]
30223024
(if name
30233025
[block (page-cp (cond-> {:disable-preview? true}
30243026
disabled?
@@ -3027,7 +3029,7 @@
30273029
(let [result (block/parse-title-and-body
30283030
uuid
30293031
(get block :block/format :markdown)
3030-
title)
3032+
(:block/raw-title block))
30313033
ast-body (:block.temp/ast-body result)
30323034
ast-title (:block.temp/ast-title result)
30333035
config (assoc config :block/uuid uuid)]

src/main/frontend/components/settings.cljs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@
433433
(let [format (util/evalue e)]
434434
(when-not (string/blank? format)
435435
(p/do!
436-
(property-handler/set-block-property! :logseq.class/Journal
436+
(property-handler/set-block-property! (:block/uuid (db/entity :logseq.class/Journal))
437437
:logseq.property.journal/title-format
438438
format)
439439
(notification/show! (t :settings.general/refresh-required-feedback)))

src/main/frontend/modules/outliner/op.cljs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
(defn- ->block-id
2626
[block-or-id]
2727
(cond
28+
(keyword? block-or-id)
29+
(:block/uuid (db-utils/entity block-or-id))
30+
2831
(de/entity? block-or-id)
2932
(:block/uuid block-or-id)
3033

src/test/frontend/worker/commands_test.cljs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@
103103
(let [next-time (get-next-time (t/plus now (t/weeks 10)) week-unit 1)]
104104
(is (= 11 (in-weeks next-time))))
105105
(let [next-time (get-next-time (t/plus now (t/months 10)) month-unit 1)]
106-
(is (= 11 (in-months next-time))))
106+
(is (contains? #{10 11} (in-months next-time))))
107107
(let [next-time (get-next-time (t/plus now (t/years 10)) year-unit 1)]
108108
(is (= 11 (in-years next-time)))))
109109

src/test/frontend/worker/pipeline_test.cljs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22
(:require [cljs.test :refer [deftest is testing]]
33
[datascript.core :as d]
44
[frontend.worker.pipeline :as worker-pipeline]
5+
[logseq.common.util :as common-util]
6+
[logseq.common.util.date-time :as date-time-util]
57
[logseq.db :as ldb]
68
[logseq.db.common.order :as db-order]
7-
[logseq.db.test.helper :as db-test]))
9+
[logseq.db.test.helper :as db-test]
10+
[logseq.outliner.page :as outliner-page]))
811

912
(deftest test-built-in-page-updates-that-should-be-reverted
1013
(let [conn (db-test/create-conn-with-blocks
@@ -145,6 +148,21 @@
145148
(is (= "page1-renamed"
146149
(:block/title (d/entity (:db-after result) (:db/id page1)))))))))
147150

151+
(deftest create-journal-page-name-uses-default-formatter-test
152+
(let [conn (db-test/create-conn)]
153+
(d/transact! conn [[:db/add :logseq.class/Journal :logseq.property.journal/title-format "yyyy-MM-dd EEEE"]])
154+
(let [[_ page-uuid] (outliner-page/create! conn "Dec 16th, 2024" {})
155+
page (d/entity @conn [:block/uuid page-uuid])
156+
journal-day (:block/journal-day page)
157+
expected-title (date-time-util/int->journal-title journal-day "yyyy-MM-dd EEEE")
158+
expected-name (-> journal-day
159+
(date-time-util/int->journal-title date-time-util/default-journal-title-formatter)
160+
common-util/page-name-sanity-lc)]
161+
(is (= expected-title (:block/title page))
162+
"Journal title follows configured title format")
163+
(is (= expected-name (:block/name page))
164+
"Journal block/name keeps the default formatter for stable identity"))))
165+
148166
(deftest built-in-tag-must-not-convert-page-child-block-to-class-test
149167
(let [conn (db-test/create-conn-with-blocks
150168
{:pages-and-blocks [{:page {:block/title "page1"}}]})

0 commit comments

Comments
 (0)