diff --git a/NostrServices/Services/RedisStore.cs b/NostrServices/Services/RedisStore.cs index 470218b..ef66f63 100644 --- a/NostrServices/Services/RedisStore.cs +++ b/NostrServices/Services/RedisStore.cs @@ -95,13 +95,17 @@ public class RedisStore if ((old?.Created ?? 0) < relays.Created) { var removed = old?.Relays.Where(a => relays.Relays.All(b => b.Url != a.Url)); - var added = old == default ? relays.Relays : relays.Relays.Where(a => old.Relays.All(b => b.Url != a.Url)).ToList(); + var added = old == default + ? relays.Relays + : relays.Relays.Where(a => old.Relays.All(b => b.Url != a.Url)).ToList(); if (removed != default) { - await Task.WhenAll(removed.Select(a => _database.SetRemoveAsync(RelayUsersKey(a.Url), Convert.FromHexString(pubkey)))); + await Task.WhenAll(removed.Select(a => + _database.SetRemoveAsync(RelayUsersKey(a.Url), Convert.FromHexString(pubkey)))); } - await Task.WhenAll(added.Select(a => _database.SetAddAsync(RelayUsersKey(a.Url), Convert.FromHexString(pubkey)))); + await Task.WhenAll(added.Select(a => + _database.SetAddAsync(RelayUsersKey(a.Url), Convert.FromHexString(pubkey)))); await _database.SetAddAsync("relays", added.Select(a => (RedisValue)a.Url.ToString()).ToArray()); return await _database.SetAsync(UserRelaysKey(pubkey), relays, DefaultExpire); @@ -136,16 +140,17 @@ public class RedisStore public async Task> FindCloseRelays(double lat, double lon, int radius = 50_000, int count = 10) { - var ret = new List(); - var geoRelays = await _database.GeoSearchAsync(RelayPositionKey(), lon, lat, new GeoSearchCircle(radius), count); + var ret = new Dictionary(); + var geoRelays = + await _database.GeoSearchAsync(RelayPositionKey(), lon, lat, new GeoSearchCircle(radius), count); foreach (var gr in geoRelays) { var id = ((string)gr.Member!).Split('\x1'); var u = new Uri(id[0]); var info = await GetRelay(u); - if (info != default) + if (info != default && !ret.ContainsKey(u)) { - ret.Add(new() + ret.Add(u, new() { Distance = gr.Distance.HasValue ? (long)gr.Distance.Value : 0, Relay = info, @@ -154,7 +159,7 @@ public class RedisStore } } - return ret; + return ret.Values.ToList(); } public async IAsyncEnumerable EnumerateProfiles() @@ -359,4 +364,4 @@ public class RelaySetting [ProtoMember(3)] public bool Write { get; init; } -} +} \ No newline at end of file