simplify and fix issues with RelayStatus
This commit is contained in:
committed by
William Casarin
parent
2901cc860f
commit
28854fdc93
@@ -75,11 +75,13 @@ struct RelayDetailView: View {
|
|||||||
UserViewRow(damus_state: state, pubkey: pubkey)
|
UserViewRow(damus_state: state, pubkey: pubkey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Section(NSLocalizedString("Relay", comment: "Label to display relay address.")) {
|
if let relay_connection {
|
||||||
HStack {
|
Section(NSLocalizedString("Relay", comment: "Label to display relay address.")) {
|
||||||
Text(relay)
|
HStack {
|
||||||
Spacer()
|
Text(relay)
|
||||||
RelayStatus(pool: state.pool, relay: relay)
|
Spacer()
|
||||||
|
RelayStatus(connection: relay_connection)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if nip11.is_paid {
|
if nip11.is_paid {
|
||||||
@@ -134,6 +136,10 @@ struct RelayDetailView: View {
|
|||||||
}
|
}
|
||||||
return attrString
|
return attrString
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var relay_connection: RelayConnection? {
|
||||||
|
state.pool.get_relay(relay)?.connection
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct RelayDetailView_Previews: PreviewProvider {
|
struct RelayDetailView_Previews: PreviewProvider {
|
||||||
|
|||||||
@@ -8,58 +8,26 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct RelayStatus: View {
|
struct RelayStatus: View {
|
||||||
let pool: RelayPool
|
@ObservedObject var connection: RelayConnection
|
||||||
let relay: String
|
|
||||||
|
|
||||||
let timer = Timer.publish(every: 2, on: .main, in: .common).autoconnect()
|
|
||||||
|
|
||||||
@State var conn_color: Color = .gray
|
|
||||||
@State var conn_image: String = "network"
|
|
||||||
@State var connecting: Bool = false
|
|
||||||
|
|
||||||
func update_connection() {
|
|
||||||
for relay in pool.relays {
|
|
||||||
if relay.id == self.relay {
|
|
||||||
let c = relay.connection
|
|
||||||
if c.isConnected {
|
|
||||||
conn_image = "globe"
|
|
||||||
conn_color = .green
|
|
||||||
} else if c.isConnecting {
|
|
||||||
connecting = true
|
|
||||||
} else {
|
|
||||||
conn_image = "warning.fill"
|
|
||||||
conn_color = .red
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
HStack {
|
Group {
|
||||||
if connecting {
|
if connection.isConnecting {
|
||||||
ProgressView()
|
ProgressView()
|
||||||
.frame(width: 20, height: 20)
|
|
||||||
.padding(.trailing, 5)
|
|
||||||
} else {
|
} else {
|
||||||
Image(conn_image)
|
Image(connection.isConnected ? "globe" : "warning.fill")
|
||||||
.resizable()
|
.resizable()
|
||||||
.frame(width: 20, height: 20)
|
.foregroundColor(connection.isConnected ? .green : .red)
|
||||||
.foregroundColor(conn_color)
|
|
||||||
.padding(.trailing, 5)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.onReceive(timer) { _ in
|
.frame(width: 20, height: 20)
|
||||||
update_connection()
|
.padding(.trailing, 5)
|
||||||
}
|
|
||||||
.onAppear() {
|
|
||||||
update_connection()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct RelayStatus_Previews: PreviewProvider {
|
struct RelayStatusView_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
RelayStatus(pool: test_damus_state().pool, relay: "relay")
|
let connection = test_damus_state().pool.get_relay("relay")!.connection
|
||||||
|
RelayStatus(connection: connection)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,12 +26,18 @@ struct RelayToggle: View {
|
|||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
HStack {
|
HStack {
|
||||||
RelayStatus(pool: state.pool, relay: relay_id)
|
if let relay_connection {
|
||||||
|
RelayStatus(connection: relay_connection)
|
||||||
|
}
|
||||||
RelayType(is_paid: state.relay_metadata.lookup(relay_id: relay_id)?.is_paid ?? false)
|
RelayType(is_paid: state.relay_metadata.lookup(relay_id: relay_id)?.is_paid ?? false)
|
||||||
Toggle(relay_id, isOn: toggle_binding(relay_id: relay_id))
|
Toggle(relay_id, isOn: toggle_binding(relay_id: relay_id))
|
||||||
.toggleStyle(SwitchToggleStyle(tint: .accentColor))
|
.toggleStyle(SwitchToggleStyle(tint: .accentColor))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var relay_connection: RelayConnection? {
|
||||||
|
state.pool.get_relay(relay_id)?.connection
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct RelayToggle_Previews: PreviewProvider {
|
struct RelayToggle_Previews: PreviewProvider {
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ struct RelayView: View {
|
|||||||
if showActionButtons {
|
if showActionButtons {
|
||||||
RemoveButton(privkey: privkey, showText: false)
|
RemoveButton(privkey: privkey, showText: false)
|
||||||
}
|
}
|
||||||
else {
|
else if let relay_connection {
|
||||||
RelayStatus(pool: state.pool, relay: relay)
|
RelayStatus(connection: relay_connection)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,6 +67,10 @@ struct RelayView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var relay_connection: RelayConnection? {
|
||||||
|
state.pool.get_relay(relay)?.connection
|
||||||
|
}
|
||||||
|
|
||||||
func CopyAction(relay: String) -> some View {
|
func CopyAction(relay: String) -> some View {
|
||||||
Button {
|
Button {
|
||||||
UIPasteboard.general.setValue(relay, forPasteboardType: "public.plain-text")
|
UIPasteboard.general.setValue(relay, forPasteboardType: "public.plain-text")
|
||||||
|
|||||||
Reference in New Issue
Block a user