nip60: EnsureWallet() publishes an update if a wallet wasn't found.

This commit is contained in:
fiatjaf 2025-01-30 16:08:21 -03:00
parent 14c4101a03
commit 2b9c50a220
2 changed files with 12 additions and 4 deletions

View File

@ -278,7 +278,7 @@ func loadStash(
return wl return wl
} }
func (wl *WalletStash) EnsureWallet(id string) *Wallet { func (wl *WalletStash) EnsureWallet(ctx context.Context, id string) *Wallet {
wl.Lock() wl.Lock()
defer wl.Unlock() defer wl.Unlock()
if w, ok := wl.wallets[id]; ok { if w, ok := wl.wallets[id]; ok {
@ -287,7 +287,7 @@ func (wl *WalletStash) EnsureWallet(id string) *Wallet {
sk, err := btcec.NewPrivateKey() sk, err := btcec.NewPrivateKey()
if err != nil { if err != nil {
panic(err) return nil
} }
w := &Wallet{ w := &Wallet{
@ -297,6 +297,14 @@ func (wl *WalletStash) EnsureWallet(id string) *Wallet {
wl: wl, wl: wl,
} }
wl.wallets[id] = w wl.wallets[id] = w
event := nostr.Event{}
if err := w.toEvent(ctx, wl.kr, &event); err != nil {
return nil
}
wl.PublishUpdate(event, nil, nil, nil, false)
return w return w
} }

View File

@ -71,10 +71,10 @@ func TestWalletTransfer(t *testing.T) {
} }
// ensure wallets exist and have tokens // ensure wallets exist and have tokens
w1 := stash1.EnsureWallet("test") w1 := stash1.EnsureWallet(ctx, "test")
require.Greater(t, w1.Balance(), uint64(0), "wallet 1 has no balance") require.Greater(t, w1.Balance(), uint64(0), "wallet 1 has no balance")
w2 := stash2.EnsureWallet("test") w2 := stash2.EnsureWallet(ctx, "test")
initialBalance1 := w1.Balance() initialBalance1 := w1.Balance()
initialBalance2 := w2.Balance() initialBalance2 := w2.Balance()