Skip to content

Commit c086d75

Browse files
committed
refactor(react): move useentity to new cache
1 parent 14fa513 commit c086d75

File tree

1 file changed

+52
-3
lines changed

1 file changed

+52
-3
lines changed

src/homebase/react.cljs

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
;; (defn datoms->json [datoms]
4040
;; (reduce
41-
;; (fn [acc {:keys [e a v]}]
41+
;; (fn [acc {:keys [e a v]}]
4242
;; (assoc-in acc [e (namespace a) (name a)] v))
4343
;; {} datoms))
4444

@@ -153,11 +153,60 @@
153153
#(swap! cache-conn hbc/dissoc-q query reactive-lookup-uid))
154154
#js [])
155155
#js [result]))
156-
156+
157+
;; (defn ^:export useEntity [lookup]
158+
;; (let [{:strs [db-conn]} (js->clj (react/useContext homebase-context))
159+
;; cached-entities (react/useMemo #(atom {}) #js [])
160+
;; run-lookup (react/useCallback
161+
;; (fn run-lookup []
162+
;; (touch-entity-cache
163+
;; (try-hook "useEntity" #(hbjs/entity db-conn lookup))
164+
;; cached-entities))
165+
;; #js [lookup])
166+
;; [result setResult] (react/useState (run-lookup))
167+
;; listener (react/useCallback
168+
;; (fn entity-listener []
169+
;; (let [result (run-lookup)]
170+
;; (when (changed? #js [result] @cached-entities false)
171+
;; (setResult result))))
172+
;; #js [run-lookup])]
173+
;; (react/useEffect
174+
;; (fn use-entity-effect []
175+
;; (let [key (rand)]
176+
;; (d/listen! db-conn key listener)
177+
;; #(d/unlisten! db-conn key)))
178+
;; #js [lookup])
179+
;; #js [result]))
180+
181+
;; (defn ^:export useQuery [query & args]
182+
;; (let [{:strs [db-conn]} (js->clj (react/useContext homebase-context))
183+
;; cached-entities (react/useMemo #(atom {}) #js [])
184+
;; run-query (react/useCallback
185+
;; (fn run-query []
186+
;; (let [result (try-hook "useQuery" #(apply hbjs/q query db-conn args))]
187+
;; (when (and (not= (count result) (count @cached-entities))
188+
;; (not= 0 (count result)))
189+
;; (reset! cached-entities {}))
190+
;; (.map result (fn [e] (touch-entity-cache e cached-entities)))))
191+
;; #js [query args])
192+
;; [result setResult] (react/useState (run-query))
193+
;; listener (react/useCallback
194+
;; (fn query-listener []
195+
;; (let [result (run-query)]
196+
;; (when (changed? result @cached-entities true)
197+
;; (setResult result))))
198+
;; #js [run-query])]
199+
;; (react/useEffect
200+
;; (fn use-query-effect []
201+
;; (let [key (rand)]
202+
;; (d/listen! db-conn key listener)
203+
;; #(d/unlisten! db-conn key)))
204+
;; #js [query args])
205+
;; #js [result]))
206+
157207
(defn ^:export useTransact []
158208
(let [{:strs [db-conn]} (js->clj (react/useContext homebase-context))
159209
transact (react/useCallback
160210
(fn transact [tx] (try-hook "useTransact" #(hbjs/transact! db-conn tx)))
161211
#js [])]
162212
#js [transact]))
163-

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy