@@ -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
235244impl 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