diff --git a/federation/bp/fragments/routes.py b/federation/bp/fragments/routes.py index ac9a256..734743b 100644 --- a/federation/bp/fragments/routes.py +++ b/federation/bp/fragments/routes.py @@ -9,6 +9,7 @@ from __future__ import annotations from quart import Blueprint, Response, request from shared.infrastructure.fragments import FRAGMENT_HEADER +from shared.sexp.jinja_bridge import sexp def register(): @@ -31,8 +32,20 @@ def register(): # --- link-card fragment: actor profile preview card -------------------------- + def _render_federation_link_card(actor, link: str) -> str: + return sexp( + '(~link-card :link link :title title :image image' + ' :icon "fas fa-user" :subtitle username' + ' :detail summary :data-app "federation")', + link=link, + title=actor.display_name or actor.preferred_username, + image=None, + username=f"@{actor.preferred_username}" if actor.preferred_username else None, + summary=actor.summary, + ) + async def _link_card_handler(): - from quart import g, render_template + from quart import g from shared.services.registry import services from shared.infrastructure.urls import federation_url @@ -48,13 +61,8 @@ def register(): parts.append(f"") actor = await services.federation.get_actor_by_username(g.s, u) if actor: - parts.append(await render_template( - "fragments/link_card.html", - display_name=actor.display_name, - username=actor.preferred_username, - avatar_url=None, - summary=actor.summary, - link=federation_url(f"/users/{actor.preferred_username}"), + parts.append(_render_federation_link_card( + actor, federation_url(f"/users/{actor.preferred_username}"), )) return "\n".join(parts) @@ -65,13 +73,8 @@ def register(): actor = await services.federation.get_actor_by_username(g.s, lookup) if not actor: return "" - return await render_template( - "fragments/link_card.html", - display_name=actor.display_name, - username=actor.preferred_username, - avatar_url=None, - summary=actor.summary, - link=federation_url(f"/users/{actor.preferred_username}"), + return _render_federation_link_card( + actor, federation_url(f"/users/{actor.preferred_username}"), ) _handlers["link-card"] = _link_card_handler