diff --git a/damus/Util/Relays/RelayBootstrap.swift b/damus/Util/Relays/RelayBootstrap.swift index b68d7e1d..cdddbbfd 100644 --- a/damus/Util/Relays/RelayBootstrap.swift +++ b/damus/Util/Relays/RelayBootstrap.swift @@ -7,14 +7,15 @@ import Foundation -let BOOTSTRAP_RELAYS = [ +// This is `fileprivate` because external code should use the `get_default_bootstrap_relays` instead. +fileprivate let BOOTSTRAP_RELAYS = [ "wss://relay.damus.io", "wss://eden.nostr.land", "wss://nostr.wine", "wss://nos.lol", ] -let REGION_SPECIFIC_BOOTSTRAP_RELAYS: [Locale.Region: [String]] = [ +fileprivate let REGION_SPECIFIC_BOOTSTRAP_RELAYS: [Locale.Region: [String]] = [ Locale.Region.japan: [ "wss://relay-jp.nostr.wirednet.jp", "wss://yabu.me", diff --git a/damus/Views/Relays/RecommendedRelayView.swift b/damus/Views/Relays/RecommendedRelayView.swift index 9f99ec2f..8ad0af14 100644 --- a/damus/Views/Relays/RecommendedRelayView.swift +++ b/damus/Views/Relays/RecommendedRelayView.swift @@ -23,15 +23,6 @@ struct RecommendedRelayView: View { self.model_cache = damus.relay_model_cache } - var recommended: [RelayDescriptor] { - let rs: [RelayDescriptor] = [] - return BOOTSTRAP_RELAYS.reduce(into: rs) { xs, x in - if damus.pool.get_relay(x) == nil, let url = RelayURL(x) { - xs.append(RelayDescriptor(url: url, info: .rw)) - } - } - } - var body: some View { let meta = model_cache.model(with_relay_id: relay)?.metadata @@ -84,6 +75,8 @@ struct RecommendedRelayView: View { HStack { Text(meta?.name ?? relay) .lineLimit(1) + .frame(maxWidth: 150) + .padding(.vertical, 5) } .contextMenu { CopyAction(relay: relay) diff --git a/damus/Views/Relays/RelayConfigView.swift b/damus/Views/Relays/RelayConfigView.swift index 2fbb3d49..5ddb63fc 100644 --- a/damus/Views/Relays/RelayConfigView.swift +++ b/damus/Views/Relays/RelayConfigView.swift @@ -23,7 +23,8 @@ struct RelayConfigView: View { var recommended: [RelayDescriptor] { let rs: [RelayDescriptor] = [] - return BOOTSTRAP_RELAYS.reduce(into: rs) { xs, x in + let recommended_relay_addresses = get_default_bootstrap_relays() + return recommended_relay_addresses.reduce(into: rs) { xs, x in if state.pool.get_relay(x) == nil, let url = RelayURL(x) { xs.append(RelayDescriptor(url: url, info: .rw)) } @@ -87,11 +88,29 @@ struct RelayConfigView: View { .stroke(DamusLightGradient.gradient) } - HStack(spacing: 20) { - ForEach(recommended, id: \.url) { r in - RecommendedRelayView(damus: state, relay: r.url.id) + ScrollView(.horizontal) { + HStack(spacing: 20) { + ForEach(recommended, id: \.url) { r in + RecommendedRelayView(damus: state, relay: r.url.id) + } } + .padding(.horizontal, 30) + .padding(.vertical, 5) } + .scrollIndicators(.hidden) + .mask( + HStack(spacing: 0) { + LinearGradient(gradient: Gradient(colors: [Color.clear, Color.white]), startPoint: .leading, endPoint: .trailing) + .frame(width: 30) + + Rectangle() + .fill(Color.white) + .frame(maxWidth: .infinity) + + LinearGradient(gradient: Gradient(colors: [Color.white, Color.clear]), startPoint: .leading, endPoint: .trailing) + .frame(width: 30) + } + ) .padding() } .frame(minWidth: 250, maxWidth: .infinity, minHeight: 250, alignment: .center)