From 9cd1d0fe83adfab461af5063c0e987317af4986b Mon Sep 17 00:00:00 2001 From: h7x4 Date: Thu, 23 Apr 2026 19:02:42 +0900 Subject: [PATCH] finger: dedup results --- src/server/varlink_api.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/server/varlink_api.rs b/src/server/varlink_api.rs index b6f0d0e..1a4b361 100644 --- a/src/server/varlink_api.rs +++ b/src/server/varlink_api.rs @@ -1,6 +1,7 @@ use std::os::fd::OwnedFd; use anyhow::Context; +use itertools::Itertools; use serde::{Deserialize, Serialize}; use zlink::{ReplyError, service::MethodReply}; @@ -166,7 +167,6 @@ impl VarlinkRoowhoo2ClientServer { _disable_user_account_db: bool, ) -> VarlinkFingerResponse { match user_queries { - // TODO: deduplicate results Some(usernames) => usernames .into_iter() .flat_map::, _>(|username| { @@ -175,6 +175,10 @@ impl VarlinkRoowhoo2ClientServer { .map(|res| (username.clone(), res)) .collect() }) + .dedup_by(|a, b| match (&a.1, &b.1) { + (Ok(user_a), Ok(user_b)) => user_a.username == user_b.username, + _ => false, + }) .filter_map(|(username, user)| match user { Ok(user_info) => Some(user_info), Err(err) => {