diff --git a/nip60/drop.go b/nip60/drop.go new file mode 100644 index 0000000..596253b --- /dev/null +++ b/nip60/drop.go @@ -0,0 +1,34 @@ +package nip60 + +import ( + "context" + + "fiatjaf.com/nostr" +) + +// DropToken silently abandons a token +func (w *Wallet) DropToken( + ctx context.Context, + tokenID string, +) { + updatedTokens := make([]Token, 0, len(w.Tokens)) + + for _, token := range w.Tokens { + if token.ID() == tokenID { + deleteEvent := nostr.Event{ + CreatedAt: nostr.Now(), + Kind: 5, + Tags: nostr.Tags{{"e", token.event.ID.Hex()}, {"k", "7375"}}, + } + w.kr.SignEvent(ctx, &deleteEvent) + + w.Lock() + w.PublishUpdate(deleteEvent, &token, nil, nil, false) + w.Unlock() + } else { + updatedTokens = append(updatedTokens, token) + } + } + + w.Tokens = updatedTokens +} diff --git a/nip60/send.go b/nip60/send.go index adb38d0..64ff4e7 100644 --- a/nip60/send.go +++ b/nip60/send.go @@ -119,9 +119,9 @@ func (w *Wallet) saveChangeAndDeleteUsedTokens( IsNutzap: false, }) } - continue + } else { + updatedTokens = append(updatedTokens, token) } - updatedTokens = append(updatedTokens, token) } if len(changeToken.Proofs) > 0 {