commit 8c9f1a73d8c40841d46ce96491afd830482d5e71
parent ab8cc47b6b29989767c1b1ecb46c41f9a94afcc8
Author: triesap <tyson@radroots.org>
Date: Sun, 14 Jun 2026 18:28:36 -0700
trade: make canonical listing fields private
Diffstat:
2 files changed, 54 insertions(+), 21 deletions(-)
diff --git a/crates/trade/src/listing/draft.rs b/crates/trade/src/listing/draft.rs
@@ -39,10 +39,10 @@ impl RadrootsListingDraftDocumentV1 {
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Clone, Debug)]
pub struct RadrootsCanonicalListingDraft {
- pub listing: RadrootsListing,
- pub seller_pubkey: RadrootsPublicKey,
- pub public_listing_addr: RadrootsListingAddress,
- pub draft_listing_addr: RadrootsListingAddress,
+ listing: RadrootsListing,
+ seller_pubkey: RadrootsPublicKey,
+ public_listing_addr: RadrootsListingAddress,
+ draft_listing_addr: RadrootsListingAddress,
}
impl RadrootsCanonicalListingDraft {
@@ -73,6 +73,22 @@ impl RadrootsCanonicalListingDraft {
draft_listing_addr,
})
}
+
+ pub fn listing(&self) -> &RadrootsListing {
+ &self.listing
+ }
+
+ pub fn seller_pubkey(&self) -> &RadrootsPublicKey {
+ &self.seller_pubkey
+ }
+
+ pub fn public_listing_addr(&self) -> &RadrootsListingAddress {
+ &self.public_listing_addr
+ }
+
+ pub fn draft_listing_addr(&self) -> &RadrootsListingAddress {
+ &self.draft_listing_addr
+ }
}
#[derive(Clone, Debug, Error, PartialEq, Eq)]
@@ -257,16 +273,16 @@ mod tests {
let canonical =
RadrootsCanonicalListingDraft::new(listing, seller_pubkey.clone()).expect("canonical");
- assert_eq!(canonical.seller_pubkey, seller_pubkey);
+ assert_eq!(canonical.seller_pubkey(), &seller_pubkey);
assert_eq!(
- canonical.public_listing_addr.as_str(),
+ canonical.public_listing_addr().as_str(),
format!("{KIND_LISTING}:{SELLER}:AAAAAAAAAAAAAAAAAAAAAg")
);
assert_eq!(
- canonical.draft_listing_addr.as_str(),
+ canonical.draft_listing_addr().as_str(),
format!("{KIND_LISTING_DRAFT}:{SELLER}:AAAAAAAAAAAAAAAAAAAAAg")
);
- assert_eq!(canonical.listing.d_tag.as_str(), "AAAAAAAAAAAAAAAAAAAAAg");
+ assert_eq!(canonical.listing().d_tag.as_str(), "AAAAAAAAAAAAAAAAAAAAAg");
}
#[test]
@@ -294,16 +310,16 @@ mod tests {
let canonical =
canonicalize_listing_draft(&seller_actor(), document).expect("canonical draft");
- assert_eq!(canonical.seller_pubkey.as_str(), SELLER);
+ assert_eq!(canonical.seller_pubkey().as_str(), SELLER);
assert_eq!(
- canonical.public_listing_addr.as_str(),
+ canonical.public_listing_addr().as_str(),
format!("{KIND_LISTING}:{SELLER}:AAAAAAAAAAAAAAAAAAAAAg")
);
assert_eq!(
- canonical.draft_listing_addr.as_str(),
+ canonical.draft_listing_addr().as_str(),
format!("{KIND_LISTING_DRAFT}:{SELLER}:AAAAAAAAAAAAAAAAAAAAAg")
);
- assert_eq!(canonical.listing.farm.pubkey, SELLER);
+ assert_eq!(canonical.listing().farm.pubkey, SELLER);
}
#[test]
diff --git a/crates/trade/src/listing/mutation.rs b/crates/trade/src/listing/mutation.rs
@@ -108,8 +108,8 @@ impl RadrootsListingMutation {
pub fn listing_addr(&self) -> Result<&RadrootsListingAddress, RadrootsListingMutationError> {
match self {
- Self::Publish { draft } | Self::Update { draft } => Ok(&draft.public_listing_addr),
- Self::SaveDraft { draft } => Ok(&draft.draft_listing_addr),
+ Self::Publish { draft } | Self::Update { draft } => Ok(draft.public_listing_addr()),
+ Self::SaveDraft { draft } => Ok(draft.draft_listing_addr()),
Self::Archive { .. } => Err(RadrootsListingMutationError::UnsupportedMutation),
}
}
@@ -131,10 +131,15 @@ pub fn build_listing_mutation_draft(
return Err(RadrootsListingMutationError::UnsupportedMutation);
}
};
- let parts = to_wire_parts_with_kind(&draft.listing, kind)
+ let parts = to_wire_parts_with_kind(draft.listing(), kind)
.map_err(|error| RadrootsListingMutationError::EncodeListing(error.to_string()))?;
- to_frozen_draft(parts, contract_id, draft.seller_pubkey.as_str(), created_at)
- .map_err(RadrootsListingMutationError::FrozenDraft)
+ to_frozen_draft(
+ parts,
+ contract_id,
+ draft.seller_pubkey().as_str(),
+ created_at,
+ )
+ .map_err(RadrootsListingMutationError::FrozenDraft)
}
#[cfg(test)]
@@ -273,22 +278,34 @@ mod tests {
let save_draft = RadrootsListingMutation::save_draft(canonical_draft());
assert_eq!(
- publish.canonical_draft().expect("draft").seller_pubkey,
+ publish
+ .canonical_draft()
+ .expect("draft")
+ .seller_pubkey()
+ .as_str(),
SELLER
);
assert_eq!(
- update.canonical_draft().expect("draft").seller_pubkey,
+ update
+ .canonical_draft()
+ .expect("draft")
+ .seller_pubkey()
+ .as_str(),
SELLER
);
assert_eq!(
- save_draft.canonical_draft().expect("draft").seller_pubkey,
+ save_draft
+ .canonical_draft()
+ .expect("draft")
+ .seller_pubkey()
+ .as_str(),
SELLER
);
assert_eq!(
publish
.canonical_draft()
.expect("draft")
- .listing
+ .listing()
.d_tag
.as_str(),
"AAAAAAAAAAAAAAAAAAAAAg"