Skip to content

Commit 64a37b2

Browse files
get_single_use_receive_uri
1 parent 77c6722 commit 64a37b2

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

orange-sdk/src/ffi/orange/wallet.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::Balances as OrangeBalances;
22

3+
use crate::SingleUseReceiveUri as OrangeSingleUseReceiveUri;
34
use crate::Wallet as OrangeWallet;
45
use crate::WalletConfig as OrangeWalletConfig;
56
use crate::ffi::bitcoin_payment_instructions::Amount;
@@ -47,6 +48,35 @@ impl Balances {
4748
impl_from_core_type!(OrangeBalances, Balances);
4849
impl_into_core_type!(Balances, OrangeBalances);
4950

51+
/// Represents a single-use Bitcoin URI for receiving payments.
52+
#[derive(Debug, Clone, PartialEq, Eq, uniffi::Object)]
53+
pub struct SingleUseReceiveUri(pub OrangeSingleUseReceiveUri);
54+
55+
#[uniffi::export]
56+
impl SingleUseReceiveUri {
57+
pub fn address(&self) -> Option<String> {
58+
self.0.address.clone().map(|a| a.to_string())
59+
}
60+
61+
pub fn invoice(&self) -> String {
62+
self.0.invoice.to_string()
63+
}
64+
65+
pub fn amount(&self) -> Option<Arc<Amount>> {
66+
self.0.amount.map(|a| Arc::new(a.into()))
67+
}
68+
69+
pub fn from_trusted(&self) -> bool {
70+
self.0.from_trusted
71+
}
72+
73+
pub fn to_string(&self) -> String {
74+
self.0.to_string()
75+
}
76+
}
77+
impl_from_core_type!(OrangeSingleUseReceiveUri, SingleUseReceiveUri);
78+
impl_into_core_type!(SingleUseReceiveUri, OrangeSingleUseReceiveUri);
79+
5080
#[derive(Clone, uniffi::Object)]
5181
pub struct Wallet {
5282
inner: Arc<OrangeWallet>,
@@ -100,4 +130,11 @@ impl Wallet {
100130
pub async fn stop(&self) {
101131
self.inner.stop().await
102132
}
133+
134+
pub async fn get_single_use_receive_uri(
135+
&self, amount: Option<Arc<Amount>>,
136+
) -> Result<SingleUseReceiveUri, WalletError> {
137+
let uri = self.inner.get_single_use_receive_uri(amount.map(|a| a.0)).await?;
138+
Ok(uri.into())
139+
}
103140
}

0 commit comments

Comments
 (0)