From 6fc70748fe6a66c60cb2e3c1123a6e58d6af4664 Mon Sep 17 00:00:00 2001 From: ericholguin Date: Thu, 23 Mar 2023 23:56:04 -0600 Subject: [PATCH] connect or disconnect from relay detail view --- damus/Views/Relays/RelayDetailView.swift | 46 ++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/damus/Views/Relays/RelayDetailView.swift b/damus/Views/Relays/RelayDetailView.swift index c5dcbbf9..aca3a793 100644 --- a/damus/Views/Relays/RelayDetailView.swift +++ b/damus/Views/Relays/RelayDetailView.swift @@ -16,6 +16,15 @@ struct RelayDetailView: View { @Environment(\.dismiss) var dismiss + func check_connection() -> Bool { + for relay in state.pool.relays { + if relay.id == self.relay { + return true + } + } + return false + } + func FieldText(_ str: String?) -> some View { Text(str ?? "No data available") } @@ -23,6 +32,42 @@ struct RelayDetailView: View { var body: some View { Group { Form { + + if let privkey = state.keypair.privkey { + if check_connection() { + Button(action: { + guard let ev = state.contacts.event else { + return + } + + let descriptors = state.pool.descriptors + guard let new_ev = remove_relay( ev: ev, current_relays: descriptors, privkey: privkey, relay: relay) else { + return + } + + process_contact_event(state: state, ev: new_ev) + state.pool.send(.event(new_ev)) + dismiss() + }) { + Text("Disconnect From Relay", comment: "Button to disconnect from the relay.") + } + } else { + Button(action: { + guard let ev_before_add = state.contacts.event else { + return + } + guard let ev_after_add = add_relay(ev: ev_before_add, privkey: privkey, current_relays: state.pool.descriptors, relay: relay, info: .rw) else { + return + } + process_contact_event(state: state, ev: ev_after_add) + state.pool.send(.event(ev_after_add)) + dismiss() + }) { + Text("Connect To Relay", comment: "Button to connect to the relay.") + } + } + } + if let pubkey = nip11.pubkey { Section(NSLocalizedString("Admin", comment: "Label to display relay contact user.")) { UserView(damus_state: state, pubkey: pubkey) @@ -68,6 +113,7 @@ struct RelayDetailView: View { dismiss() } .navigationTitle(nip11.name ?? "") + .navigationBarTitleDisplayMode(.inline) } private func nipsList(nips: [Int]) -> AttributedString {