Skip to content

Commit fd0882c

Browse files
committed
only show relay delete button next to account (advertised) relays
1 parent e4f5e32 commit fd0882c

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

crates/notedeck/src/accounts.rs

+9
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,15 @@ impl Accounts {
633633
self.get_combined_relays(self.get_selected_account_data(), |_| true)
634634
}
635635

636+
// returns the active account's relays or empty set if there are none (no bootstrap)
637+
pub fn get_advertised_relays(&self) -> BTreeSet<RelaySpec> {
638+
if let Some(data) = self.get_selected_account_data() {
639+
data.relay.advertised.lock().unwrap().clone()
640+
} else {
641+
BTreeSet::new()
642+
}
643+
}
644+
636645
pub fn update(&mut self, subman: &mut SubMan, _ctx: &egui::Context) {
637646
// IMPORTANT - This function is called in the UI update loop,
638647
// make sure it is fast when idle

crates/notedeck_columns/src/ui/relay.rs

+14-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::collections::HashMap;
1+
use std::collections::{BTreeSet, HashMap};
22

33
use crate::colors::PINK;
44
use crate::relay_pool_manager::{RelayPoolManager, RelayStatus};
@@ -69,6 +69,12 @@ impl<'a> RelayView<'a> {
6969

7070
/// Show the current relays and return a relay the user selected to delete
7171
fn show_relays(&'a self, ui: &mut Ui) -> Option<String> {
72+
let advertised_relays: BTreeSet<String> = self
73+
.accounts
74+
.get_advertised_relays()
75+
.into_iter()
76+
.map(|rs| rs.url)
77+
.collect();
7278
let mut relay_to_remove = None;
7379
for (index, relay_info) in self.manager.get_relay_infos().iter().enumerate() {
7480
ui.add_space(8.0);
@@ -106,10 +112,13 @@ impl<'a> RelayView<'a> {
106112
});
107113

108114
ui.with_layout(Layout::right_to_left(Align::Center), |ui| {
109-
if ui.add(delete_button(ui.visuals().dark_mode)).clicked() {
110-
relay_to_remove = Some(relay_info.relay_url.to_string());
111-
};
112-
115+
if advertised_relays.contains(relay_info.relay_url) {
116+
if ui.add(delete_button(ui.visuals().dark_mode)).clicked() {
117+
relay_to_remove = Some(relay_info.relay_url.to_string());
118+
};
119+
} else {
120+
ui.add_space(16.0);
121+
}
113122
show_connection_status(ui, relay_info.status);
114123
});
115124
});

0 commit comments

Comments
 (0)