app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit 0e3e3fd13b7a90328f0deec614b1d1909c7484f2
parent 87360aff7a4e32e6e7a8c454d1acf48e0ce34523
Author: triesap <tyson@radroots.org>
Date:   Tue, 26 May 2026 09:19:11 +0000

runtime: mark relay ingest as network source

Diffstat:
Mcrates/launchers/desktop/src/runtime.rs | 20+++++++++++++-------
Mcrates/shared/sqlite/src/local_interop.rs | 43++++++++++++++++++++++++++++++++++++++++---
2 files changed, 53 insertions(+), 10 deletions(-)

diff --git a/crates/launchers/desktop/src/runtime.rs b/crates/launchers/desktop/src/runtime.rs @@ -5852,7 +5852,7 @@ fn direct_relay_event_listing_addr( } fn direct_relay_event_source_runtime(_kind: u16, _d_tag: Option<&str>) -> SourceRuntime { - SourceRuntime::Cli + SourceRuntime::Network } fn relay_event_kind(event: &RadrootsNostrEvent) -> u16 { @@ -8424,21 +8424,21 @@ mod tests { } #[test] - fn direct_relay_trade_events_keep_cli_source_runtime_for_app_shaped_d_tags() { + fn direct_relay_trade_events_use_network_source_runtime_for_app_shaped_d_tags() { let app_shaped_d_tag = super::d_tag_from_uuid(Uuid::from_u128(0x12345678123446789123456781234567)); assert_eq!( direct_relay_event_source_runtime(30340, Some(app_shaped_d_tag.as_str())), - SourceRuntime::Cli + SourceRuntime::Network ); assert_eq!( direct_relay_event_source_runtime(30402, Some(app_shaped_d_tag.as_str())), - SourceRuntime::Cli + SourceRuntime::Network ); assert_eq!( direct_relay_event_source_runtime(30403, Some(app_shaped_d_tag.as_str())), - SourceRuntime::Cli + SourceRuntime::Network ); } @@ -8832,7 +8832,10 @@ mod tests { ) .expect("delivery json"); - assert_eq!(listing_import.source_runtime, SourceRuntime::Cli.as_str()); + assert_eq!( + listing_import.source_runtime, + SourceRuntime::Network.as_str() + ); assert_eq!(listing_import.outbox_status, "none"); assert_eq!(delivery["state"], json!("observed")); assert_eq!(delivery["acknowledged_relays"], json!([])); @@ -8988,7 +8991,10 @@ mod tests { ) .expect("delivery json"); - assert_eq!(listing_import.source_runtime, SourceRuntime::Cli.as_str()); + assert_eq!( + listing_import.source_runtime, + SourceRuntime::Network.as_str() + ); assert_eq!(listing_import.outbox_status, "none"); assert_eq!(delivery["state"], json!("observed")); assert_eq!(delivery["acknowledged_relays"], json!([])); diff --git a/crates/shared/sqlite/src/local_interop.rs b/crates/shared/sqlite/src/local_interop.rs @@ -2329,8 +2329,8 @@ mod tests { use std::collections::BTreeSet; use radroots_app_models::{ - BuyerContext, BuyerOrderStatus, FarmOrderMethod, OrderStatus, OrdersFilter, - OrdersScreenQueryState, ProductAvailabilityState, + BuyerContext, BuyerOrderStatus, FarmId, FarmOrderMethod, OrderStatus, OrdersFilter, + OrdersScreenQueryState, ProductAvailabilityState, ProductId, }; use radroots_core::{ RadrootsCoreCurrency, RadrootsCoreDecimal, RadrootsCoreMoney, RadrootsCoreUnit, @@ -2359,7 +2359,7 @@ mod tests { use super::{ KIND_FARM, KIND_LISTING, KIND_ORDER_REQUEST, deterministic_farm_id, - deterministic_product_id, projected_order_id, + deterministic_product_id, projected_farm_id, projected_order_id, projected_product_id, }; use crate::{AppSqliteStore, DatabaseTarget}; @@ -2674,6 +2674,43 @@ mod tests { output } + #[test] + fn app_shaped_keys_use_uuid_projection_only_for_app_runtime() { + let owner_pubkey = "projection-owner-pubkey"; + let farm_uuid = Uuid::from_u128(0x11111111111141118111111111111111); + let product_uuid = Uuid::from_u128(0x22222222222242228222222222222222); + let farm_key = app_d_tag_from_uuid(farm_uuid); + let listing_key = app_d_tag_from_uuid(product_uuid); + + assert_eq!( + projected_farm_id(SourceRuntime::App, Some(owner_pubkey), farm_key.as_str()), + Some(FarmId::from(farm_uuid)) + ); + assert_eq!( + projected_product_id(SourceRuntime::App, Some(owner_pubkey), listing_key.as_str()), + Some(ProductId::from(product_uuid)) + ); + assert_eq!( + projected_farm_id( + SourceRuntime::Network, + Some(owner_pubkey), + farm_key.as_str() + ), + Some(deterministic_farm_id(Some(owner_pubkey), farm_key.as_str())) + ); + assert_eq!( + projected_product_id( + SourceRuntime::Network, + Some(owner_pubkey), + listing_key.as_str() + ), + Some(deterministic_product_id( + Some(owner_pubkey), + listing_key.as_str() + )) + ); + } + fn app_local_work_record( record_id: &str, farm_key: &str,