network.rs (1127B)
1 use crate::runtime::config::RuntimeConfig; 2 use crate::view::runtime::{RelayEntryView, RelayListView}; 3 4 pub fn relay_list(config: &RuntimeConfig) -> RelayListView { 5 let relays = config 6 .relay 7 .urls 8 .iter() 9 .cloned() 10 .map(|url| RelayEntryView { 11 url, 12 read: true, 13 write: true, 14 }) 15 .collect::<Vec<_>>(); 16 17 let state = if relays.is_empty() { 18 "unconfigured" 19 } else { 20 "configured" 21 }; 22 23 RelayListView { 24 state: state.to_owned(), 25 source: config.relay.source.as_str().to_owned(), 26 publish_policy: config.relay.publish_policy.as_str().to_owned(), 27 count: relays.len(), 28 reason: relays 29 .is_empty() 30 .then_some("no relays are configured for this operator session".to_owned()), 31 relays, 32 actions: relay_actions(config), 33 } 34 } 35 36 fn relay_actions(config: &RuntimeConfig) -> Vec<String> { 37 if config.relay.urls.is_empty() { 38 vec!["radroots --relay wss://relay.example.com relay list".to_owned()] 39 } else { 40 Vec::new() 41 } 42 }