Browse Source

feat: add since to nostr-receive

thesimplekid 10 months ago
parent
commit
73356acd2e
2 changed files with 19 additions and 10 deletions
  1. 7 4
      crates/cdk-cli/src/sub_commands/receive.rs
  2. 12 6
      crates/cdk/src/wallet/mod.rs

+ 7 - 4
crates/cdk-cli/src/sub_commands/receive.rs

@@ -10,15 +10,18 @@ use clap::Args;
 pub struct ReceiveSubCommand {
     /// Cashu Token
     token: Option<String>,
-    /// Nostr key
-    #[arg(short, long)]
-    nostr_key: Option<String>,
     /// Signing Key
     #[arg(short, long, action = clap::ArgAction::Append)]
     signing_key: Vec<String>,
+    /// Nostr key
+    #[arg(short, long)]
+    nostr_key: Option<String>,
     /// Nostr relay
     #[arg(short, long, action = clap::ArgAction::Append)]
     relay: Vec<String>,
+    /// Unix time to to query nostr from
+    #[arg(short, long)]
+    since: Option<u64>,
     /// Preimage
     #[arg(short, long,  action = clap::ArgAction::Append)]
     preimage: Vec<String>,
@@ -58,7 +61,7 @@ pub async fn receive(wallet: Wallet, sub_command_args: &ReceiveSubCommand) -> Re
                 .add_nostr_relays(sub_command_args.relay.clone())
                 .await?;
             wallet
-                .nostr_receive(nostr_key, SplitTarget::default())
+                .nostr_receive(nostr_key, sub_command_args.since, SplitTarget::default())
                 .await?
         }
         None => {

+ 12 - 6
crates/cdk/src/wallet/mod.rs

@@ -1410,6 +1410,7 @@ impl Wallet {
     pub async fn nostr_receive(
         &self,
         nostr_signing_key: SecretKey,
+        since: Option<u64>,
         amount_split_target: SplitTarget,
     ) -> Result<Amount, Error> {
         use nostr_sdk::{Keys, Kind};
@@ -1423,15 +1424,20 @@ impl Wallet {
         let keys = Keys::from_str(&(nostr_signing_key).to_secret_hex())?;
         self.add_p2pk_signing_key(nostr_signing_key).await;
 
-        let filter = match self
-            .localstore
-            .get_nostr_last_checked(&verifying_key)
-            .await?
-        {
+        let since = match since {
+            Some(since) => Some(Timestamp::from(since)),
+            None => self
+                .localstore
+                .get_nostr_last_checked(&verifying_key)
+                .await?
+                .map(|s| Timestamp::from(s as u64)),
+        };
+
+        let filter = match since {
             Some(since) => Filter::new()
                 .pubkey(nostr_pubkey)
                 .kind(Kind::EncryptedDirectMessage)
-                .since(Timestamp::from(since as u64)),
+                .since(since),
             None => Filter::new()
                 .pubkey(nostr_pubkey)
                 .kind(Kind::EncryptedDirectMessage),