summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erikj@jki.re>2017-09-26 11:33:21 +0100
committerGitHub <noreply@github.com>2017-09-26 11:33:21 +0100
commit0d7c7fd9075c86ee2c058723656377ff03378379 (patch)
treed7862f00c1c9eaec536ed2804d18af8f9d286ea6
parentRemove user from group summary when the leave the group (diff)
parentAdd is_publicised to group summary (diff)
downloadsynapse-0d7c7fd9075c86ee2c058723656377ff03378379.tar.xz
Merge pull request #2471 from matrix-org/erikj/group_summary_publicised
Add is_publicised to group summary
-rw-r--r--synapse/handlers/groups_local.py56
1 files changed, 31 insertions, 25 deletions
diff --git a/synapse/handlers/groups_local.py b/synapse/handlers/groups_local.py
index b4833f8ef8..14fdf06b58 100644
--- a/synapse/handlers/groups_local.py
+++ b/synapse/handlers/groups_local.py
@@ -96,32 +96,38 @@ class GroupsLocalHandler(object):
             res = yield self.groups_server_handler.get_group_summary(
                 group_id, requester_user_id
             )
-            defer.returnValue(res)
-
-        res = yield self.transport_client.get_group_summary(
-            get_domain_from_id(group_id), group_id, requester_user_id,
-        )
-
-        # Loop through the users and validate the attestations.
-        chunk = res["users_section"]["users"]
-        valid_users = []
-        for entry in chunk:
-            g_user_id = entry["user_id"]
-            attestation = entry.pop("attestation")
-            try:
-                yield self.attestations.verify_attestation(
-                    attestation,
-                    group_id=group_id,
-                    user_id=g_user_id,
-                )
-                valid_users.append(entry)
-            except Exception as e:
-                logger.info("Failed to verify user is in group: %s", e)
-
-        res["users_section"]["users"] = valid_users
+        else:
+            res = yield self.transport_client.get_group_summary(
+                get_domain_from_id(group_id), group_id, requester_user_id,
+            )
 
-        res["users_section"]["users"].sort(key=lambda e: e.get("order", 0))
-        res["rooms_section"]["rooms"].sort(key=lambda e: e.get("order", 0))
+            # Loop through the users and validate the attestations.
+            chunk = res["users_section"]["users"]
+            valid_users = []
+            for entry in chunk:
+                g_user_id = entry["user_id"]
+                attestation = entry.pop("attestation")
+                try:
+                    yield self.attestations.verify_attestation(
+                        attestation,
+                        group_id=group_id,
+                        user_id=g_user_id,
+                    )
+                    valid_users.append(entry)
+                except Exception as e:
+                    logger.info("Failed to verify user is in group: %s", e)
+
+            res["users_section"]["users"] = valid_users
+
+            res["users_section"]["users"].sort(key=lambda e: e.get("order", 0))
+            res["rooms_section"]["rooms"].sort(key=lambda e: e.get("order", 0))
+
+        # Add `is_publicised` flag to indicate whether the user has publicised their
+        # membership of the group on their profile
+        result = yield self.store.get_publicised_groups_for_user(requester_user_id)
+        is_publicised = group_id in result
+
+        res.setdefault("user", {})["is_publicised"] = is_publicised
 
         defer.returnValue(res)