runs queue order manipulation and whitespace tightnening

This commit is contained in:
Abel Luck 2026-03-31 10:23:46 +02:00
parent a88eba7dd1
commit 99fd33f770
10 changed files with 478 additions and 121 deletions

View file

@ -47,13 +47,20 @@ def _publish_event(queue: asyncio.Queue[object], event: object) -> None:
async def render_sse_event(
render: RenderFunction, *, last_event_id: str | None = None
render: RenderFunction,
*,
last_event_id: str | None = None,
use_view_transition: bool = False,
) -> tuple[str | None, DatastarEvent | None]:
html = _coerce_html(await render())
event_id = _render_hash(html)
if event_id == last_event_id:
return last_event_id, None
return event_id, SSE.patch_elements(html, event_id=event_id)
return event_id, SSE.patch_elements(
html,
event_id=event_id,
use_view_transition=use_view_transition,
)
async def render_stream(
@ -71,9 +78,11 @@ async def render_stream(
yield event
while True:
await queue.get()
event_name = await queue.get()
last_event_id, event = await render_sse_event(
render, last_event_id=last_event_id
render,
last_event_id=last_event_id,
use_view_transition=event_name == "queue-reordered",
)
if event is not None:
yield event