From 77a23f89698d4845a21cb2681197ca02f064bc7d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20K=C3=B6sters?= <timo@koesters.xyz>
Date: Mon, 14 Jun 2021 11:24:32 +0200
Subject: [PATCH] improvement: filter our room directory

Fixes #35
---
 src/client_server/directory.rs | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/src/client_server/directory.rs b/src/client_server/directory.rs
index ad609cd5e..c41e81e4a 100644
--- a/src/client_server/directory.rs
+++ b/src/client_server/directory.rs
@@ -315,6 +315,36 @@ pub async fn get_public_rooms_filtered_helper(
             Ok(chunk)
         })
         .filter_map(|r: Result<_>| r.ok()) // Filter out buggy rooms
+        .filter(|chunk| {
+            if let Some(query) = filter
+                .generic_search_term
+                .as_ref()
+                .map(|q| q.to_lowercase())
+            {
+                if let Some(name) = &chunk.name {
+                    if name.to_lowercase().contains(&query) {
+                        return true;
+                    }
+                }
+
+                if let Some(topic) = &chunk.topic {
+                    if topic.to_lowercase().contains(&query) {
+                        return true;
+                    }
+                }
+
+                if let Some(canonical_alias) = &chunk.canonical_alias {
+                    if canonical_alias.as_str().to_lowercase().contains(&query) {
+                        return true;
+                    }
+                }
+
+                false
+            } else {
+                // No search term
+                true
+            }
+        })
         // We need to collect all, so we can sort by member count
         .collect::<Vec<_>>();
 
-- 
GitLab