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
}
func (wl *WalletStash) EnsureWallet(id string) *Wallet {
func (wl *WalletStash) EnsureWallet(ctx context.Context, id string) *Wallet {
wl.Lock()
defer wl.Unlock()
if w, ok := wl.wallets[id]; ok {
@ -287,7 +287,7 @@ func (wl *WalletStash) EnsureWallet(id string) *Wallet {
sk, err := btcec.NewPrivateKey()
if err != nil {
panic(err)
return nil
}
w := &Wallet{
@ -297,6 +297,14 @@ func (wl *WalletStash) EnsureWallet(id string) *Wallet {
wl: wl,
}
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
}

View File

@ -71,10 +71,10 @@ func TestWalletTransfer(t *testing.T) {
}
// 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")
w2 := stash2.EnsureWallet("test")
w2 := stash2.EnsureWallet(ctx, "test")
initialBalance1 := w1.Balance()
initialBalance2 := w2.Balance()