fix: use templ.NewOnceHandle to prevent script duplication on SSE patches
Replace ConnectionIndicatorWithScript wrapper with a single ConnectionIndicator component that uses templ.NewOnceHandle() to ensure the watcher script is only rendered once per page, even when the indicator is patched via SSE.
This commit is contained in:
@@ -52,6 +52,8 @@ func isStale(lastPing int64) bool {
|
|||||||
return lastPing == 0
|
return lastPing == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var connectionWatcherHandle = templ.NewOnceHandle()
|
||||||
|
|
||||||
// ConnectionIndicator shows a small dot indicating SSE connection status.
|
// ConnectionIndicator shows a small dot indicating SSE connection status.
|
||||||
// Server patches this with a timestamp; client JS detects staleness.
|
// Server patches this with a timestamp; client JS detects staleness.
|
||||||
templ ConnectionIndicator(lastPing int64) {
|
templ ConnectionIndicator(lastPing int64) {
|
||||||
@@ -79,7 +81,9 @@ templ ConnectionIndicator(lastPing int64) {
|
|||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@connectionWatcher()
|
@connectionWatcherHandle.Once() {
|
||||||
|
@connectionWatcher()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
script connectionWatcher() {
|
script connectionWatcher() {
|
||||||
|
|||||||
Reference in New Issue
Block a user