|
@@ -5,6 +5,7 @@ import inspect
|
|
import time
|
|
import time
|
|
import types
|
|
import types
|
|
import uuid
|
|
import uuid
|
|
|
|
+from dataclasses import dataclass
|
|
from functools import wraps
|
|
from functools import wraps
|
|
from typing import Callable, Dict, Generator, List, Optional
|
|
from typing import Callable, Dict, Generator, List, Optional
|
|
|
|
|
|
@@ -22,6 +23,11 @@ from .page_builder import PageBuilder
|
|
from .routes import add_route, convert_arguments
|
|
from .routes import add_route, convert_arguments
|
|
|
|
|
|
|
|
|
|
|
|
+@dataclass
|
|
|
|
+class PageEvent:
|
|
|
|
+ socket: WebSocket
|
|
|
|
+
|
|
|
|
+
|
|
class Page(jp.QuasarPage):
|
|
class Page(jp.QuasarPage):
|
|
|
|
|
|
def __init__(self,
|
|
def __init__(self,
|
|
@@ -50,7 +56,7 @@ class Page(jp.QuasarPage):
|
|
self.css = css
|
|
self.css = css
|
|
self.connect_handler = on_connect
|
|
self.connect_handler = on_connect
|
|
self.page_ready_handler = on_page_ready
|
|
self.page_ready_handler = on_page_ready
|
|
- self.page_ready_generator: Optional[Generator[None, None, None]] = None
|
|
|
|
|
|
+ self.page_ready_generator: Optional[Generator[None, PageEvent, None]] = None
|
|
self.disconnect_handler = on_disconnect
|
|
self.disconnect_handler = on_disconnect
|
|
self.shared = shared
|
|
self.shared = shared
|
|
self.delete_flag = not shared
|
|
self.delete_flag = not shared
|
|
@@ -89,9 +95,9 @@ class Page(jp.QuasarPage):
|
|
with globals.within_view(self.view):
|
|
with globals.within_view(self.view):
|
|
if self.page_ready_generator is not None:
|
|
if self.page_ready_generator is not None:
|
|
if isinstance(self.page_ready_generator, types.AsyncGeneratorType):
|
|
if isinstance(self.page_ready_generator, types.AsyncGeneratorType):
|
|
- await self.page_ready_generator.asend(msg.websocket)
|
|
|
|
|
|
+ await self.page_ready_generator.asend(PageEvent(msg.websocket))
|
|
elif isinstance(self.page_ready_generator, types.GeneratorType):
|
|
elif isinstance(self.page_ready_generator, types.GeneratorType):
|
|
- self.page_ready_generator.send(msg.websocket)
|
|
|
|
|
|
+ self.page_ready_generator.send(PageEvent(msg.websocket))
|
|
if self.page_ready_handler:
|
|
if self.page_ready_handler:
|
|
arg_count = len(inspect.signature(self.page_ready_handler).parameters)
|
|
arg_count = len(inspect.signature(self.page_ready_handler).parameters)
|
|
is_coro = is_coroutine(self.page_ready_handler)
|
|
is_coro = is_coroutine(self.page_ready_handler)
|