Skip to content

Commit 27dbbe3

Browse files
committed
Use legacy address with sparkscan
1 parent 598f73a commit 27dbbe3

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

crates/breez-sdk/core/src/sdk.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,11 @@ impl BreezSdk {
341341
.unwrap_or_default();
342342
let last_synced_id = cached_sync_info.last_synced_payment_id;
343343

344-
let spark_address = self.spark_wallet.get_spark_address()?.to_string();
344+
// TODO: use new spark address format once sparkscan supports it
345+
let legacy_spark_address = self
346+
.spark_wallet
347+
.get_spark_address()?
348+
.to_string_with_hrp_legacy();
345349

346350
let mut payments_to_sync = Vec::new();
347351

@@ -355,7 +359,7 @@ impl BreezSdk {
355359
let response = sparkscan::Client::new(&self.config.sparkscan_api_url)
356360
.get_address_transactions_v1_address_address_transactions_get()
357361
.network(sparkscan::types::Network::from(self.config.network))
358-
.address(spark_address.to_string())
362+
.address(legacy_spark_address.to_string())
359363
.offset(next_offset)
360364
.limit(PAYMENT_SYNC_BATCH_SIZE)
361365
.send()
@@ -388,7 +392,7 @@ impl BreezSdk {
388392
let payments = payments_from_address_transaction_and_ssp_request(
389393
transaction,
390394
ssp_user_requests.get(&transaction.id),
391-
&spark_address,
395+
&legacy_spark_address,
392396
)?;
393397

394398
for payment in payments {

crates/spark/src/address/mod.rs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,15 @@ impl SparkAddress {
221221
}
222222
}
223223

224+
fn network_to_hrp_legacy(network: &Network) -> Hrp {
225+
match network {
226+
Network::Mainnet => HRP_LEGACY_MAINNET,
227+
Network::Testnet => HRP_LEGACY_TESTNET,
228+
Network::Regtest => HRP_LEGACY_REGTEST,
229+
Network::Signet => HRP_LEGACY_SIGNET,
230+
}
231+
}
232+
224233
fn hrp_to_network(hrp: &Hrp) -> Result<Network, AddressError> {
225234
match hrp {
226235
hrp if hrp == &HRP_MAINNET || hrp == &HRP_LEGACY_MAINNET => Ok(Network::Mainnet),
@@ -234,6 +243,15 @@ impl SparkAddress {
234243

235244
impl Display for SparkAddress {
236245
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
246+
let hrp = Self::network_to_hrp(&self.network);
247+
248+
let address = self.to_string_with_hrp(hrp);
249+
write!(f, "{address}")
250+
}
251+
}
252+
253+
impl SparkAddress {
254+
fn to_string_with_hrp(&self, hrp: Hrp) -> String {
237255
let spark_invoice_fields: Option<ProtoSparkInvoiceFields> =
238256
self.spark_invoice_fields.clone().map(|f| f.into());
239257

@@ -245,11 +263,13 @@ impl Display for SparkAddress {
245263

246264
let payload_bytes = proto_address.encode_to_vec();
247265

248-
let hrp = Self::network_to_hrp(&self.network);
249-
250266
// This is safe to unwrap, because we are using a valid HRP and payload
251-
let address = bech32::encode::<Bech32m>(hrp, &payload_bytes).unwrap();
252-
write!(f, "{address}")
267+
bech32::encode::<Bech32m>(hrp, &payload_bytes).unwrap()
268+
}
269+
270+
pub fn to_string_with_hrp_legacy(&self) -> String {
271+
let hrp = Self::network_to_hrp_legacy(&self.network);
272+
self.to_string_with_hrp(hrp)
253273
}
254274
}
255275

0 commit comments

Comments
 (0)