Переглянути джерело

update infinite scroll example

Falko Schindler 2 роки тому
батько
коміт
b03f0a9301
2 змінених файлів з 9 додано та 8 видалено
  1. 4 5
      examples/infinite_scroll/main.py
  2. 5 3
      nicegui/timer.py

+ 4 - 5
examples/infinite_scroll/main.py

@@ -1,16 +1,15 @@
 #!/usr/bin/env python3
 import time
 
-from nicegui import ui
+from nicegui import Client, ui
 
 
 @ui.page('/')
-def page():
+async def page(client: Client):
     async def check():
-        response = await ui.run_javascript('window.pageYOffset >= document.body.offsetHeight - 2 * window.innerHeight')
-        if list(response.values())[0]:
+        if await ui.run_javascript('window.pageYOffset >= document.body.offsetHeight - 2 * window.innerHeight'):
             ui.image(f'https://picsum.photos/640/360?{time.time()}')
-    yield
+    await client.handshake()
     ui.timer(0.1, check)
 
 

+ 5 - 3
nicegui/timer.py

@@ -29,6 +29,7 @@ class Timer:
         self.interval = interval
         self.callback = callback
         self.active = active
+        self.client = globals.client_stack[-1]
 
         coroutine = self._run_once if once else self._run_in_loop
         if globals.state == globals.State.STARTED:
@@ -56,8 +57,9 @@ class Timer:
 
     async def _invoke_callback(self) -> None:
         try:
-            result = self.callback()
-            if is_coroutine(self.callback):
-                await result
+            with self.client:
+                result = self.callback()
+                if is_coroutine(self.callback):
+                    await result
         except Exception:
             traceback.print_exc()