sdk: deduplicate relay selection for replaceable loader.

This commit is contained in:
fiatjaf 2024-09-26 21:09:18 -03:00
parent ade77ad6c9
commit 69b97107a9

View File

@ -3,6 +3,7 @@ package sdk
import ( import (
"context" "context"
"fmt" "fmt"
"slices"
"strconv" "strconv"
"sync" "sync"
"time" "time"
@ -131,16 +132,21 @@ func (sys *System) determineRelaysToQuery(ctx context.Context, pubkey string, ki
} }
// use a different set of extra relays depending on the kind // use a different set of extra relays depending on the kind
for len(relays) < 3 { for i := 0; i < 3-len(relays); i++ {
var next string
switch kind { switch kind {
case 0: case 0:
relays = append(relays, pickNext(sys.MetadataRelays)) next = pickNext(sys.MetadataRelays)
case 3: case 3:
relays = append(relays, pickNext(sys.FollowListRelays)) next = pickNext(sys.FollowListRelays)
case 10002: case 10002:
relays = append(relays, pickNext(sys.RelayListRelays)) next = pickNext(sys.RelayListRelays)
default: default:
relays = append(relays, pickNext(sys.FallbackRelays)) next = pickNext(sys.FallbackRelays)
}
if !slices.Contains(relays, next) {
relays = append(relays, next)
} }
} }