From 941e3e6e60ec9000131e55cc5a5b481b82c2bd8a Mon Sep 17 00:00:00 2001
From: kaiyou <pierre@jaury.eu>
Date: Wed, 16 Dec 2020 17:23:57 +0100
Subject: [PATCH] Display links to Matrix profiles

---
 hiboo/application/social.py                         | 13 +++++++++++--
 .../templates/application_synapse/room.html         |  6 +++++-
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/hiboo/application/social.py b/hiboo/application/social.py
index e891d60..ab52de1 100644
--- a/hiboo/application/social.py
+++ b/hiboo/application/social.py
@@ -36,6 +36,7 @@ class SynapseApplication(base.SAMLApplication):
 
     class Form(base.BaseForm):
         application_uri = fields.StringField(_("Synapse homeserver URL"), [validators.URL(require_tld=False)])
+        domain = fields.StringField(_("Synapse hosted domain"))
         admin_token = fields.StringField(_("Synapse administrator token"))
         submit = fields.SubmitField(_('Submit'))
 
@@ -85,12 +86,20 @@ class SynapseApplication(base.SAMLApplication):
         if roomid:
             client = self.get_axon(service)
             room = client.get_room(roomid)
-            members = client.get_room_members(roomid)
+            members = {}
+            suffix = ":" + service.config.get("domain")
+            for member in client.get_room_members(roomid).get("members", []):
+                if member.endswith(suffix):
+                    members[member] = service.profiles.filter_by(
+                        username=member[1:-len(suffix)]
+                    ).first()
+                else:
+                    members[member] = None
         else:
             room = members = None
         return flask.render_template(
             "application_synapse/room.html", form=form, room=room,
-            members=members
+            members=members, service=service
         )
 
 
diff --git a/hiboo/application/templates/application_synapse/room.html b/hiboo/application/templates/application_synapse/room.html
index 09b2155..3f1b854 100644
--- a/hiboo/application/templates/application_synapse/room.html
+++ b/hiboo/application/templates/application_synapse/room.html
@@ -8,9 +8,13 @@
             <tr>
               <th>{% trans %}Member{% endtrans %}</th>
             </tr>
-            {% for member in members["members"] %}
+            {% for member, profile in members.items() %}
             <tr>
+              {% if profile %}
+              <td><a href="{{ url_for("profile.details", profile_uuid=profile.uuid) }}">{{ member }}</a></td>
+              {% else %}
               <td>{{ member }}</td>
+              {% endif %}
             </tr>
             {% endfor %}
           </table>
-- 
GitLab