Fix server side events (#465)
This commit is contained in:
parent
07289c8735
commit
d24e12d9c4
@ -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})
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -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(
|
||||
|
Loading…
Reference in New Issue
Block a user