fix(srs): :due's value is number instead of ref now

This commit is contained in:
rcmerci
2024-09-22 15:37:53 +08:00
parent 5130ec3fd2
commit 8a3ca446b0

View File

@@ -40,7 +40,7 @@
(when (some (fn [tag] (= :logseq.class/Card (:db/ident tag))) ;block should contains #Card
(:block/tags block-entity))
(let [fsrs-state (:logseq.property.fsrs/state block-entity)
fsrs-due (:property.value/content (:logseq.property.fsrs/due block-entity))
fsrs-due (:logseq.property.fsrs/due block-entity)
return-default-card-map? (not (and fsrs-state fsrs-due))]
(if return-default-card-map?
(if-let [block-created-at (some-> (:block/created-at block-entity) (js/Date.) tick/instant)]
@@ -74,8 +74,7 @@
[?b :block/tags :logseq.class/Card]
(or-join [?b ?now-inst-ms]
(and
[?b :logseq.property.fsrs/due ?due-b]
[?due-b :property.value/content ?due]
[?b :logseq.property.fsrs/due ?due]
[(>= ?now-inst-ms ?due)])
[(missing? $ ?b :logseq.property.fsrs/due)])
[?b :block/uuid]]
@@ -97,20 +96,19 @@
{:init :show-answer
:show-answer :init})
(rum/defcs ^:private card <
(rum/local :init ::phase)
[state repo block-entity]
(let [*phase (::phase state)
show-btn? (contains? #{:show-answer} @*phase)]
(rum/defcs ^:private card < rum/reactive
[state repo block-entity *phase]
(let [phase (rum/react *phase)
show-btn? (contains? #{:show-answer} phase)]
[:div.ls-card.content
[:div (component-block/breadcrumb {} repo (:block/uuid block-entity) {})]
(component-block/blocks-container
(cond-> {}
(contains? #{:init} @*phase) (assoc :hide-children? true))
(contains? #{:init} phase) (assoc :hide-children? true))
[block-entity])
(btn-with-shortcut {:btn-text (t (if show-btn?
:flashcards/modal-btn-show-answers
:flashcards/modal-btn-hide-answers))
:flashcards/modal-btn-hide-answers
:flashcards/modal-btn-show-answers))
:shortcut "s"
:id (str "card-answers")
:on-click #(swap! *phase phase->next-phase)})]))
@@ -131,14 +129,15 @@
:easy "4"})
(defn- rating-btns
[repo block-id *card-index]
[repo block-id *card-index *phase]
(mapv
(fn [rating]
(btn-with-shortcut {:btn-text (name rating)
:shortcut (rating->shortcut rating)
:id (str "card-" (name rating))
:on-click #(do (repeat-card! repo block-id rating)
(swap! *card-index inc))}))
(swap! *card-index inc)
(reset! *phase :init))}))
(keys rating->shortcut)))
(declare update-due-cards-count)
@@ -150,10 +149,11 @@
[state]
(let [repo (state/get-current-repo)
block-ids (get-due-card-block-ids repo)
*card-index (::card-index state)]
*card-index (::card-index state)
*phase (atom :init)]
(if-let [block-entity (some-> (nth block-ids @*card-index nil) db/entity)]
(vec (concat [:div (card repo block-entity)]
(rating-btns repo (:db/id block-entity) *card-index)))
(vec (concat [:div (card repo block-entity *phase)]
(rating-btns repo (:db/id block-entity) *card-index *phase)))
[:p.p-2 (t :flashcards/modal-finished)])))
(defonce ^:private *last-update-due-cards-count-canceler (atom nil))