radrootsd

JSON-RPC bridge for Radroots event publishing
git clone https://radroots.dev/git/radrootsd.git
Log | Files | Refs | README | LICENSE

commit e2abe47d6e5037f2b84a54a0d3d31b9d6d560f37
parent ee3ce81e2358a549eef6dab5f5be2720c2b2434a
Author: triesap <triesap@radroots.dev>
Date:   Sun,  4 Jan 2026 00:55:43 +0000

jsonrpc: include profile type when publishing profile events

- Add profile_type to PublishProfileParams for RPC input
- Encode profile payload via to_wire_parts_with_profile_type
- Build event using radroots_nostr_build_event with kind/content/tags
- Improve build failure handling with contextual RpcError::Other

Diffstat:
Msrc/api/jsonrpc/methods/events/profile/publish.rs | 15+++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/api/jsonrpc/methods/events/profile/publish.rs b/src/api/jsonrpc/methods/events/profile/publish.rs @@ -5,16 +5,17 @@ use serde::Deserialize; use crate::api::jsonrpc::nostr::{publish_response, PublishResponse}; use crate::api::jsonrpc::{MethodRegistry, RpcContext, RpcError}; -use radroots_events::profile::RadrootsProfile; -use radroots_events_codec::profile::encode::to_metadata; +use radroots_events::profile::{RadrootsProfile, RadrootsProfileType}; +use radroots_events_codec::profile::encode::to_wire_parts_with_profile_type; use radroots_nostr::prelude::{ - radroots_nostr_build_metadata_event, + radroots_nostr_build_event, radroots_nostr_send_event, }; #[derive(Debug, Deserialize)] struct PublishProfileParams { profile: RadrootsProfile, + profile_type: RadrootsProfileType, } pub fn register(m: &mut RpcModule<RpcContext>, registry: &MethodRegistry) -> Result<()> { @@ -25,12 +26,14 @@ pub fn register(m: &mut RpcModule<RpcContext>, registry: &MethodRegistry) -> Res return Err(RpcError::NoRelays); } - let PublishProfileParams { profile } = params + let PublishProfileParams { profile, profile_type } = params .parse() .map_err(|e| RpcError::InvalidParams(e.to_string()))?; - let metadata = to_metadata(&profile).map_err(|e| RpcError::InvalidParams(e.to_string()))?; - let builder = radroots_nostr_build_metadata_event(&metadata); + let parts = to_wire_parts_with_profile_type(&profile, Some(profile_type)) + .map_err(|e| RpcError::InvalidParams(e.to_string()))?; + let builder = radroots_nostr_build_event(parts.kind, parts.content, parts.tags) + .map_err(|e| RpcError::Other(format!("failed to build profile event: {e}")))?; let output = radroots_nostr_send_event(&ctx.state.client, builder) .await