Fix polling interval leak on SPA navigation
The poll trigger in bind-triggers called set-interval but discarded the interval ID, so polls continued firing after the element was removed from the DOM. Now the callback checks el.isConnected each tick and self-clears when the element is gone (HTMX-style cleanup). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -410,9 +410,20 @@
|
||||
(mods (get trigger "modifiers")))
|
||||
(cond
|
||||
(= kind "poll")
|
||||
(set-interval
|
||||
(fn () (execute-request el nil nil))
|
||||
(get mods "interval"))
|
||||
(let
|
||||
((interval-id nil))
|
||||
(set!
|
||||
interval-id
|
||||
(set-interval
|
||||
(fn
|
||||
()
|
||||
(if
|
||||
(host-get el "isConnected")
|
||||
(execute-request el nil nil)
|
||||
(do
|
||||
(clear-interval interval-id)
|
||||
(log-info "poll stopped: element removed"))))
|
||||
(get mods "interval"))))
|
||||
(= kind "intersect")
|
||||
(observe-intersection
|
||||
el
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -410,9 +410,20 @@
|
||||
(mods (get trigger "modifiers")))
|
||||
(cond
|
||||
(= kind "poll")
|
||||
(set-interval
|
||||
(fn () (execute-request el nil nil))
|
||||
(get mods "interval"))
|
||||
(let
|
||||
((interval-id nil))
|
||||
(set!
|
||||
interval-id
|
||||
(set-interval
|
||||
(fn
|
||||
()
|
||||
(if
|
||||
(host-get el "isConnected")
|
||||
(execute-request el nil nil)
|
||||
(do
|
||||
(clear-interval interval-id)
|
||||
(log-info "poll stopped: element removed"))))
|
||||
(get mods "interval"))))
|
||||
(= kind "intersect")
|
||||
(observe-intersection
|
||||
el
|
||||
|
||||
Reference in New Issue
Block a user