diff --git a/pynecone/.templates/web/utils/state.js b/pynecone/.templates/web/utils/state.js index ddc3308756..388b737a8d 100644 --- a/pynecone/.templates/web/utils/state.js +++ b/pynecone/.templates/web/utils/state.js @@ -68,22 +68,24 @@ export const applyDelta = (state, delta) => { * @param event The event to send. * @param router The router object. * @param socket The socket object to send the event on. + * + * @returns True if the event was sent, false if it was handled locally. */ export const applyEvent = async (event, router, socket) => { // Handle special events if (event.name == "_redirect") { router.push(event.payload.path); - return; + return false; } if (event.name == "_console") { console.log(event.payload.message); - return; + return false; } if (event.name == "_alert") { alert(event.payload.message); - return; + return false; } // Send the event to the server. @@ -91,7 +93,10 @@ export const applyEvent = async (event, router, socket) => { event.router_data = (({ pathname, query }) => ({ pathname, query }))(router); if (socket) { socket.emit("event", JSON.stringify(event)); + return true; } + + return false; }; /** @@ -119,7 +124,11 @@ export const updateState = async (state, setState, result, setResult, router, so setState({ ...state, events: state.events }); // Apply the event. - await applyEvent(event, router, socket); + const eventSent = await applyEvent(event, router, socket); + if (!eventSent) { + // If no event was sent, set processing to false and return. + setResult({...state, processing: false}) + } }; /** diff --git a/pynecone/utils.py b/pynecone/utils.py index 6d2a26392d..be7720cf19 100644 --- a/pynecone/utils.py +++ b/pynecone/utils.py @@ -1304,11 +1304,6 @@ def fix_events(events: Optional[List[Event]], token: str) -> List[Event]: name = format_event_handler(e.handler) payload = dict(e.args) - # Remove any extra quotes introduced by json.dumps(..) and escape the characters. - for k, v in payload.items(): - if isinstance(v, str): - payload[k] = json.loads(v) - # Create an event and append it to the list. out.append( Event(