mirror of
https://github.com/mikedilger/gossip.git
synced 2024-09-29 16:31:18 +00:00
RelayEntry: Hide "force disconnect" button when relay is not currently connected
This commit is contained in:
parent
eb6ca10158
commit
4ee91da38a
@ -122,6 +122,7 @@ pub(super) fn relay_scroll_list(app: &mut GossipUi, ui: &mut Ui, relays: Vec<DbR
|
||||
|
||||
for db_relay in relays {
|
||||
let db_url = db_relay.url.clone();
|
||||
|
||||
// is THIS entry being edited?
|
||||
let edit = if let Some(edit_url) = &app.relays.edit {
|
||||
if edit_url == &db_url {
|
||||
@ -133,6 +134,8 @@ pub(super) fn relay_scroll_list(app: &mut GossipUi, ui: &mut Ui, relays: Vec<DbR
|
||||
} else {
|
||||
false
|
||||
};
|
||||
|
||||
// retrieve an updated copy of this relay when editing
|
||||
let db_relay = if has_edit_target {
|
||||
if let Some(entry) = GLOBALS.all_relays.get(&db_url) {
|
||||
entry.clone() // update
|
||||
@ -142,10 +145,19 @@ pub(super) fn relay_scroll_list(app: &mut GossipUi, ui: &mut Ui, relays: Vec<DbR
|
||||
} else {
|
||||
db_relay // don't update
|
||||
};
|
||||
|
||||
// is this relay currently connected?
|
||||
let is_connected = if let Some(_) = GLOBALS.connected_relays.get(&db_url) {
|
||||
true
|
||||
} else {
|
||||
false
|
||||
};
|
||||
|
||||
let enabled = edit || !is_editing;
|
||||
let mut widget = RelayEntry::new(db_relay, app);
|
||||
widget.set_edit(edit);
|
||||
widget.set_enabled(enabled);
|
||||
widget.set_connected(is_connected);
|
||||
if let Some(ref assignment) = GLOBALS.relay_picker.get_relay_assignment(&db_url) {
|
||||
widget.set_user_count(assignment.pubkeys.len());
|
||||
}
|
||||
|
@ -136,6 +136,7 @@ pub struct RelayEntry {
|
||||
db_relay: DbRelay,
|
||||
view: RelayEntryView,
|
||||
enabled: bool,
|
||||
connected: bool,
|
||||
user_count: Option<usize>,
|
||||
usage: UsageBits,
|
||||
accent: Color32,
|
||||
@ -155,6 +156,7 @@ impl RelayEntry {
|
||||
db_relay,
|
||||
view: RelayEntryView::List,
|
||||
enabled: true,
|
||||
connected: false,
|
||||
user_count: None,
|
||||
usage,
|
||||
accent,
|
||||
@ -180,6 +182,10 @@ impl RelayEntry {
|
||||
self.user_count = Some(count);
|
||||
}
|
||||
|
||||
pub fn set_connected(&mut self, connected: bool) {
|
||||
self.connected = connected;
|
||||
}
|
||||
|
||||
// pub fn view(&self) -> RelayEntryView {
|
||||
// self.view.clone()
|
||||
// }
|
||||
@ -312,7 +318,7 @@ impl RelayEntry {
|
||||
let pos = rect.left_bottom() + vec2(TEXT_LEFT, -10.0 -OUTER_MARGIN_BOTTOM -line_height);
|
||||
let id = self.make_id("remove_button");
|
||||
let text = "Remove from personal list";
|
||||
let response = draw_link_at(ui, id, pos, text.into(), Align::Min, self.enabled, true);
|
||||
let mut response = draw_link_at(ui, id, pos, text.into(), Align::Min, self.enabled, true);
|
||||
if response.clicked() {
|
||||
// TODO remove relay
|
||||
let _ = GLOBALS.to_overlord.send(
|
||||
@ -320,15 +326,18 @@ impl RelayEntry {
|
||||
);
|
||||
}
|
||||
|
||||
let pos = pos + vec2(200.0, 0.0);
|
||||
let id = self.make_id("disconnect_button");
|
||||
let text = "Force disconnect";
|
||||
let response = response | draw_link_at(ui, id, pos, text.into(), Align::Min, self.enabled, true);
|
||||
if response.clicked() {
|
||||
let _ = GLOBALS.to_overlord.send(
|
||||
ToOverlordMessage::DropRelay(self.db_relay.url.to_owned()),
|
||||
);
|
||||
if self.connected {
|
||||
let pos = pos + vec2(200.0, 0.0);
|
||||
let id = self.make_id("disconnect_button");
|
||||
let text = "Force disconnect";
|
||||
response |= draw_link_at(ui, id, pos, text.into(), Align::Min, self.enabled, true);
|
||||
if response.clicked() {
|
||||
let _ = GLOBALS.to_overlord.send(
|
||||
ToOverlordMessage::DropRelay(self.db_relay.url.to_owned()),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// pass the response back so the page knows the edit view should close
|
||||
response
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user