|
@@ -4,7 +4,7 @@ from __future__ import annotations
|
|
|
from typing import TYPE_CHECKING, Optional
|
|
|
|
|
|
from pynecone import constants, utils
|
|
|
-from pynecone.event import Event
|
|
|
+from pynecone.event import Event, EventHandler
|
|
|
from pynecone.middleware.middleware import Middleware
|
|
|
from pynecone.state import Delta, State
|
|
|
|
|
@@ -34,8 +34,22 @@ class HydrateMiddleware(Middleware):
|
|
|
load_event = app.load_events.get(route.lstrip("/"))
|
|
|
else:
|
|
|
load_event = None
|
|
|
+
|
|
|
if load_event:
|
|
|
- substate_path = utils.format_event_handler(load_event).split(".")
|
|
|
- ex_state = state.get_substate(substate_path[:-1])
|
|
|
- load_event.fn(ex_state)
|
|
|
+ if isinstance(load_event, list):
|
|
|
+ for single_event in load_event:
|
|
|
+ self.execute_load_event(state, single_event)
|
|
|
+ else:
|
|
|
+ self.execute_load_event(state, load_event)
|
|
|
return utils.format_state({state.get_name(): state.dict()})
|
|
|
+
|
|
|
+ def execute_load_event(self, state: State, load_event: EventHandler) -> None:
|
|
|
+ """Execute single load event.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ state: The client state.
|
|
|
+ load_event: A single load event to execute.
|
|
|
+ """
|
|
|
+ substate_path = utils.format_event_handler(load_event).split(".")
|
|
|
+ ex_state = state.get_substate(substate_path[:-1])
|
|
|
+ load_event.fn(ex_state)
|