runs queue order manipulation and whitespace tightnening
This commit is contained in:
parent
a88eba7dd1
commit
99fd33f770
10 changed files with 478 additions and 121 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue