cli

Command-line interface for Radroots
git clone https://radroots.dev/git/cli.git
Log | Files | Refs | README | LICENSE

commit 7a9ed8879e3a91d1561e2f5ce3aabc61baddd2b4
parent bea8ccabd4aa870528ab95cd6f5074918358b436
Author: triesap <tyson@radroots.org>
Date:   Sun, 12 Apr 2026 04:21:43 +0000

listing: use shared trade preview validation

Diffstat:
MCargo.lock | 1+
Msrc/runtime/listing.rs | 18+++++++-----------
2 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -1967,6 +1967,7 @@ dependencies = [ "radroots_events_codec", "serde", "serde_json", + "thiserror 1.0.69", "ts-rs", ] diff --git a/src/runtime/listing.rs b/src/runtime/listing.rs @@ -18,6 +18,7 @@ use radroots_events::trade::RadrootsTradeListingValidationError; use radroots_events_codec::d_tag::is_d_tag_base64url; use radroots_events_codec::listing::encode::to_wire_parts_with_kind; use radroots_sql_core::{SqlExecutor, SqliteExecutor, utils}; +use radroots_trade::listing::publish::validate_listing_for_seller; use radroots_trade::listing::validation::validate_listing_event; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -970,17 +971,12 @@ fn build_listing_event_preview( ) -> Result<(ListingMutationEventView, String), RuntimeError> { let parts = to_wire_parts_with_kind(&canonical.listing, KIND_LISTING) .map_err(|error| RuntimeError::Config(format!("invalid listing contract: {error}")))?; - let event = RadrootsNostrEvent { - id: String::new(), - author: canonical.seller_pubkey.clone(), - created_at: 0, - kind: KIND_LISTING, - tags: parts.tags.clone(), - content: parts.content.clone(), - sig: String::new(), - }; - let validated = validate_listing_event(&event) - .map_err(|error| RuntimeError::Config(format!("invalid listing contract: {error}")))?; + let validated = validate_listing_for_seller( + canonical.listing.clone(), + canonical.seller_pubkey.as_str(), + KIND_LISTING, + ) + .map_err(|error| RuntimeError::Config(format!("invalid listing contract: {error}")))?; Ok(( ListingMutationEventView { kind: KIND_LISTING,