enhance: make ui reactive when favorites updated

pull/10981/head
rcmerci 2024-01-31 23:49:12 +08:00
parent f6e9e2630f
commit 0b52f8ad58
3 changed files with 33 additions and 21 deletions

View File

@ -132,7 +132,8 @@
(rum/defc favorites < rum/reactive
[t]
(let [favorite-entities (page-handler/get-favorites)]
(let [_favorites-updated? (state/sub :favorites/updated?)
favorite-entities (page-handler/get-favorites)]
(nav-content-item
[:a.flex.items-center.text-sm.font-medium.rounded-md.wrap-th
(ui/icon "star" {:size 16})

View File

@ -49,21 +49,25 @@
(defn <unfavorite-page!
[page-name]
(let [repo (state/get-current-repo)]
(if (config/db-based-graph? repo)
(let [db (conn/get-db)]
(when-let [page-block-uuid (:block/uuid (d/entity db [:block/name (common-util/page-name-sanity-lc page-name)]))]
(page-common-handler/<unfavorite-page!-v2 page-block-uuid)))
(page-common-handler/unfavorite-page! page-name))))
(p/do!
(let [repo (state/get-current-repo)]
(if (config/db-based-graph? repo)
(let [db (conn/get-db)]
(when-let [page-block-uuid (:block/uuid (d/entity db [:block/name (common-util/page-name-sanity-lc page-name)]))]
(page-common-handler/<unfavorite-page!-v2 page-block-uuid)))
(page-common-handler/unfavorite-page! page-name)))
(state/update-favorites-updated!)))
(defn <favorite-page!
[page-name]
(let [repo (state/get-current-repo)]
(if (config/db-based-graph? repo)
(let [db (conn/get-db)]
(when-let [page-block-uuid (:block/uuid (d/entity db [:block/name (common-util/page-name-sanity-lc page-name)]))]
(page-common-handler/<favorite-page!-v2 page-block-uuid)))
(page-common-handler/favorite-page! page-name))))
(p/do!
(let [repo (state/get-current-repo)]
(if (config/db-based-graph? repo)
(let [db (conn/get-db)]
(when-let [page-block-uuid (:block/uuid (d/entity db [:block/name (common-util/page-name-sanity-lc page-name)]))]
(page-common-handler/<favorite-page!-v2 page-block-uuid)))
(page-common-handler/favorite-page! page-name)))
(state/update-favorites-updated!)))
(defn favorited?
[page-name]
@ -145,13 +149,14 @@
favorites)
current-blocks (ldb/sort-by-left (ldb/get-page-blocks @conn page-common-handler/favorites-page-name {})
favorites-page-entity)]
(prn :favorite-page-block-db-id-coll favorite-page-block-db-id-coll)
(ui-outliner-tx/transact!
{}
(doseq [[page-block-db-id block] (zipmap favorite-page-block-db-id-coll current-blocks)]
(when (not= page-block-db-id (:db/id (:block/link block)))
(outliner-core/save-block! repo conn (state/get-date-formatter)
(assoc block :block/link page-block-db-id)))))))))
(p/do!
(ui-outliner-tx/transact!
{}
(doseq [[page-block-db-id block] (zipmap favorite-page-block-db-id-coll current-blocks)]
(when (not= page-block-db-id (:db/id (:block/link block)))
(outliner-core/save-block! repo conn (state/get-date-formatter)
(assoc block :block/link page-block-db-id)))))
(state/update-favorites-updated!))))))
(defn has-more-journals?
[]

View File

@ -307,7 +307,9 @@
:history/tx->editor-cursor (atom {})
:system/info {}
;; Whether block is selected
:ui/select-query-cache (atom {})})))
:ui/select-query-cache (atom {})
:favorites/updated? (atom 0)})))
;; Block ast state
;; ===============
@ -2369,3 +2371,7 @@ Similar to re-frame subscriptions"
(when (and max-tx-id (nil? (:after (get @(:history/tx->editor-cursor @state) max-tx-id))))
(update-state! :history/tx->editor-cursor
(fn [m] (assoc-in m [max-tx-id :after] editor-cursor))))))
(defn update-favorites-updated!
[]
(update-state! :favorites/updated? inc))