浏览代码

refactor(srs): use cljc-fsrs in db-version

rcmerci 1 年之前
父节点
当前提交
ccf70a5cef
共有 5 个文件被更改,包括 39 次插入2 次删除
  1. 7 1
      deps.edn
  2. 5 1
      deps/db/src/logseq/db/frontend/property.cljs
  3. 3 0
      package.json
  4. 9 0
      src/main/frontend/extensions/fsrs.cljs
  5. 15 0
      yarn.lock

+ 7 - 1
deps.edn

@@ -40,7 +40,13 @@
   metosin/malli                         {:mvn/version "0.16.1"}
   com.cognitect/transit-cljs            {:mvn/version "0.8.280"}
   missionary/missionary                 {:mvn/version "b.39"}
-  meander/epsilon                       {:mvn/version "0.0.650"}}
+  meander/epsilon                       {:mvn/version "0.0.650"}
+
+  io.github.open-spaced-repetition/cljc-fsrs {:git/sha "0e70e96a73cf63c85dcc2df4d022edf12806b239"
+                                              ;; TODO: use https://github.com/open-spaced-repetition/cljc-fsrs
+                                              ;; when PR merged
+                                              ;; https://github.com/open-spaced-repetition/cljc-fsrs/pull/5
+                                              :git/url "https://github.com/rcmerci/cljc-fsrs"}}
 
  :aliases {:cljs {:extra-paths ["src/dev-cljs/" "src/test/" "src/electron/"]
                   :extra-deps  {org.clojure/clojurescript        {:mvn/version "1.11.132"}

+ 5 - 1
deps/db/src/logseq/db/frontend/property.cljs

@@ -222,7 +222,11 @@
    :logseq.property.asset/remote-metadata {:schema
                                            {:type :map
                                             :hide? true
-                                            :public? false}}))
+                                            :public? false}}
+   :logseq.property/fsrs-state {:schema
+                                {:type :map
+                                 :hide? true
+                                 :public? false}}))
 
 (def built-in-properties
   (->> built-in-properties*

+ 3 - 0
package.json

@@ -106,6 +106,9 @@
         "@glidejs/glide": "^3.6.0",
         "@highlightjs/cdn-assets": "10.4.1",
         "@isomorphic-git/lightning-fs": "^4.6.0",
+        "@js-joda/core": "3.2.0",
+        "@js-joda/locale_en-us": "3.1.1",
+        "@js-joda/timezone": "2.5.0",
         "@logseq/capacitor-file-sync": "5.0.2",
         "@logseq/diff-merge": "0.2.2",
         "@logseq/react-tweet-embed": "1.3.1-1",

+ 9 - 0
src/main/frontend/extensions/fsrs.cljs

@@ -0,0 +1,9 @@
+(ns frontend.extensions.fsrs
+  (:require [open-spaced-repetition.cljc-fsrs.core :as fsrs.core]))
+
+
+(defn fsrs-card->property-fsrs-state
+  [fsrs-card]
+  (-> fsrs-card
+      (update :last-repeat #(js/Date. %))
+      (update :due #(js/Date. %))))

+ 15 - 0
yarn.lock

@@ -552,6 +552,21 @@
     "@jridgewell/resolve-uri" "^3.1.0"
     "@jridgewell/sourcemap-codec" "^1.4.14"
 
+"@js-joda/[email protected]":
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/@js-joda/core/-/core-3.2.0.tgz#3e61e21b7b2b8a6be746df1335cf91d70db2a273"
+  integrity sha512-PMqgJ0sw5B7FKb2d5bWYIoxjri+QlW/Pys7+Rw82jSH0QN3rB05jZ/VrrsUdh1w4+i2kw9JOejXGq/KhDOX7Kg==
+
+"@js-joda/[email protected]":
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/@js-joda/locale_en-us/-/locale_en-us-3.1.1.tgz#c2eab2561aa048f5366046edd313ce94108263c6"
+  integrity sha512-EYrs4h0Um/9LqcEwDb0kGTHGaGkJgEO2cj78KKICPz7hsdvJHPOADIkDtjesYInZ1YkNrtE3HopnfETLDBvnWg==
+
+"@js-joda/[email protected]":
+  version "2.5.0"
+  resolved "https://registry.yarnpkg.com/@js-joda/timezone/-/timezone-2.5.0.tgz#b422ff400c25ae311384239c62724eecee2e442b"
+  integrity sha512-HHFVhGUKIOtITiT+sbQRdYuO5Q+a8FDj/vQSGUSxe6+5w2in5JsavfRsAN2tU/NCdBeFx/6q8evHMtOrXfdn2g==
+
 "@logseq/[email protected]":
   version "5.0.2"
   resolved "https://registry.yarnpkg.com/@logseq/capacitor-file-sync/-/capacitor-file-sync-5.0.2.tgz#10c56e35b41b1a0afd293c9b045fbcfe150c3477"