use crate::bindings::vtx::api::vtx_event_bus;
use crate::error::{VtxError, VtxResult};
pub fn publish_raw(topic: &str, payload_json: &str) -> VtxResult<()> {
vtx_event_bus::publish_event(topic, payload_json).map_err(|e| {
if e.to_lowercase().contains("invalid event payload") {
VtxError::SerializationError(e)
} else {
VtxError::from_host_message(e)
}
})
}
pub fn publish_json<T: serde::Serialize>(topic: &str, payload: &T) -> VtxResult<()> {
let payload_json =
serde_json::to_string(payload).map_err(|e| VtxError::SerializationError(e.to_string()))?;
publish_raw(topic, &payload_json)
}