From dc53aeed3012e136217f80708773128f75b97533 Mon Sep 17 00:00:00 2001 From: _ <> Date: Sun, 2 May 2021 18:30:03 +0000 Subject: [PATCH] :lipstick: sort unregistered servers by name --- crates/ptth_relay/src/lib.rs | 30 ++++++++++------------- handlebars/relay/unregistered_servers.hbs | 29 +++++++++++++++------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/crates/ptth_relay/src/lib.rs b/crates/ptth_relay/src/lib.rs index 48feb76..fb35c6a 100644 --- a/crates/ptth_relay/src/lib.rs +++ b/crates/ptth_relay/src/lib.rs @@ -358,34 +358,30 @@ async fn handle_unregistered_servers_internal (state: &Arc ) let now = Utc::now (); - let server_list = state.unregistered_servers.to_vec ().await; - let mut seen_tripcodes = HashSet::new (); + let mut server_list = state.unregistered_servers.to_vec ().await; + + server_list.sort_by_key (|s| { + (s.name.clone (), s.tripcode.as_bytes ().clone (), now - s.seen) + }); + server_list.dedup_by_key (|s| { + (s.name.clone (), s.tripcode) + }); let unregistered_servers = server_list.into_iter () - .rev () - .filter_map (|x| { + .map (|x| { let last_seen = match pretty_print_last_seen (now, x.seen) { Negative => "Error (negative time)".into (), Connected => "Recently".into (), Description (s) => s, }; - let t = (x.name, x.tripcode); + let tripcode = base64::encode (x.tripcode.as_bytes ()); - if seen_tripcodes.contains (&t) { - return None; - } - seen_tripcodes.insert (t.clone ()); - - let (name, tripcode) = t; - - let tripcode = base64::encode (tripcode.as_bytes ()); - - Some (UnregisteredServer { - name, + UnregisteredServer { + name: x.name, tripcode, last_seen, - }) + } }).collect (); UnregisteredServerListPage { diff --git a/handlebars/relay/unregistered_servers.hbs b/handlebars/relay/unregistered_servers.hbs index b683c60..2d97a4e 100644 --- a/handlebars/relay/unregistered_servers.hbs +++ b/handlebars/relay/unregistered_servers.hbs @@ -12,24 +12,28 @@ AIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAA" rel="icon" type="image/x-icon" /> body { font-family: sans-serif; } - td { - padding: 0px; + form { + display: inline; } - td > * { - padding: 20px; - display: block; + td { + /*padding: 20px;*/ } .entry { } .grey { color: #888; - text-align: right; } .entry_list { width: 100%; border-collapse: collapse; } + .padded { + padding: 20px; + } + .submit { + padding: 10px; + } tbody tr:nth-child(odd) { background-color: #ddd; } @@ -54,9 +58,16 @@ AIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAA" rel="icon" type="image/x-icon" /> {{#each unregistered_servers}} - {{this.name}} - {{this.tripcode}} - {{this.last_seen}} + {{this.name}} + + {{this.tripcode}} +
+ + + +
+ + {{this.last_seen}} {{/each}}