commit 4efa93fdcc0eb493d548499bc08c865d3169b5d1
parent 730d00d12603dba428f098430277caae1e38c076
Author: triesap <tyson@radroots.org>
Date: Wed, 24 Dec 2025 20:58:01 +0000
wasm: add follow tag builder export
- Import follow event type and tag encoder helpers
- Add JSON parser for RadrootsFollow payloads
- Expose follow_tags via wasm_bindgen js_name mapping
- Encode follow tags and serialize tag vectors to JSON
Diffstat:
1 file changed, 13 insertions(+), 0 deletions(-)
diff --git a/events-codec-wasm/src/lib.rs b/events-codec-wasm/src/lib.rs
@@ -1,7 +1,9 @@
#![cfg(target_arch = "wasm32")]
#![forbid(unsafe_code)]
+use radroots_events::follow::RadrootsFollow;
use radroots_events::listing::RadrootsListing;
+use radroots_events_codec::follow::encode::follow_build_tags;
use radroots_events_codec::listing::tags::{
listing_tags as listing_tags_impl,
listing_tags_full as listing_tags_full_impl,
@@ -16,6 +18,10 @@ fn parse_listing(listing_json: &str) -> Result<RadrootsListing, JsValue> {
serde_json::from_str(listing_json).map_err(err_js)
}
+fn parse_follow(follow_json: &str) -> Result<RadrootsFollow, JsValue> {
+ serde_json::from_str(follow_json).map_err(err_js)
+}
+
fn tags_to_json(tags: Vec<Vec<String>>) -> Result<String, JsValue> {
serde_json::to_string(&tags).map_err(err_js)
}
@@ -33,3 +39,10 @@ pub fn listing_tags_full(listing_json: &str) -> Result<String, JsValue> {
let tags = listing_tags_full_impl(&listing).map_err(err_js)?;
tags_to_json(tags)
}
+
+#[wasm_bindgen(js_name = follow_tags)]
+pub fn follow_tags(follow_json: &str) -> Result<String, JsValue> {
+ let follow = parse_follow(follow_json)?;
+ let tags = follow_build_tags(&follow).map_err(err_js)?;
+ tags_to_json(tags)
+}