diff --git a/bp/social/routes.py b/bp/social/routes.py
index 04c0d99..7878156 100644
--- a/bp/social/routes.py
+++ b/bp/social/routes.py
@@ -138,13 +138,50 @@ def register(url_prefix="/social"):
async def search():
actor = getattr(g, "_social_actor", None)
query = request.args.get("q", "").strip()
- result = None
+ actors = []
+ total = 0
+ followed_urls: set[str] = set()
if query:
- result = await services.federation.search_remote_actor(g.s, query)
+ actors, total = await services.federation.search_actors(g.s, query)
+ if actor:
+ following, _ = await services.federation.get_following(
+ g.s, actor.preferred_username, page=1, per_page=1000,
+ )
+ followed_urls = {a.actor_url for a in following}
return await render_template(
"federation/search.html",
query=query,
- result=result,
+ actors=actors,
+ total=total,
+ page=1,
+ followed_urls=followed_urls,
+ actor=actor,
+ )
+
+ @bp.get("/search/page")
+ async def search_page():
+ actor = getattr(g, "_social_actor", None)
+ query = request.args.get("q", "").strip()
+ page = request.args.get("page", 1, type=int)
+ actors = []
+ total = 0
+ followed_urls: set[str] = set()
+ if query:
+ actors, total = await services.federation.search_actors(
+ g.s, query, page=page,
+ )
+ if actor:
+ following, _ = await services.federation.get_following(
+ g.s, actor.preferred_username, page=1, per_page=1000,
+ )
+ followed_urls = {a.actor_url for a in following}
+ return await render_template(
+ "federation/_search_results.html",
+ actors=actors,
+ total=total,
+ page=page,
+ query=query,
+ followed_urls=followed_urls,
actor=actor,
)
diff --git a/shared b/shared
index b16ba34..f085d4a 160000
--- a/shared
+++ b/shared
@@ -1 +1 @@
-Subproject commit b16ba34b40291a71a546130862acc00959c225fd
+Subproject commit f085d4a8d04c70b50330a743c1cfd50ff5d6a81c
diff --git a/templates/federation/_search_results.html b/templates/federation/_search_results.html
new file mode 100644
index 0000000..ca8c248
--- /dev/null
+++ b/templates/federation/_search_results.html
@@ -0,0 +1,61 @@
+{% for a in actors %}
+
+ {% else %}
+
No results found for {{ query }}
+{% if query and total %} +{{ total }} result{{ 's' if total != 1 }} for {{ query }}
+{% elif query %} +No results found for {{ query }}
{% endif %} -{% if result %} - {% include "federation/actor_card.html" %} -{% endif %} +