damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

RelayToggle.swift (1435B)


      1 //
      2 //  RelayToggle.swift
      3 //  damus
      4 //
      5 //  Created by William Casarin on 2023-02-10.
      6 //
      7 
      8 import SwiftUI
      9 
     10 struct RelayToggle: View {
     11     let state: DamusState
     12     let timeline: Timeline
     13     let relay_id: RelayURL
     14 
     15     func toggle_binding(relay_id: RelayURL) -> Binding<Bool> {
     16         return Binding(get: {
     17             !state.relay_filters.is_filtered(timeline: timeline, relay_id: relay_id)
     18         }, set: { on in
     19             if !on {
     20                 state.relay_filters.insert(timeline: timeline, relay_id: relay_id)
     21             } else {
     22                 state.relay_filters.remove(timeline: timeline, relay_id: relay_id)
     23             }
     24         })
     25     }
     26     
     27     var body: some View {
     28         HStack {
     29             if let relay_connection {
     30                 RelayStatusView(connection: relay_connection)
     31             }
     32             RelayType(is_paid: state.relay_model_cache.model(with_relay_id: relay_id)?.metadata.is_paid ?? false)
     33             Toggle(relay_id.absoluteString, isOn: toggle_binding(relay_id: relay_id))
     34                 .toggleStyle(SwitchToggleStyle(tint: .accentColor))
     35         }
     36     }
     37     
     38     private var relay_connection: RelayConnection? {
     39         state.pool.get_relay(relay_id)?.connection
     40     }
     41 }
     42 
     43 struct RelayToggle_Previews: PreviewProvider {
     44     static var previews: some View {
     45         RelayToggle(state: test_damus_state, timeline: .search, relay_id: RelayURL("wss://jb55.com")!)
     46             .padding()
     47     }
     48 }