commit b9cae65b72de14ee9cf16035a06983bf45da72f7
parent 049bb3e8bbe5666bc0159d9bc017016149233949
Author: kernelkind <kernelkind@gmail.com>
Date: Thu, 17 Jul 2025 19:24:01 -0400
make `UserAccount` cloneable
Signed-off-by: kernelkind <kernelkind@gmail.com>
Diffstat:
7 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/crates/notedeck/src/account/accounts.rs b/crates/notedeck/src/account/accounts.rs
@@ -375,6 +375,7 @@ fn get_acc_from_storage(user_account_serializable: UserAccountSerializable) -> O
})
}
+#[derive(Clone)]
pub struct AccountData {
pub(crate) relay: AccountRelayData,
pub(crate) muted: AccountMutedData,
diff --git a/crates/notedeck/src/account/contacts.rs b/crates/notedeck/src/account/contacts.rs
@@ -3,11 +3,13 @@ use std::collections::HashSet;
use enostr::Pubkey;
use nostrdb::{Filter, Ndb, Note, NoteKey, Subscription, Transaction};
+#[derive(Clone)]
pub struct Contacts {
pub filter: Filter,
pub(super) state: ContactState,
}
+#[derive(Clone)]
pub enum ContactState {
Unreceived,
Received {
diff --git a/crates/notedeck/src/account/mute.rs b/crates/notedeck/src/account/mute.rs
@@ -5,6 +5,7 @@ use tracing::{debug, error};
use crate::Muted;
+#[derive(Clone)]
pub(crate) struct AccountMutedData {
pub filter: Filter,
pub muted: Arc<Muted>,
diff --git a/crates/notedeck/src/account/relay.rs b/crates/notedeck/src/account/relay.rs
@@ -7,6 +7,7 @@ use url::Url;
use crate::{AccountData, RelaySpec};
+#[derive(Clone)]
pub(crate) struct AccountRelayData {
pub filter: Filter,
pub local: BTreeSet<RelaySpec>, // used locally but not advertised
diff --git a/crates/notedeck/src/user_account.rs b/crates/notedeck/src/user_account.rs
@@ -6,6 +6,7 @@ use crate::{
AccountData, IsFollowing,
};
+#[derive(Clone)]
pub struct UserAccount {
pub key: Keypair,
pub wallet: Option<ZapWallet>,
diff --git a/crates/notedeck/src/wallet.rs b/crates/notedeck/src/wallet.rs
@@ -60,6 +60,16 @@ pub struct Wallet {
balance: Option<Promise<Result<u64, NwcError>>>,
}
+impl Clone for Wallet {
+ fn clone(&self) -> Self {
+ Self {
+ uri: self.uri.clone(),
+ wallet: self.wallet.clone(),
+ balance: None,
+ }
+ }
+}
+
#[derive(Clone)]
pub struct WalletSerializable {
pub uri: String,
@@ -236,7 +246,7 @@ fn construct_global_wallet(wallet_handler: &TokenHandler) -> Option<ZapWallet> {
Some(wallet)
}
-#[derive(Debug)]
+#[derive(Debug, Clone)]
pub struct ZapWallet {
pub wallet: Wallet,
pub default_zap: DefaultZapMsats,
diff --git a/crates/notedeck/src/zaps/default_zap.rs b/crates/notedeck/src/zaps/default_zap.rs
@@ -4,7 +4,7 @@ use crate::get_current_wallet;
const DEFAULT_ZAP_MSATS: u64 = 10_000;
-#[derive(Debug, Default)]
+#[derive(Debug, Default, Clone)]
pub struct DefaultZapMsats {
pub msats: Option<u64>,
pub pending: PendingDefaultZapState,
@@ -83,7 +83,7 @@ impl TokenSerializable for UserZapMsats {
}
}
-#[derive(Debug)]
+#[derive(Debug, Clone)]
pub struct PendingDefaultZapState {
pub amount_sats: String,
pub error_message: Option<DefaultZapError>,
@@ -110,7 +110,7 @@ fn msats_to_sats_string(msats: u64) -> String {
(msats / 1000).to_string()
}
-#[derive(Debug)]
+#[derive(Debug, Clone)]
pub enum DefaultZapError {
InvalidUserInput,
}