feat: instant sync — push on write, pull on reconnect, render from cache
- Add kick-ch to SyncedAtom: swap!/reset! trigger immediate push
instead of waiting for the 15s sync loop interval
- SSE: pull on reconnect ("connected" message), not just on new events,
so coming back online picks up missed server changes
- TodoMVC: render and bind events before IDB load completes; the watch
re-renders automatically when cached data arrives
This commit is contained in:
@@ -247,18 +247,16 @@
|
||||
:interval 15000})]
|
||||
(reset! !conn conn)
|
||||
(reset! !todos todos)
|
||||
;; Wait for IDB load
|
||||
(<! (pb/ready? todos))
|
||||
;; Initial render
|
||||
;; Render + bind immediately (empty or stale is fine)
|
||||
(render!)
|
||||
(bind-events!)
|
||||
;; Re-render on any data change
|
||||
;; Re-render on any data change (fires when IDB loads + server syncs)
|
||||
(add-watch todos :render (fn [_ _ _ _] (render!)))
|
||||
;; Re-render on filter change
|
||||
(add-watch !filter :render (fn [_ _ _ _] (render!)))
|
||||
;; Online/offline status updates
|
||||
(.addEventListener js/window "online" (fn [_] (render!)))
|
||||
(.addEventListener js/window "offline" (fn [_] (render!)))
|
||||
;; Wait for IDB — watch triggers render automatically
|
||||
(<! (pb/ready? todos))
|
||||
(js/console.log "🔶 Pocketbook TodoMVC loaded —" (count @todos) "todos"))))
|
||||
|
||||
(init)
|
||||
|
||||
Reference in New Issue
Block a user