made relay removal more obvious

This commit is contained in:
ericholguin
2023-03-23 23:54:22 -06:00
parent e996d5703b
commit 8297859f18

View File

@@ -11,32 +11,53 @@ struct RelayView: View {
let state: DamusState let state: DamusState
let relay: String let relay: String
@Binding var showActionButtons: Bool
var body: some View { var body: some View {
Group { Group {
HStack { HStack {
RelayStatus(pool: state.pool, relay: relay) if let privkey = state.keypair.privkey {
RelayType(is_paid: state.relay_metadata.lookup(relay_id: relay)?.is_paid ?? false) if showActionButtons {
if let meta = state.relay_metadata.lookup(relay_id: relay) { RemoveButton(privkey: privkey, showText: false)
NavigationLink {
RelayDetailView(state: state, relay: relay, nip11: meta)
} label: {
Text(relay)
} }
else {
RelayStatus(pool: state.pool, relay: relay)
}
}
RelayType(is_paid: state.relay_metadata.lookup(relay_id: relay)?.is_paid ?? false)
if let meta = state.relay_metadata.lookup(relay_id: relay) {
Text(relay)
.background(
NavigationLink("", destination: RelayDetailView(state: state, relay: relay, nip11: meta)).opacity(0.0)
.disabled(showActionButtons)
)
Spacer()
Image(systemName: "info.circle")
.font(.system(size: 20, weight: .medium))
.foregroundColor(Color.accentColor)
} else { } else {
Text(relay) Text(relay)
Spacer()
Image(systemName: "questionmark.circle")
.font(.system(size: 20, weight: .medium))
.foregroundColor(.gray)
} }
} }
} }
.swipeActions { .swipeActions {
if let privkey = state.keypair.privkey { if let privkey = state.keypair.privkey {
RemoveAction(privkey: privkey) RemoveButton(privkey: privkey, showText: false)
.tint(.red)
} }
} }
.contextMenu { .contextMenu {
CopyAction(relay: relay) CopyAction(relay: relay)
if let privkey = state.keypair.privkey { if let privkey = state.keypair.privkey {
RemoveAction(privkey: privkey) RemoveButton(privkey: privkey, showText: true)
} }
} }
} }
@@ -49,8 +70,8 @@ struct RelayView: View {
} }
} }
func RemoveAction(privkey: String) -> some View { func RemoveButton(privkey: String, showText: Bool) -> some View {
Button { Button(action: {
guard let ev = state.contacts.event else { guard let ev = state.contacts.event else {
return return
} }
@@ -62,15 +83,20 @@ struct RelayView: View {
process_contact_event(state: state, ev: new_ev) process_contact_event(state: state, ev: new_ev)
state.pool.send(.event(new_ev)) state.pool.send(.event(new_ev))
} label: { }) {
Label(NSLocalizedString("Delete", comment: "Button to delete a relay server that the user connects to."), systemImage: "trash") if showText {
Text(NSLocalizedString("Disconnect", comment: "Button to disconnect from a relay server."))
}
Image(systemName: "minus.circle.fill")
.font(.system(size: 20, weight: .medium))
.foregroundColor(.red)
.padding(.leading, 5)
} }
.tint(.red)
} }
} }
struct RelayView_Previews: PreviewProvider { struct RelayView_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
RelayView(state: test_damus_state(), relay: "wss://relay.damus.io") RelayView(state: test_damus_state(), relay: "wss://relay.damus.io", showActionButtons: .constant(false))
} }
} }