From 64d2707366e585179f88b13f085d1d32af758140 Mon Sep 17 00:00:00 2001
From: Paul <paulmakles@gmail.com>
Date: Fri, 19 Feb 2021 13:11:33 +0000
Subject: [PATCH] Find mutual for users; allow dots in usernames.

---
 src/routes/onboard/complete.rs  |  2 +-
 src/routes/users/find_mutual.rs | 13 +++++--------
 2 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/src/routes/onboard/complete.rs b/src/routes/onboard/complete.rs
index 45f30d7..a35e1b1 100644
--- a/src/routes/onboard/complete.rs
+++ b/src/routes/onboard/complete.rs
@@ -10,7 +10,7 @@ use serde::{Deserialize, Serialize};
 use validator::Validate;
 
 lazy_static! {
-    static ref RE_USERNAME: Regex = Regex::new(r"^[a-zA-Z0-9_]+$").unwrap();
+    static ref RE_USERNAME: Regex = Regex::new(r"^[a-zA-Z0-9_.]+$").unwrap();
 }
 
 #[derive(Validate, Serialize, Deserialize)]
diff --git a/src/routes/users/find_mutual.rs b/src/routes/users/find_mutual.rs
index 1d52e59..7b3f1f6 100644
--- a/src/routes/users/find_mutual.rs
+++ b/src/routes/users/find_mutual.rs
@@ -8,15 +8,12 @@ use rocket_contrib::json::JsonValue;
 
 #[get("/<target>/mutual")]
 pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
-    let channels = get_collection("channels")
+    let users = get_collection("users")
         .find(
             doc! {
-                "$or": [
-                    { "type": "Group" },
-                ],
                 "$and": [
-                    { "recipients": &user.id },
-                    { "recipients": &target.id }
+                    { "relations.id": &user.id },
+                    { "relations.id": &target.id }
                 ]
             },
             FindOptions::builder().projection(doc! { "_id": 1 }).build(),
@@ -24,7 +21,7 @@ pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
         .await
         .map_err(|_| Error::DatabaseError {
             operation: "find",
-            with: "channels",
+            with: "users",
         })?
         .filter_map(async move |s| s.ok())
         .collect::<Vec<Document>>()
@@ -33,5 +30,5 @@ pub async fn req(user: User, target: Ref) -> Result<JsonValue> {
         .filter_map(|x| x.get_str("_id").ok().map(|x| x.to_string()))
         .collect::<Vec<String>>();
 
-    Ok(json!({ "channels": channels }))
+    Ok(json!({ "users": users }))
 }
-- 
GitLab