@@ -7,51 +7,43 @@ use std::sync::Arc;
7
7
8
8
use nostr_ffi:: Keys ;
9
9
use nostr_sdk:: client:: signer;
10
- use uniffi:: Enum ;
10
+ use uniffi:: Object ;
11
11
12
12
pub mod nip46;
13
13
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 ,
27
19
}
28
20
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
38
25
}
39
26
}
40
27
41
28
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 ( ) ) ,
55
47
}
56
48
}
57
49
}
0 commit comments