From c67a714d070ce2d2e2f93a3f224d78c4097bd82b Mon Sep 17 00:00:00 2001 From: Felipe Gonzalez Date: Tue, 10 Mar 2026 11:35:00 -0300 Subject: [PATCH 1/2] fix: Add a default Asteria and don't filter Tokens --- backend/src/main.rs | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/backend/src/main.rs b/backend/src/main.rs index 764a0e6..837787b 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -305,8 +305,7 @@ impl TryFrom<(TokenInput, AddressUtxoContentInner)> for Token { let position_y = datum_int(&datum_json, 1)?; let spacetime_policy = datum_bytes(&datum_json, 2)?; - let unit = format!("{}{}", token.policy_id, token.asset_name); - let raw_amount = asset_amount_for_unit(&utxo.amount, &unit)?; + let raw_amount = asset_amount_for_unit(&utxo.amount, &token.policy_id)?; let scaled_amount = scale_token_amount(raw_amount, token.decimals)?; Ok(Token { @@ -353,7 +352,7 @@ pub struct Data { pub asteria: Asteria, } -#[derive(Clone, SimpleObject)] +#[derive(Clone, SimpleObject, Debug)] pub struct Asset { pub policy_id: String, pub name: String, @@ -425,7 +424,7 @@ pub struct AsteriaState { reward: i64, } -#[derive(Clone, SimpleObject)] +#[derive(Clone, SimpleObject, Debug)] pub struct Token { id: ID, amount: i32, @@ -439,13 +438,13 @@ pub struct Token { assets: Vec, } -#[derive(Clone, SimpleObject)] +#[derive(Clone, SimpleObject, Debug)] pub struct Position { x: i32, y: i32, } -#[derive(Clone, SimpleObject)] +#[derive(Clone, SimpleObject, Debug)] pub struct PolicyId { id: ID, } @@ -551,6 +550,7 @@ impl QueryRoot { .map_err(|e| Error::new(e.message))?; let mut map_objects = Vec::new(); + let mut has_asteria = false; for utxo in fetch_utxos_by_policy(api, &spacetime_address, &spacetime_policy_id).await? { let ship = @@ -595,6 +595,18 @@ impl QueryRoot { } map_objects.push(PositionalInterface::Asteria(asteria)); + has_asteria = true; + } + + if !has_asteria { + map_objects.push(PositionalInterface::Asteria(Asteria { + id: ID::from("fallback-asteria"), + position: Position { x: 0, y: 0 }, + total_rewards: 0, + class: "Asteria".to_string(), + datum: "{}".to_string(), + assets: vec![], + })); } if let Some(tokens) = tokens { @@ -603,9 +615,11 @@ impl QueryRoot { fetch_utxos_by_policy(api, &pellet_address, &token.policy_id).await?; for utxo in token_utxos { + dbg!(&utxo); let map_token = Token::try_from((token.clone(), utxo))?; let distance = distance_from_center(map_token.position.x, map_token.position.y, center); + dbg!(&map_token); if distance >= radius { continue; } @@ -806,15 +820,12 @@ async fn rocket() -> _ { std::collections::HashMap::from([("dmtr-api-key".to_string(), dmtr_api_key)]); } - let project_id = std::env::var("BLOCKFROST_PROJECT_ID") - .unwrap_or("asteria-backend".to_string()); + let project_id = + std::env::var("BLOCKFROST_PROJECT_ID").unwrap_or("asteria-backend".to_string()); - let client = BlockfrostAPI::new_with_client( - &project_id, - settings, - Client::builder().use_rustls_tls(), - ) - .expect("failed to create Blockfrost client"); + let client = + BlockfrostAPI::new_with_client(&project_id, settings, Client::builder().use_rustls_tls()) + .expect("failed to create Blockfrost client"); let schema = Schema::build(QueryRoot, EmptyMutation, EmptySubscription) .register_output_type::() From 8218908be15129061adc060ca096d553674041ac Mon Sep 17 00:00:00 2001 From: Felipe Gonzalez Date: Tue, 10 Mar 2026 11:35:50 -0300 Subject: [PATCH 2/2] Remove dbg statementes --- backend/src/main.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/src/main.rs b/backend/src/main.rs index 837787b..cfc7e63 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -615,11 +615,9 @@ impl QueryRoot { fetch_utxos_by_policy(api, &pellet_address, &token.policy_id).await?; for utxo in token_utxos { - dbg!(&utxo); let map_token = Token::try_from((token.clone(), utxo))?; let distance = distance_from_center(map_token.position.x, map_token.position.y, center); - dbg!(&map_token); if distance >= radius { continue; }