From 48125c3edc685605cab1932c02c5dec220f46c66 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 9 Jan 2024 16:32:43 +0800 Subject: [PATCH] fix: transact today's journal tx-data iff it doesn't exists yet --- src/main/frontend/db_worker.cljs | 13 ++++++++----- src/main/frontend/handler/events.cljs | 7 +++++-- src/main/frontend/handler/page.cljs | 10 ++++++---- src/main/frontend/worker/handler/page.cljs | 7 +++++-- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/main/frontend/db_worker.cljs b/src/main/frontend/db_worker.cljs index 8938e9b63d..c9391cef3e 100644 --- a/src/main/frontend/db_worker.cljs +++ b/src/main/frontend/db_worker.cljs @@ -270,11 +270,14 @@ context (if (string? context) (edn/read-string context) context) - _ (when context (state/set-context! context)) - tx-meta' (if (or (:from-disk? tx-meta) (:new-graph? tx-meta)) - tx-meta - (assoc tx-meta :skip-store? true)) - _tx-report (ldb/transact! conn tx-data tx-meta')] + _ (when context (state/set-context! context))] + (when-not (and (:create-today-journal? tx-meta) + (:today-journal-name tx-meta) + (d/entity @conn [:block/name (:today-journal-name tx-meta)])) ; today journal created already + (let [tx-meta' (if (or (:from-disk? tx-meta) (:new-graph? tx-meta)) + tx-meta + (assoc tx-meta :skip-store? true))] + (ldb/transact! conn tx-data tx-meta'))) nil) (catch :default e (prn :debug :error) diff --git a/src/main/frontend/handler/events.cljs b/src/main/frontend/handler/events.cljs index f9a93000c7..09b6430174 100644 --- a/src/main/frontend/handler/events.cljs +++ b/src/main/frontend/handler/events.cljs @@ -77,7 +77,8 @@ [frontend.persist-db.browser :as db-browser] [frontend.db.rtc.debug-ui :as rtc-debug-ui] [frontend.modules.outliner.pipeline :as pipeline] - [electron.ipc :as ipc])) + [electron.ipc :as ipc] + [frontend.date :as date])) ;; TODO: should we move all events here? @@ -347,7 +348,9 @@ (page-handler/rename! old-title new-title)) (defmethod handle :page/create [[_ page-name opts]] - (page-handler/create! page-name opts)) + (if (= page-name (date/today)) + (page-handler/create-today-journal!) + (page-handler/create! page-name opts))) (defmethod handle :page/deleted [[_ repo page-name file-path]] (page-common-handler/after-page-deleted! repo page-name file-path)) diff --git a/src/main/frontend/handler/page.cljs b/src/main/frontend/handler/page.cljs index 619a5b854d..67e42194be 100644 --- a/src/main/frontend/handler/page.cljs +++ b/src/main/frontend/handler/page.cljs @@ -286,10 +286,12 @@ (create! title {:redirect? false :split-namespace? false :create-first-block? (not template) - :journal? true}) - (state/pub-event! [:journal/insert-template today-page]) - (ui-handler/re-render-root!) - (plugin-handler/hook-plugin-app :today-journal-created {:title today-page}))] + :journal? true + :today-journal? true}) + (js/setTimeout #(do + (state/pub-event! [:journal/insert-template today-page]) + (ui-handler/re-render-root!) + (plugin-handler/hook-plugin-app :today-journal-created {:title today-page})) 100))] (when (db/page-empty? repo today-page) (if (config/db-based-graph? repo) (let [page-exists (db/get-page today-page)] diff --git a/src/main/frontend/worker/handler/page.cljs b/src/main/frontend/worker/handler/page.cljs index b73077caba..a490ba391e 100644 --- a/src/main/frontend/worker/handler/page.cljs +++ b/src/main/frontend/worker/handler/page.cljs @@ -58,7 +58,7 @@ * :persist-op? - when true, add an update-page op TODO: Add other options" [repo conn config title - & {:keys [create-first-block? format properties uuid persist-op? whiteboard? class?] + & {:keys [create-first-block? format properties uuid persist-op? whiteboard? class? today-journal?] :or {create-first-block? true format nil properties nil @@ -120,7 +120,10 @@ page-txs first-block-tx)] (when (seq txs) - (ldb/transact! conn txs {:persist-op? persist-op?}) + (ldb/transact! conn txs (cond-> {:persist-op? persist-op?} + today-journal? + (assoc :create-today-journal? true + :today-journal-name page-name))) page-name))))) (defn db-refs->page