|
38 | 38 |
|
39 | 39 | ;; (defn datoms->json [datoms]
|
40 | 40 | ;; (reduce
|
41 |
| -;; (fn [acc {:keys [e a v]}] |
| 41 | +;; (fn [acc {:keys [e a v]}] |
42 | 42 | ;; (assoc-in acc [e (namespace a) (name a)] v))
|
43 | 43 | ;; {} datoms))
|
44 | 44 |
|
|
153 | 153 | #(swap! cache-conn hbc/dissoc-q query reactive-lookup-uid))
|
154 | 154 | #js [])
|
155 | 155 | #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 | + |
157 | 207 | (defn ^:export useTransact []
|
158 | 208 | (let [{:strs [db-conn]} (js->clj (react/useContext homebase-context))
|
159 | 209 | transact (react/useCallback
|
160 | 210 | (fn transact [tx] (try-hook "useTransact" #(hbjs/transact! db-conn tx)))
|
161 | 211 | #js [])]
|
162 | 212 | #js [transact]))
|
163 |
| - |
|
0 commit comments