Merge branch 'master' into improve-wallet-selector

This commit is contained in:
Suhail Saqan
2022-12-30 01:41:05 -06:00
committed by GitHub
17 changed files with 310 additions and 88 deletions

View File

@@ -17,15 +17,16 @@ struct ConfigView: View {
@State var privkey: String
@State var privkey_copied: Bool = false
@State var pubkey_copied: Bool = false
@State var allWallets: [Wallet] = Wallet.allCases
@State var relays: [RelayDescriptor]
@EnvironmentObject var user_settings: UserSettingsStore
@State var allWallets: [Wallet] = Wallet.allCases
let generator = UIImpactFeedbackGenerator(style: .light)
init(state: DamusState) {
self.state = state
_privkey = State(initialValue: self.state.keypair.privkey_bech32 ?? "")
_relays = State(initialValue: state.pool.descriptors)
}
// TODO: (jb55) could be more general but not gonna worry about it atm
@@ -41,16 +42,28 @@ struct ConfigView: View {
}
}
var recommended: [RelayDescriptor] {
let rs: [RelayDescriptor] = []
return BOOTSTRAP_RELAYS.reduce(into: rs) { (xs, x) in
if let _ = state.pool.get_relay(x) {
} else {
xs.append(RelayDescriptor(url: URL(string: x)!, info: .rw))
}
}
}
var body: some View {
ZStack(alignment: .leading) {
Form {
if let ev = state.contacts.event {
Section("Relays") {
if let relays = decode_json_relays(ev.content) {
List(Array(relays.keys.sorted()), id: \.self) { relay in
RelayView(state: state, ev: ev, relay: relay)
}
}
Section("Relays") {
List(Array(relays), id: \.url) { relay in
RelayView(state: state, relay: relay.url.absoluteString)
}
}
Section("Recommended Relays") {
List(recommended, id: \.url) { r in
RecommendedRelayView(damus: state, relay: r.url.absoluteString)
}
}
@@ -127,7 +140,6 @@ struct ConfigView: View {
}
.sheet(isPresented: $show_add_relay) {
AddRelayView(show_add_relay: $show_add_relay, relay: $new_relay) { m_relay in
guard let relay = m_relay else {
return
}
@@ -152,17 +164,21 @@ struct ConfigView: View {
state.pool.connect(to: [new_relay])
guard let new_ev = add_relay(ev: ev, privkey: privkey, relay: new_relay, info: info) else {
guard let new_ev = add_relay(ev: ev, privkey: privkey, current_relays: state.pool.descriptors, relay: new_relay, info: info) else {
return
}
state.contacts.event = new_ev
process_contact_event(pool: state.pool, contacts: state.contacts, pubkey: state.pubkey, ev: ev)
state.pool.send(.event(new_ev))
}
}
.onReceive(handle_notify(.switched_timeline)) { _ in
dismiss()
}
.onReceive(handle_notify(.relays_changed)) { _ in
self.relays = state.pool.descriptors
}
}
}