diff --git a/crates/seed-keeper-wit-ui/src/output.rs b/crates/seed-keeper-wit-ui/src/output.rs index 5bf8a3f..1950416 100644 --- a/crates/seed-keeper-wit-ui/src/output.rs +++ b/crates/seed-keeper-wit-ui/src/output.rs @@ -37,7 +37,23 @@ impl Output { } match get_encrypted() { - Ok(encrypted) => Value::from(encrypted), + Ok(encrypted) => { + // if serde feature, emit the serialized encrypted seed as an event + #[cfg(feature = "serde")] + { + use crate::wurbo_in::emit; + // set seed in events::Events::Encrypted to emit it + let encr_evt = + events::Contexts::Events(events::Event::Encrypted(encrypted.clone())); + // serialize the event + let serialized = serde_json::to_string(&encr_evt).unwrap(); + println!("serialized Encrypted Event: {}", serialized); + // emit the event + emit(&serialized); + } + + Value::from(encrypted) + } Err(e) => Value::from(format!("Error in Output getting encrypted: {:?}", e)), } } diff --git a/crates/seed-keeper-wit-ui/wit/in.wit b/crates/seed-keeper-wit-ui/wit/in.wit index db14efb..ddded63 100644 --- a/crates/seed-keeper-wit-ui/wit/in.wit +++ b/crates/seed-keeper-wit-ui/wit/in.wit @@ -7,4 +7,7 @@ interface wurbo-in { // Add an event listener to the given element addeventlistener: func(details: listen-details); + // Emit events from this component. Messages should be serialized JSON strings of Event type. + emit: func(message: string); + }