diff --git a/resolvers/community.py b/resolvers/community.py index 5a9a3e04..f3ce65b1 100644 --- a/resolvers/community.py +++ b/resolvers/community.py @@ -86,3 +86,12 @@ def community_unsubscribe(user, slug): raise Exception("subscription not exist") session.delete(sub) session.commit() + +def get_subscribed_communities(user_slug): + with local_session() as session: + rows = session.query(Community.slug).\ + join(CommunitySubscription).\ + where(CommunitySubscription.subscriber == user_slug).\ + all() + slugs = [row.slug for row in rows] + return slugs diff --git a/resolvers/profile.py b/resolvers/profile.py index e3b01b21..9e7ed6b2 100644 --- a/resolvers/profile.py +++ b/resolvers/profile.py @@ -5,7 +5,7 @@ from orm.base import local_session from orm.topic import Topic, TopicSubscription from resolvers.base import mutation, query, subscription from resolvers.topics import topic_subscribe, topic_unsubscribe -from resolvers.community import community_subscribe, community_unsubscribe +from resolvers.community import community_subscribe, community_unsubscribe, get_subscribed_communities from auth.authenticate import login_required from inbox_resolvers.inbox import get_total_unread_messages_for_user @@ -32,9 +32,10 @@ def _get_user_subscribed_authors(slug): async def get_user_info(slug): return { - "totalUnreadMessages" : await get_total_unread_messages_for_user(slug), - "userSubscribedTopics" : _get_user_subscribed_topic_slugs(slug), - "userSubscribedAuthors": _get_user_subscribed_authors(slug) + "totalUnreadMessages" : await get_total_unread_messages_for_user(slug), + "userSubscribedTopics" : _get_user_subscribed_topic_slugs(slug), + "userSubscribedAuthors" : _get_user_subscribed_authors(slug), + "userSubscribedCommunities": get_subscribed_communities(slug) } @query.field("getCurrentUser") diff --git a/schema.graphql b/schema.graphql index ad60d00e..96c40139 100644 --- a/schema.graphql +++ b/schema.graphql @@ -7,9 +7,10 @@ type Result { } type CurrentUserInfo { - totalUnreadMessages : Int - userSubscribedTopics : [String]! - userSubscribedAuthors: [User]! + totalUnreadMessages : Int + userSubscribedTopics : [String]! + userSubscribedAuthors : [User]! + userSubscribedCommunities : [String]! } type AuthResult {