Skip to content

Commit 43fe4a6

Browse files
committed
ffi(nostr-sdk): convert ClientSigner from enum to struct
1 parent 2ab6d8f commit 43fe4a6

File tree

8 files changed

+44
-52
lines changed

8 files changed

+44
-52
lines changed

bindings/nostr-sdk-ffi/bindings-python/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ init_logger(LogLevel.INFO)
2929

3030
# Or, initialize with Keys signer
3131
keys = Keys.generate()
32-
signer = ClientSigner.KEYS(keys)
32+
signer = ClientSigner.keys(keys)
3333
client = Client(signer)
3434

3535
# Or, initialize with NIP46 signer
3636
# app_keys = Keys.generate()
3737
# nip46 = Nip46Signer("wss://relay.damus.io", app_keys, None)
38-
#signer = ClientSigner.NIP46(nip46)
38+
#signer = ClientSigner.nip46(nip46)
3939
# client = Client(signer)
4040

4141
# Add a single relay

bindings/nostr-sdk-ffi/bindings-python/examples/bot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
pk = keys.public_key()
1414
print(f"Bot public key: {pk.to_bech32()}")
1515

16-
signer = ClientSigner.KEYS(keys)
16+
signer = ClientSigner.keys(keys)
1717
client = Client(signer)
1818

1919
client.add_relay("wss://relay.damus.io")

bindings/nostr-sdk-ffi/bindings-python/examples/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010

1111
# Or, initialize with Keys signer
1212
keys = Keys.generate()
13-
signer = ClientSigner.KEYS(keys)
13+
signer = ClientSigner.keys(keys)
1414
client = Client(signer)
1515

1616
# Or, initialize with NIP46 signer
1717
# app_keys = Keys.generate()
1818
# nip46 = Nip46Signer("wss://relay.damus.io", app_keys, None)
19-
#signer = ClientSigner.NIP46(nip46)
19+
#signer = ClientSigner.nip46(nip46)
2020
# client = Client(signer)
2121

2222
# Add a single relay

bindings/nostr-sdk-ffi/bindings-python/examples/metadata.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
keys = Keys.generate()
55

6-
signer = ClientSigner.KEYS(keys)
6+
signer = ClientSigner.keys(keys)
77
client = Client(signer)
88

99
client.add_relay("wss://relay.damus.io")

bindings/nostr-sdk-ffi/bindings-python/examples/nip94.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
keys = Keys.generate()
44
print(keys.public_key().to_bech32())
55

6-
signer = ClientSigner.KEYS(keys)
6+
signer = ClientSigner.keys(keys)
77
client = Client(signer)
88

99
client.add_relay("wss://relay.damus.io")

bindings/nostr-sdk-ffi/src/client/builder.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,27 +33,27 @@ impl ClientBuilder {
3333
}
3434
}
3535

36-
pub fn signer(self: Arc<Self>, signer: ClientSigner) -> Self {
37-
let signer: nostr_sdk::ClientSigner = signer.into();
36+
pub fn signer(self: Arc<Self>, signer: Arc<ClientSigner>) -> Self {
37+
let signer: nostr_sdk::ClientSigner = signer.as_ref().deref().clone();
3838
let mut builder = unwrap_or_clone_arc(self);
3939
builder.inner = builder.inner.signer(signer);
4040
builder
4141
}
4242

43-
pub fn database(self: Arc<Self>, database: Arc<NostrDatabase>) -> Arc<Self> {
43+
pub fn database(self: Arc<Self>, database: Arc<NostrDatabase>) -> Self {
4444
let database: Arc<DynNostrDatabase> = database.as_ref().into();
4545
let mut builder = unwrap_or_clone_arc(self);
4646
builder.inner = builder.inner.database(database);
47-
Arc::new(builder)
47+
builder
4848
}
4949

5050
/// Set opts
51-
pub fn opts(self: Arc<Self>, opts: Arc<Options>) -> Arc<Self> {
51+
pub fn opts(self: Arc<Self>, opts: Arc<Options>) -> Self {
5252
let mut builder = unwrap_or_clone_arc(self);
5353
builder.inner = builder
5454
.inner
5555
.opts(opts.as_ref().deref().clone().shutdown_on_drop(true));
56-
Arc::new(builder)
56+
builder
5757
}
5858

5959
/// Build [`Client`]

bindings/nostr-sdk-ffi/src/client/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@ impl From<ClientSdk> for Client {
4141
#[uniffi::export]
4242
impl Client {
4343
#[uniffi::constructor]
44-
pub fn new(signer: Option<ClientSigner>) -> Self {
44+
pub fn new(signer: Option<Arc<ClientSigner>>) -> Self {
4545
Self::with_opts(signer, Arc::new(Options::new()))
4646
}
4747

4848
#[uniffi::constructor]
49-
pub fn with_opts(signer: Option<ClientSigner>, opts: Arc<Options>) -> Self {
49+
pub fn with_opts(signer: Option<Arc<ClientSigner>>, opts: Arc<Options>) -> Self {
5050
let opts: OptionsSdk = opts.as_ref().deref().clone().shutdown_on_drop(true);
5151
let mut builder = nostr_sdk::ClientBuilder::new().opts(opts);
5252
if let Some(signer) = signer {
53-
let signer: nostr_sdk::ClientSigner = signer.into();
53+
let signer: nostr_sdk::ClientSigner = signer.as_ref().deref().clone();
5454
builder = builder.signer(signer);
5555
}
5656
Self {

bindings/nostr-sdk-ffi/src/client/signer/mod.rs

Lines changed: 28 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,51 +7,43 @@ use std::sync::Arc;
77

88
use nostr_ffi::Keys;
99
use nostr_sdk::client::signer;
10-
use uniffi::Enum;
10+
use uniffi::Object;
1111

1212
pub mod nip46;
1313

14-
#[derive(Enum)]
15-
pub enum ClientSigner {
16-
#[cfg(target_os = "android")]
17-
PrivateKeys {
18-
signer: Arc<Keys>,
19-
},
20-
#[cfg(not(target_os = "android"))]
21-
Keys {
22-
signer: Arc<Keys>,
23-
},
24-
NIP46 {
25-
signer: Arc<nip46::Nip46Signer>,
26-
},
14+
use self::nip46::Nip46Signer;
15+
16+
#[derive(Object)]
17+
pub struct ClientSigner {
18+
inner: signer::ClientSigner,
2719
}
2820

29-
impl From<ClientSigner> for signer::ClientSigner {
30-
fn from(value: ClientSigner) -> Self {
31-
match value {
32-
#[cfg(target_os = "android")]
33-
ClientSigner::PrivateKeys { signer } => Self::Keys(signer.as_ref().deref().clone()),
34-
#[cfg(not(target_os = "android"))]
35-
ClientSigner::Keys { signer } => Self::Keys(signer.as_ref().deref().clone()),
36-
ClientSigner::NIP46 { signer } => Self::NIP46(signer.as_ref().deref().clone()),
37-
}
21+
impl Deref for ClientSigner {
22+
type Target = signer::ClientSigner;
23+
fn deref(&self) -> &Self::Target {
24+
&self.inner
3825
}
3926
}
4027

4128
impl From<signer::ClientSigner> for ClientSigner {
42-
fn from(value: signer::ClientSigner) -> Self {
43-
match value {
44-
#[cfg(target_os = "android")]
45-
signer::ClientSigner::Keys(keys) => Self::PrivateKeys {
46-
signer: Arc::new(keys.into()),
47-
},
48-
#[cfg(not(target_os = "android"))]
49-
signer::ClientSigner::Keys(keys) => Self::Keys {
50-
signer: Arc::new(keys.into()),
51-
},
52-
signer::ClientSigner::NIP46(signer) => Self::NIP46 {
53-
signer: Arc::new(signer.into()),
54-
},
29+
fn from(inner: signer::ClientSigner) -> Self {
30+
Self { inner }
31+
}
32+
}
33+
34+
#[uniffi::export]
35+
impl ClientSigner {
36+
#[uniffi::constructor]
37+
pub fn keys(keys: Arc<Keys>) -> Self {
38+
Self {
39+
inner: signer::ClientSigner::Keys(keys.as_ref().deref().clone()),
40+
}
41+
}
42+
43+
#[uniffi::constructor]
44+
pub fn nip46(nip46: Arc<Nip46Signer>) -> Self {
45+
Self {
46+
inner: signer::ClientSigner::NIP46(nip46.as_ref().deref().clone()),
5547
}
5648
}
5749
}

0 commit comments

Comments
 (0)