Skip to content

Commit

Permalink
hyperfiddle.forms0 -> hyperfiddle.cqrs0
Browse files Browse the repository at this point in the history
  • Loading branch information
dustingetz committed Sep 23, 2024
1 parent fb72a0b commit ebed440
Showing 1 changed file with 29 additions and 4 deletions.
33 changes: 29 additions & 4 deletions src/hyperfiddle/forms0.cljc → src/hyperfiddle/cqrs0.cljc
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
(ns hyperfiddle.forms0
#?(:cljs (:require-macros hyperfiddle.forms0))
(:require [contrib.str :refer [pprint-str]]
(ns hyperfiddle.cqrs0
#?(:cljs (:require-macros hyperfiddle.cqrs0))
(:require [contrib.data :refer [index-by]]
[contrib.str :refer [pprint-str]]
[hyperfiddle.electric3 :as e]
[hyperfiddle.electric-dom3 :as dom]
[hyperfiddle.input-zoo0 :refer [Button!]]))
Expand Down Expand Up @@ -47,4 +48,28 @@

(e/When debug
(dom/pre (dom/props {:style {:min-height "4em"}})
(dom/text (pprint-str batch :margin 80)))))))))
(dom/text (pprint-str batch :margin 80)))))))))

(e/defn Reconcile-records [stable-kf sort-key as bs]
(e/client
(let [as! (e/as-vec as) ; todo differential reconciliation
bs! (e/as-vec bs)]
(->> (merge
(index-by stable-kf as!)
(index-by stable-kf bs!))
vals
(sort-by sort-key)
#_(drop (count bs!)) ; todo fix glitch
(e/diff-by stable-kf)))))

(e/defn PendingController [kf sort-key edits xs]
(let [!pending (atom {}) ; [id -> prediction]
ps (val (e/diff-by key (e/watch !pending)))]
(e/for [[t xcmd predictions] edits]
(assert (= 1 (count predictions)))
(let [[id record] (first predictions)]
(prn 'pending-cmd xcmd)
(swap! !pending assoc id (assoc record ::pending true))
(e/on-unmount #(swap! !pending dissoc id))
(e/amb)))
(Reconcile-records kf sort-key xs ps)))

0 comments on commit ebed440

Please sign in to comment.