From 59662341567c791c639e65a56d4ee9389144e471 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Thu, 23 May 2024 23:03:22 -0300 Subject: [PATCH] update nostr-sdk to fix relay lists and move things around. --- data.go | 37 ++++++++++++++++--------------------- go.mod | 2 +- go.sum | 4 ++-- nostr.go | 8 ++++++-- render_embedded.go | 2 +- render_profile.go | 2 +- 6 files changed, 27 insertions(+), 28 deletions(-) diff --git a/data.go b/data.go index 18c99bb..6e32421 100644 --- a/data.go +++ b/data.go @@ -27,7 +27,7 @@ type Data struct { modifiedAt string parentLink template.HTML metadata Metadata - authorRelays []string + authorRelaysPretty []string authorLong string renderableLastNotes []EnhancedEvent kindDescription string @@ -70,6 +70,20 @@ func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, e }, } + data.authorRelaysPretty = make([]string, 0, len(relays)) + for _, url := range relaysForPubkey(ctx, event.PubKey) { + if isntRealRelay(url) { + continue + } + for _, excluded := range relayConfig.ExcludedRelays { + if strings.Contains(url, excluded) { + continue + } + } + data.authorRelaysPretty = append(data.authorRelaysPretty, trimProtocol(url)) + } + data.authorRelaysPretty = unique(data.authorRelaysPretty) + npub, _ := nip19.EncodePublicKey(event.PubKey) npubShort := npub[:8] + "…" + npub[len(npub)-4:] data.authorLong = npub // hopefully will be replaced later @@ -79,7 +93,6 @@ func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, e data.naddrNaked = "" data.createdAt = time.Unix(int64(event.CreatedAt), 0).Format("2006-01-02 15:04:05") data.modifiedAt = time.Unix(int64(event.CreatedAt), 0).Format("2006-01-02T15:04:05Z07:00") - data.authorRelays = []string{} if event.Kind >= 30000 && event.Kind < 40000 { if d := event.Tags.GetFirst([]string{"d", ""}); d != nil { @@ -93,25 +106,7 @@ func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, e switch event.Kind { case 0: data.templateId = Profile - { - rawAuthorRelays := []string{} - ctx, cancel := context.WithTimeout(ctx, time.Second*4) - rawAuthorRelays = relaysForPubkey(ctx, event.PubKey) - cancel() - for _, relay := range rawAuthorRelays { - for _, excluded := range relayConfig.ExcludedRelays { - if strings.Contains(relay, excluded) { - continue - } - } - if strings.Contains(relay, "/npub1") { - continue // skip relays with personalyzed query like filter.nostr.wine - } - data.authorRelays = append(data.authorRelays, trimProtocol(relay)) - } - } - - lastNotes := authorLastNotes(ctx, event.PubKey, data.authorRelays, isProfileSitemap) + lastNotes := authorLastNotes(ctx, event.PubKey, isProfileSitemap) data.renderableLastNotes = make([]EnhancedEvent, len(lastNotes)) for i, levt := range lastNotes { data.renderableLastNotes[i] = EnhancedEvent{levt, []string{}} diff --git a/go.mod b/go.mod index d07ea85..a28b76a 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/microcosm-cc/bluemonday v1.0.24 github.com/nbd-wtf/emoji v0.0.3 github.com/nbd-wtf/go-nostr v0.30.2 - github.com/nbd-wtf/nostr-sdk v0.2.0 + github.com/nbd-wtf/nostr-sdk v0.2.1 github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 github.com/pelletier/go-toml v1.9.5 github.com/pemistahl/lingua-go v1.4.0 diff --git a/go.sum b/go.sum index ad2b25e..e9742e6 100644 --- a/go.sum +++ b/go.sum @@ -167,8 +167,8 @@ github.com/nbd-wtf/emoji v0.0.3 h1:YtkT7MVPXvqU1SQjvC/CShlWexnREzqNCxmhUnL00CA= github.com/nbd-wtf/emoji v0.0.3/go.mod h1:tS6D9iI34qwBmWc5g8X7tVDkWXulqbTJRsvsM6QsS88= github.com/nbd-wtf/go-nostr v0.30.2 h1:dG/2X52/XDg+7phZH+BClcvA5D+S6dXvxJKkBaySEzI= github.com/nbd-wtf/go-nostr v0.30.2/go.mod h1:tiKJY6fWYSujbTQb201Y+IQ3l4szqYVt+fsTnsm7FCk= -github.com/nbd-wtf/nostr-sdk v0.2.0 h1:IYg5xuPLt0zmL7GiHWeixDO2f47NYaIwb0MmoJRnHWw= -github.com/nbd-wtf/nostr-sdk v0.2.0/go.mod h1:iYZYgu0lilem16G8fk08FipgMOzsQs2bO1j6uEnRhvA= +github.com/nbd-wtf/nostr-sdk v0.2.1 h1:Ae1186pm//Byy5gOIsB3Nhy6EQfTzOHeU9enRWVd204= +github.com/nbd-wtf/nostr-sdk v0.2.1/go.mod h1:iYZYgu0lilem16G8fk08FipgMOzsQs2bO1j6uEnRhvA= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= diff --git a/nostr.go b/nostr.go index a55943b..1c76ff1 100644 --- a/nostr.go +++ b/nostr.go @@ -216,7 +216,7 @@ func getEvent(ctx context.Context, code string, relayHints []string) (*nostr.Eve return result, allRelays, nil } -func authorLastNotes(ctx context.Context, pubkey string, relays []string, isSitemap bool) []*nostr.Event { +func authorLastNotes(ctx context.Context, pubkey string, isSitemap bool) []*nostr.Event { limit := 100 store := true useLocalStore := true @@ -242,7 +242,11 @@ func authorLastNotes(ctx context.Context, pubkey string, relays []string, isSite lastNotes = make([]*nostr.Event, 0, filter.Limit) ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) defer cancel() - relays = unique(append(relays, getRandomRelay(), getRandomRelay())) + + relays := limitAt(relaysForPubkey(ctx, pubkey), 5) + for len(relays) < 4 { + relays = unique(append(relays, getRandomRelay())) + } ch := pool.SubManyEose(ctx, relays, nostr.Filters{filter}) out: for { diff --git a/render_embedded.go b/render_embedded.go index 5529cfc..b1f742f 100644 --- a/render_embedded.go +++ b/render_embedded.go @@ -59,7 +59,7 @@ func renderEmbedded(w http.ResponseWriter, r *http.Request, code string) { Metadata: data.metadata, NormalizedAuthorWebsiteURL: normalizeWebsiteURL(data.metadata.Website), RenderedAuthorAboutText: template.HTML(basicFormatting(html.EscapeString(data.metadata.About), false, false, true)), - AuthorRelays: data.authorRelays, + AuthorRelays: data.authorRelaysPretty, }) default: log.Error().Int("templateId", int(data.templateId)).Msg("no way to render") diff --git a/render_profile.go b/render_profile.go index 39dbced..c448aa5 100644 --- a/render_profile.go +++ b/render_profile.go @@ -79,7 +79,7 @@ func renderProfile(w http.ResponseWriter, r *http.Request, code string) { NormalizedAuthorWebsiteURL: normalizeWebsiteURL(data.metadata.Website), RenderedAuthorAboutText: template.HTML(basicFormatting(html.EscapeString(data.metadata.About), false, false, false)), Nprofile: data.nprofile, - AuthorRelays: data.authorRelays, + AuthorRelays: data.authorRelaysPretty, LastNotes: data.renderableLastNotes, Clients: generateClientList(data.event.Kind, data.nprofile, func(c ClientReference, s string) string {