Fix event verification and deserialization in process_event

This commit is contained in:
openhands 2025-01-10 01:45:43 +00:00
parent 5e08737cc1
commit 1f3f480c87

View file

@ -145,9 +145,31 @@ fn process_message(app: &mut Hoot, msg: &relay::RelayMessage) {
}
fn process_event(app: &mut Hoot, _sub_id: &str, event: &str) {
fn process_event(app: &mut Hoot, _sub_id: &str, event_json: &str) {
#[cfg(feature = "profiling")]
puffin::profile_function!();
// The event comes in a JSON array format ["EVENT", subscription_id, event_json]
// We need to parse out the actual event JSON
if let Ok(json_value) = serde_json::from_str::<serde_json::Value>(event_json) {
if let Some(array) = json_value.as_array() {
if array.len() >= 3 {
if let Ok(event) = serde_json::from_value::<nostr::Event>(array[2].clone()) {
// Verify the event signature
if event.verify().is_ok() {
debug!("Verified event: {:?}", event);
app.events.push(event);
} else {
error!("Event verification failed");
}
} else {
error!("Failed to parse event JSON");
}
}
}
} else {
error!("Failed to parse relay message JSON: {}", event_json);
}
}
fn render_app(app: &mut Hoot, ctx: &egui::Context) {