notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

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:
Mcrates/notedeck/src/account/accounts.rs | 1+
Mcrates/notedeck/src/account/contacts.rs | 2++
Mcrates/notedeck/src/account/mute.rs | 1+
Mcrates/notedeck/src/account/relay.rs | 1+
Mcrates/notedeck/src/user_account.rs | 1+
Mcrates/notedeck/src/wallet.rs | 12+++++++++++-
Mcrates/notedeck/src/zaps/default_zap.rs | 6+++---
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, }