Groups¶
Create Groups¶
You can create and manage groups from the SDK and Dashboard. To create groups from the dashboard navigate to the Groups page and click on the New Group button.
Group creation needs the following information:
- Group ID: this is a unique id that you provide to identify the group
- Title / Description: Name of the Group and description that you can make visible to your users. You can also enable users to search and discover Groups by Group name. These can also be localized to 36+ supported languages.
- Icon: Group icon is optional. Icon can be displayed with name and description in the app
- Permissions: with group permissions you can define which users can post activity and interact with the group. Interaction includes comments and reactions. You can define who can post and interact with the group feeds i.e. all group members, admins or owner or some combination.
- Privacy: impacts who can join and access the feed and list members of the group
- Discoverability: determines if this group is visible when users search by group name
- Properties: additional metadata that you can add to the group e.g custom data that might define UI elements for group like group color.
To create groups from the SDK:
val groupContent = GroupContent.create("sample_group")
.withTitle("Sample Group")
.withDescription("Shows how to create a group")
.withAvatar(MediaAttachment.imageUrl(avatarUrl))
// or attach an image
.withAvatar(MediaAttachment.image(avatarImage))
.withDiscoverable(true) // group will be visible for everyone
.withPrivate(true) // joining requires approval
.setPermission(CommunitiesAction.POST, Role.ADMIN) // only admins can create posts
.setPermission(CommunitiesAction.REACT, Role.MEMBER) // members can add reactions
Communities.createGroup(groupContent, {result: Group ->
print("Group created: $result")
}, { error ->
print("Failed to create group, error: $error")
})
let groupContent = GroupContent(groupId: "sample_group")
groupContent.title = "Sample Group"
groupContent.groupDescription = "Shows how to create a group"
groupContent.avatar = MediaAttachment.imageUrl(avatarUrl)
// or attach an image
// groupContent.avatar = MediaAttachment.image(avatarImage)
groupContent.permissions[.post] = .admin // only admins can create posts
groupContent.permissions[.react] = .member // members can add reactions
groupContent.isDiscoverable = true // group will be visible for everyone
groupContent.isPrivate = true // joining requires approval
Communities.createGroup(groupContent, { group in
print("Group created: \(group)")
}, failure: { error in
print("Failed to create group: \(error)")
};
var groupContent = new GroupContent("sample_group");
groupContent.Title = "Sample Group";
groupContent.Description = "Shows how to create a group";
groupContent.Avatar = MediaAttachment.WithImageUrl(avatarUrl);
// or attach an image
// groupContent.Avatar = MediaAttachment.withImage(avatarImage);
groupContent.AddPermission(CommunitiesAction.Post, MemberRole.Admin); // only admins can create posts
groupContent.AddPermission(CommunitiesAction.React, MemberRole.Member); // members can add reactions
groupContent.IsDiscoverable = true; // group will be visible for everyone
groupContent.IsPrivate = true; // joining requires approval
Communities.CreateGroup(groupContent, (group) => {
Debug.Log("Group created: ", + group);
}, (error) => {
Debug.Log("Failed to create group, error: " + error);
});
GroupContent groupContent = new GroupContent();
groupContent.id = 'sample_group';
groupContent.title = 'Sample Group';
groupContent.description = 'Shows how to create a group';
groupContent.avatar = MediaAttachment.withImageUrl(avatarUrl);
// or attach an image
groupContent.avatar = MediaAttachment.withBase64Image(avatarImage);
groupContent.permissions[CommunitiesAction.post] = Role.admin; // only admins can create posts
groupContent.permissions[CommunitiesAction.react] = Role.member; // members can add reactions
groupContent.isDiscoverable = true; // group will be visible for everyone
groupContent.isPrivate = true; // joining requires approval
Communities.createGroup(groupContent).then((group) {
print('Group created');
}).catchError((error) {
print('Failed to create group, error: ' + error);
});
const groupContent = new GroupContent();
groupContent.id = 'sample_group';
groupContent.title = 'Sample Group';
groupContent.description = 'Shows how to create a group';
groupContent.avatar = MediaAttachment.withImageUrl(avatarUrl);
// or attach an image
// groupContent.avatar = MediaAttachment.withBase64Image(avatarImage);
groupContent.permissions[CommunitiesAction.Post] = Role.Admin; // only admins can create posts
groupContent.permissions[CommunitiesAction.React] = Role.Member; // members can add reactions
groupContent.isDiscoverable = true; // group will be visible for everyone
groupContent.isPrivate = true; // joining requires approval
Communities.createGroup(groupContent)
.then((group) => {
console.log('Group created: ' + group);
}, (error) => {
console.log('Failed to get create group, error: ' + error);
});
const groupContent = new GetSocialSDK.GroupContent({
id: 'sample_group',
title: 'Sample Group',
description: 'Shows how to create a group',
avatar: GetSocialSDK.MediaAttachment.withImageUrl('avatarUrl'),
// or attach a base64 image
// avatar: GetSocialSDK.MediaAttachment.withBase64Image('base64Image'),
// or attach a base64 image
// avatar: GetSocialSDK.MediaAttachment.withImageFile(file),
permissions: {
// only admins can create posts
[GetSocialSDK.CommunitiesAction.Post]: GetSocialSDK.Role.Admin,
// members can add reactions
[GetSocialSDK.CommunitiesAction.React]: GetSocialSDK.Role.Member
},
isDiscoverable: true, // group will be visible for everyone
isPrivate: true // joining requires approval
});
GetSocialSDK.Communities.createGroup(groupContent)
.then((group) => {
console.log('Group created: ', group);
}, (error) => {
console.log('Failed to get create group, error: ', error);
});
Get Groups¶
You can get a paginated list of all groups in your application.
val query = GroupsQuery.all()
val pagingQuery = PagingQuery(query)
Communities.getGroups(pagingQuery, { result: PagingResult<Group> ->
val group = result.entries
print("Groups: $groups")
}, { error: GetSocialError ->
print("Failed to get list of groups: $error")
})
let query = GroupsQuery.all()
let pagingQuery = GroupsPagingQuery(query)
Communities.groups(pagingQuery, success: { result in
print("Groups: \(result.groups)")
}, failure: { error in
print("Failed to get list of groups: \(error)")
})
var query = GroupsQuery.All();
var pagingQuery = new PagingQuery<GroupsQuery>(query);
Communities.GetGroups(pagingQuery, (result) => {
Debug.Log("Groups: " + result.Entries);
}, (error) => {
Debug.Log("Failed to get list of groups, error: " + error);
});
GroupsQuery query = GroupsQuery.all();
Communities.getGroups(PagingQuery(query)).then((result) {
print('Groups: ' + result.entries);
}).catchError((error) {
print('Failed to get list of groups, error: ' + error);
});
const query = GroupsQuery.all();
let pagingQuery = new PagingQuery(query);
Communities.getGroups(pagingQuery)
.then((result) => {
console.log('Groups: ' + result.entries);
}, (error) => {
console.log('Failed to get list of groups, error: ' + error);
});
const query = GetSocialSDK.GroupsQuery.all();
let pagingQuery = new GetSocialSDK.PagingQuery(query);
GetSocialSDK.Communities.getGroups(pagingQuery)
.then((result) => {
console.log('Groups: ', result.entries);
}, (error) => {
console.log('Failed to get list of groups, error: ', error);
});
This method uses the PagingQuery
concept that is used across our SDK. Read more about this.
You can also see all the groups created by your company or your users in the dashboard. The list of group includes group Id, name, description, creation date, number of group members, number of group followers and certain actions that you can take as follows:
- Post to feed: You can post an activity to a specific group from the dashboard, just like you post to a topic.
- Edit group details like group name, description, icon, permissions and properties
- Delete group
Find Groups¶
You can also search groups by a query. Method returns all groups that contains the provided query as a substring in ID or Title. It is also case-insensitive. Additionally you can search gruoups by:
- All groups that are discoverable
- Groups a user is member of
- Groups a user is following
val searchString = "cat"
val query = GroupsQuery.find(searchString)
val pagingQuery = PagingQuery(query)
Communities.getGroups(pagingQuery, { result: PagingResult<Group> ->
val groups = result.entries
print("Groups contains $searchString: $groups")
}, { error: GetSocialError ->
print("Failed to get list of groups: $error")
})
let searchString = "cat"
let query = GroupsQuery.find(searchString)
let pagingQuery = GroupsPagingQuery(query)
Communities.groups(pagingQuery, success: { result in
print("Groups containing \(searchString): \(result.groups)")
}, failure: { error in
print("Failed to get list of groups: \(error)")
})
var query = GroupsQuery.Find("cats");
var pagingQuery = new PagingQuery<GroupsQuery>(query);
Communities.GetGroups(pagingQuery, (result) => {
Debug.Log("Groups including `cats`: " + result.Entries);
}, (error) => {
Debug.Log("Failed to search for groups, error: " + error);
});
GroupsQuery query = GroupsQuery.find('cats');
Communities.getGroups(PagingQuery(query)).then((result) {
print('Groups including cats: ' + result.entries);
}).catchError((error) {
print('Failed to search for groups, error: ' + error);
});
const query = GroupsQuery.find('cats');
let pagingQuery = new PagingQuery(query);
Communities.getGroups(pagingQuery)
.then((result) => {
console.log('Groups including `cats`: ' + result.entries);
}, (error) => {
console.log('Failed to search for groups, error: ' + error);
});
const query = GetSocialSDK.GroupsQuery.find('cats');
let pagingQuery = new GetSocialSDK.PagingQuery(query);
GetSocialSDK.Communities.getGroups(pagingQuery)
.then((result) => {
console.log('Groups including `cats`: ', result.entries);
}, (error) => {
console.log('Failed to search for groups, error: ', error);
});
This method uses the PagingQuery
concept that is used across our SDK. Read more about this.
Trending groups¶
It is possible to get trending groups:
val query = GroupsQuery.find("cats").onlyTrending(true)
let query = GroupsQuery.find("cats").onlyTrending(true)
var query = GroupsQuery.Find("cats").OnlyTrending(true);
var query = GroupsQuery.find('cats').onlyTrending(true);
const query = GroupsQuery.find('cats').onlyTrending(true);
const query = GetSocialSDK.GroupsQuery.find('cats').onlyTrending(true);
Get Groups Count¶
Use the same query as you’re using to Get or Find groups.
val searchString = "cat"
val query = GroupsQuery.find(searchString)
Communities.getGroupsCount(query, { result: Int ->
print("Groups count contains $searchString: $result")
}, { error: GetSocialError ->
print("Failed to get number of groups: $error")
})
let searchString = "cat"
let query = GroupsQuery.find(searchString)
Communities.groupsCount(query, success: { groupsCount in
print("Groups count containing \(searchString): \(groupsCount)")
}, failure: { error in
print("Failed to get number of groups: \(error)")
})
var query = GroupsQuery.Find("cats");
Communities.GetGroupsCount(query, (result) => {
Debug.Log("Number of groups including `cats`: " + result);
}, (error) => {
Debug.Log("Failed to get number of groups, error: " + error);
});
GroupsQuery query = GroupsQuery.find('cats');
Communities.getGroupsCount(query).then((result) {
print('Number of groups including cats: ' + result.entries);
}).catchError((error) {
print('Failed to get number of groups, error: ' + error);
});
const query = GroupsQuery.find('cats');
Communities.getGroupsCount(query)
.then((result) => {
console.log('Number of groups including `cats`: ' + result);
}, (error) => {
console.log('Failed to get number of groups, error: ' + error);
});
const query = GetSocialSDK.GroupsQuery.find('cats');
GetSocialSDK.Communities.getGroupsCount(query)
.then((result) => {
console.log('Number of groups including `cats`: ', result);
}, (error) => {
console.log('Failed to get number of groups, error: ', error);
});
Get Group By ID¶
If you have just an ID of Group, you can get the Group object:
val groupId = "group-id"
Communities.getGroup(groupId, { group ->
print("Group with id $groupId: $group")
}, { error ->
print("Failed to get a group: $error")
})
let groupId = "group-id"
Communities.group(groupId, success: { group in
print("Group with id '\(groupId): \(group)")
}, failure: { error in
print("Failed to get group: \(error)")
})
var groupId = "group-id";
Communities.GetGroup(groupId, (result) => {
Debug.Log("Group: " + result);
}, (error) => {
Debug.Log("Failed to get group, error: " + error);
});
String groupId = 'group-id';
Communities.getGroup(groupId).then((result) {
print('Group: $result');
}).catchError((error) {
print('Failed to get group, error: ' + error);
});
const groupId = 'group-id';
Communities.getGroup(groupId)
.then((result) => {
console.log('Group: ' + result);
}, (error) => {
console.log('Failed to get group, error: ' + error);
});
const groupId = 'group-id';
GetSocialSDK.Communities.getGroup(groupId)
.then((result) => {
console.log('Group: ', result);
}, (error) => {
console.log('Failed to get group, error: ', error);
});
Work With Group Object¶
Learn what can you do with group object in Android and iOS.
Manage Group Members¶
Groups has 3 different kind of members:
- Owner: the user that created the group and can update the group details and manage other members.
- Admin: a member that has been promoted to admin by the owner an can also perform the same actions than the owner.
- Regular member: a user that has access to the Group feed and might be able to post or interact according to the Group permissions.
Add or Invite Users¶
Owner and Admins can invite users to join the group with an invitation sent via Notifications or users can be added directly, depending on your implementation.
To add a user:
val groupId = // group id
val userIds = // list of user ids
val query = AddGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(MemberStatus.MEMBER)
Communities.addGroupMembers(query, { result: MutableList<GroupMember> ->
print("Users added to group")
}, { error ->
print("Failed to add users to group, error: $error")
})
let groupId = // group id
let userIds = // list of user ids
let query = AddGroupMembersQuery(groupId: groupId, userIdList: userIds)
.withMemberStatus(.member)
Communities.addGroupMembers(query, success: { members in
print("Users added to group")
}, failure: { error in
print("Failed to add users to group, error: \(error)")
})
var groupId = // group id
var userIds = // list of user ids
var query = new AddGroupMembersQuery(groupId, userIds)
.WithMemberStatus(MemberStatus.Member);
Communities.AddGroupMembers(query, (result) => {
Debug.Log("Users added to group");
}, (error) => {
Debug.Log("Failed to add users to group, error: " + error);
});
String groupId = // group id
UserIdList userIdList = // list of user ids
AddGroupMembersQuery query = AddGroupMembersQuery.create(groupId, userIdList)
.withMemberStatus(MemberStatus.member);
Communities.addGroupMembers(query).then((members) {
print('Users added to group');
}).catchError((error) {
print('Failed to add users to group, error: ' + error);
});
const groupId = // group id
const userIds = // list of user ids
const query = AddGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(MemberStatus.member);
Communities.addGroupMembers(query)
.then((result) => {
console.log('Users added to group');
}, (error) => {
console.log('Failed to add users to group, error: ' + error);
});
const groupId = 'group-id';
const userIds = GetSocialSDK.UserIdList.create(['userAID', 'userBID']);
const query = GetSocialSDK.AddGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(GetSocialSDK.MemberStatus.member);
GetSocialSDK.Communities.addGroupMembers(query)
.then((result) => {
console.log('Users added to group');
}, (error) => {
console.log('Failed to add users to group, error: ', error);
});
To invite a user:
val groupId = // group id
val userIds = // list of user ids
val query = AddGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(MemberStatus.INVITATION_PENDING)
Communities.addGroupMembers(query, { result: MutableList<GroupMember> ->
print("Users invited to group")
}, { error ->
print("Failed to invite users to group, error: $error")
})
let groupId = // group id
let userIds = // list of user ids
let query = AddGroupMembersQuery(groupId: groupId, userIdList: userIds)
.withMemberStatus(.invitationPending)
Communities.addGroupMembers(query, success: { members _ in
print("Users invited to group")
}, failure: { error in
print("Failed to invite users to group, error: \(error)")
})
var groupId = // group id
var userIds = // list of user ids
var query = new AddGroupMembersQuery(groupId, userIds)
.WithMemberStatus(MemberStatus.InvitationPending);
Communities.AddGroupMembers(query, (result) => {
Debug.Log("Users invited to group");
}, (error) => {
Debug.Log("Failed to invite users to group, error: " + error);
});
String groupId = // group id
UserIdList userIdList = // list of user ids
AddGroupMembersQuery query = AddGroupMembersQuery.create(groupId, userIdList)
.withMemberStatus(MemberStatus.invitationPending);
Communities.addGroupMembers(query).then((members) {
print('Users invited to group');
}).catchError((error) {
print('Failed to invite users to group, error: ' + error);
});
const groupId = // group id
const userIds = // list of user ids
const query = AddGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(MemberStatus.InvitationPending);
Communities.addGroupMembers(query)
.then((result) => {
console.log('Users invited to group');
}, (error) => {
console.log('Failed to invite users to group, error: ' + error);
});
const groupId = 'group-id';
const userIds = GetSocialSDK.UserIdList.create(['userAID', 'userBID']);
const query = GetSocialSDK.AddGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(GetSocialSDK.MemberStatus.InvitationPending);
GetSocialSDK.Communities.addGroupMembers(query)
.then((result) => {
console.log('Users invited to group');
}, (error) => {
console.log('Failed to invite users to group, error: ', error);
});
To invite an admin:
val groupId = // group id
val userIds = // list of user ids
val query = AddGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(MemberStatus.INVITATION_PENDING)
.withRole(Role.ADMIN)
Communities.addGroupMembers(query, { result: MutableList<GroupMember> ->
print("Users invited to group")
}, { error ->
print("Failed to invite users to group, error: $error")
})
let groupId = // group id
let userIds = // list of user ids
let query = AddGroupMembersQuery(groupId: groupId, userIdList: userIds)
.withMemberStatus(.invitationPending)
.withRole(.admin)
Communities.addGroupMembers(query, success: { members in
print("Users invited to group")
}, failure: { error in
print("Failed to invite users to group, error: \(error)")
})
var groupId = // group id
var userIds = // list of user ids
var query = new AddGroupMembersQuery(groupId, userIds)
.WithMemberStatus(MemberStatus.InvitationPending)
.WithMemberRole(MemberRole.Admin);
Communities.AddGroupMembers(query, (result) => {
Debug.Log("Users invited to group");
}, (error) => {
Debug.Log("Failed to invite users to group, error: " + error);
});
String groupId = // group id
UserIdList userIdList = // list of user ids
AddGroupMembersQuery query = AddGroupMembersQuery.create(groupId, userIdList)
.withMemberStatus(MemberStatus.invitationPending)
.withRole(Role.admin);
Communities.addGroupMembers(query).then((members) {
print('Users invited to group');
}).catchError((error) {
print('Failed to invite users to group, error: ' + error);
});
const groupId = // group id
const userIds = // list of user ids
const query = AddGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(MemberStatus.InvitationPending)
.withRole(Role.Admin);
Communities.addGroupMembers(query)
.then((result) => {
console.log('Users invited to group');
}, (error) => {
console.log('Failed to invite users to group, error: ' + error);
});
const groupId = 'group-id';
const userIds = GetSocialSDK.UserIdList.create(['userAID', 'userBID']);
const query = GetSocialSDK.AddGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(GetSocialSDK.MemberStatus.InvitationPending)
.withRole(GetSocialSDK.Role.Admin);
GetSocialSDK.Communities.addGroupMembers(query)
.then((result) => {
console.log('Users invited to group');
}, (error) => {
console.log('Failed to invite users to group, error: ', error);
});
Join Groups or Accept an Invitation¶
Users can join groups directly. For public groups they will become a member right away, but for private ones, they will need to wait for the approval.
To join a group, either public or private:
val groupId = // group id
val query = JoinGroupQuery(groupId)
Communities.joinGroup(query, { member: GroupMember ->
print("Joined to group")
}, { error ->
print("Failed to join to group, error: $error")
})
let groupId = // group id
let query = JoinGroupQuery.init(groupId: groupId)
Communities.joinGroup(query, success: { member in
print("Joined to group")
}, failure: { error in
print("Failed to join to group, error: \(error)")
}
var groupId = // group id
var query = new JoinGroupQuery(groupId);
Communities.JoinGroup(query, success: (member) => {
Debug.Log("Joined to group");
}, (error) => {
Debug.Log("Failed to join to group, error: " + error);
});
String groupId = // group id
JoinGroup query = JoinGroupQuery.create(groupId);
Communities.joinGroup(query).then((members) {
print('Joined to group');
}).catchError((error) {
print('Failed to join to group, error: ' + error);
});
const groupId = // group id
const query = JoinGroupQuery.create(groupId);
Communities.joinGroup(query)
.then((member) => {
console.log('Joined to group');
}, (error) => {
console.log('Failed to join to group, error: ' + error);
});
const query = GetSocialSDK.JoinGroupQuery.create('groupId');
GetSocialSDK.Communities.joinGroup(query)
.then((member) => {
console.log('Joined to group');
}, (error) => {
console.log('Failed to join to group, error: ', error);
});
If the group is private a request to join Notification will be sent automatically to the Owner and Admins and one of them will need to approve it. Once the request is approved, the User will get a Notification.
To approve a request to join from a user (only possible if the requesting user is a Group owner or admin):
val groupId = // group id
val userIds = // users to approve
val query = UpdateGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(MemberStatus.MEMBER)
Communities.updateGroupMembers(query, { members ->
print("Users approved")
}, { error ->
print("Failed to approve users, error: $error")
})
let groupId = // group id
let userIds = // users to approve
let query = UpdateGroupMembersQuery.init(groupId: groupId, userIdList: userIds)
.withMemberStatus(.member)
Communities.updateGroupMembers(query, success: { members in
print("Users approved")
}, failure: { error in
print("Failed to approve users, error: \(error)")
})
var groupId = // group id
var userIds = // users to approve
var query = new UpdateGroupMembersQuery(groupId, userIds)
.WithMemberStatus(MemberStatus.Member);
Communities.UpdateGroupMembers(query, (members) => {
Debug.Log("Users approved");
}, (error) => {
Debug.Log("Failed to approve users, error: " + error);
});
String groupId = // group id
UserIdList userIdList = // list of user ids
UpdateGroupMembersQuery query = UpdateGroupMembersQuery.create(groupId, userIdList)
.withMemberStatus(MemberStatus.member);
Communities.updateGroupMembers(query).then((result) {
print('Users approved');
}).catchError((error) {
print('Failed to approve users, error: ' + error);
});
const groupId = // group id
const userIds = // list of user ids
const query = UpdateGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(MemberStatus.Member);
Communities.updateGroupMembers(query)
.then((result) => {
console.log('Users approved');
}, (error) => {
console.log('Failed to approve users, error: ' + error);
});
const groupId = 'group-id';
const userIds = GetSocialSDK.UserIdList.create(['userAID', 'userBID']);
const query = GetSocialSDK.UpdateGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(GetSocialSDK.MemberStatus.Member);
GetSocialSDK.Communities.updateGroupMembers(query)
.then((result) => {
console.log('Users approved');
}, (error) => {
console.log('Failed to approve users, error: ', error);
});
Alternatively, if the user was invited to join the group, then he needs to accept the invitation using the invitation token received in the Invitation.
val groupId = // group id
val invitationToken = // group invitation token
val query = JoinGroupQuery(groupId)
.withInvitationToken(invitationToken)
Communities.joinGroup(query, { member: GroupMember ->
print("User accepted invite")
}, { error ->
print("Failed to accept invite, error: $error")
})
let groupId = // group id
let invitationToken = // group invitation token
let query = JoinGroupQuery.init(groupId: groupId)
.withInvitationToken(invitationToken)
Communities.joinGroup(query, success: { member in
print("User accepted invite")
}, failure: { error in
print("Failed to accept invite, error: \(error)")
})
var groupId = // group id
var invitationToken = // group invitation token
var query = new JoinGroupQuery(groupId)
.WithInvitationToken(invitationToken);
Communities.JoinGroup(query, success: (member) => {
Debug.Log("User accepted invite");
}, (error) => {
Debug.Log("Failed to accept invite, error: " + error);
});
String groupId = // group id
JoinGroup query = JoinGroupQuery.create(groupId)
.withInvitationToken(invitationToken);
Communities.joinGroup(query).then((member) {
print('User accepted invite');
}).catchError((error) {
print('Failed to accept invite, error: ' + error);
});
const groupId = // group id
const invitationToken = // group invitation token
const query = JoinGroupQuery.create(groupId)
.withInvitationToken(invitationToken);
Communities.joinGroup(query)
.then((member) => {
console.log('User accepted invite');
}, (error) => {
console.log('Failed to accept invite, error: ' + error);
});
const groupId = 'groupId';
const invitationToken = 'invitationToken';
const query = GetSocialSDK.JoinGroupQuery.create(groupId)
.withInvitationToken(invitationToken);
GetSocialSDK.Communities.joinGroup(query)
.then((member) => {
console.log('User accepted invite');
}, (error) => {
console.log('Failed to accept invite, error: ', error);
});
Approve Join Request¶
If the Owner or Admin receives a request to join Notification from a user, it can be approved like this:
val groupId = // group id
val userIds = // users to approve
val query = UpdateGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(MemberStatus.MEMBER)
Communities.updateGroupMembers(query, { members ->
print("Users approved")
}, { error ->
print("Failed to approve users, error: $error")
})
let groupId = // group id
let userIds = // users to approve
let query = UpdateGroupMembersQuery.init(groupId: groupId, userIdList: userIds)
.withMemberStatus(.member)
Communities.updateGroupMembers(query, success: { members in
print("Users approved")
}, failure: { error in
print("Failed to approve users, error: \(error)")
})
var groupId = // group id
var userIds = // users to approve
var query = new UpdateGroupMembersQuery(groupId, userIds)
.WithMemberStatus(MemberStatus.Member);
Communities.UpdateGroupMembers(query, (members) => {
Debug.Log("Users approved");
}, (error) => {
Debug.Log("Failed to approve users, error: " + error);
});
String groupId = // group id
UserIdList userIdList = // list of user ids
UpdateGroupMembersQuery query = UpdateGroupMembersQuery.create(groupId, userIdList)
.withMemberStatus(MemberStatus.member);
Communities.updateGroupMembers(query).then((result) {
print('Users approved');
}).catchError((error) {
print('Failed to approve users, error: ' + error);
});
const groupId = // group id
const userIds = // list of user ids
const query = UpdateGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(MemberStatus.Member);
Communities.updateGroupMembers(query)
.then((result) => {
console.log('Users approved');
}, (error) => {
console.log('Failed to approve users, error: ' + error);
});
const groupId = 'group-id';
const userIds = GetSocialSDK.UserIdList.create(['userAID', 'userBID']);
const query = GetSocialSDK.UpdateGroupMembersQuery.create(groupId, userIds)
.withMemberStatus(GetSocialSDK.MemberStatus.Member);
Communities.updateGroupMembers(query)
.then((result) => {
console.log('Users approved');
}, (error) => {
console.log('Failed to approve users, error: ', error);
});
Removing Group Members¶
The Owner and Admins can remove any member, however regular members can only remove themselves.
To remove a member:
val groupId = // group id
val userIds = // user ids to removed from group
val query = RemoveGroupMembersQuery.create(groupId, userIds)
Communities.removeGroupMembers(query, {
print("Removed user from group")
}, { error ->
print("Failed to remove users from group, error: $error")
})
let groupId = // group id
let userIds = // user ids to removed from group
let query = RemoveGroupMembersQuery.users(userIds, from: groupId)
Communities.removeGroupMembers(query, success: {
print("Removed user from group")
}, failure: { error in
print("Failed to remove users from group, error: \(error)")
}
var groupId = // group id
var userIds = // user ids to removed from group
var query = new RemoveGroupMembersQuery(groupId, userIds);
Communities.RemoveGroupMembers(query, () => {
Debug.Log("Removed user from group");
}, (error) => {
Debug.Log("Failed to remove users from group, error: " + error);
});
String groupId = // group id
UserIdList userIdList = // list of user ids
RemoveGroupMembersQuery query = RemoveGroupMembersQuery.create(groupId, userIdList);
Communities.removeGroupMembers(query).then((result) {
print('Removed users from group');
}).catchError((error) {
print('Failed to remove users from group, error: ' + error);
});
const groupId = // group id
const userIds = // list of user ids
const query = RemoveGroupMembersQuery.create(groupId, userIds);
Communities.removeGroupMembers(query)
.then((result) => {
console.log('Removed users from group');
}, (error) => {
console.log('Failed to remove users from group, error: ' + error);
});
const groupId = 'group-id';
const userIds = GetSocialSDK.UserIdList.create(['userAID', 'userBID']);
const query = GetSocialSDK.RemoveGroupMembersQuery.create(groupId, userIds);
GetSocialSDK.Communities.removeGroupMembers(query)
.then((result) => {
console.log('Removed users from group');
}, (error) => {
console.log('Failed to remove users from group, error: ', error);
});
Get Group Members¶
It is possible to get the list of members of a specific group. It can be filtered by status
or role
. Regular members can only see approved members, however the Owner or Admins can also see invitations and pending-approval join request.
To get the list of members:
val groupId = // group id
val query = MembersQuery.ofGroup(groupId)
// with a specific role, e.g. admins
// query = query.withRole(Role.ADMIN)
// with a specific status, like all pending approvals
// query = query.withMemberStatus(MemberStatus.APPROVAL_PENDING)
val pagingQuery = PagingQuery(query)
Communities.getGroupMembers(pagingQuery, { result ->
print("Members of group: $result.entries")
}, { error ->
print("Failed to get group members, error: $error")
})
let groupId = // group id
let query = MembersQuery.ofGroup(groupId)
// with a specific role, e.g. admins
// query = query.withRole(.admin)
// with a specific status, like all pending approvals
// query = query.withStatus(.approvalPending)
let pagingQuery = MembersPagingQuery(query)
Communities.membersOfGroup(pagingQuery, success: { result in
print("Members of group: \(result.entries)")
}, failure: { error in
print("Failed to get group members, error: \(error)")
})
var groupId = // group id
var query = MembersQuery.OfGroup(groupId);
// with a specific role, e.g. admins
// query = query.WithRole(MemberRole.Admin)
// with a specific status, like all pending approvals
// query = query.withStatus(MemberStatus.ApprovalPending)
var pagingQuery = new PagingQuery<MembersQuery>(query);
Communities.GetGroupMembers(pagingQuery, (result) => {
Debug.Log("Members of group: " + result.Entries);
}, (error) => {
Debug.Log("Failed to get group members, error: " + error);
});
String groupId = // group id
MembersQuery query = MembersQuery.ofGroup(groupId);
// with a specific role, e.g. admins
// query = query.WithRole(Role.admin)
// with a specific status, like all pending approvals
// query = query.withStatus(MemberStatus.approvalPending)
Communities.getGroupMembers(PagingQuery(query)).then((result) {
print('Members of group: ' + result.entries);
}).catchError((error) {
print('Failed to get group members, error: ' + error)
});
const groupId = // group id
const query = MembersQuery.ofGroup(groupId);
// with a specific role, e.g. admins
// query = query.withRole(Role.Admin)
// with a specific status, like all pending approvals
// query = query.withStatus(MemberStatus.ApprovalPending)
let pagingQuery = new PagingQuery(query);
Communities.membersOfGroup(pagingQuery)
.then((result) => {
console.log('Members of group: ' + result.entries);
}, (error) => {
console.log('Failed to get group members, error: ' + error);
});
const query = GetSocialSDK.MembersQuery.ofGroup('group-id');
// with a specific role, e.g. admins
// query = query.withRole(Role.Admin);
// with a specific status, like all pending approvals
// query = query.withStatus(GetSocialSDK.MemberStatus.ApprovalPending);
GetSocialSDK.Communities.getGroupMembers(new GetSocialSDK.PagingQuery(query))
.then((result) => {
console.log('Members of group: ', result.entries);
}, (error) => {
console.log('Failed to get group members, error: ', error);
});
Check Group Members¶
You can also check if specific users are members of a group:
val groupId = // group id
val userIds = // user ids
Communities.areGroupMembers(groupId, userIds, { result ->
print("Members of group: $result")
}, { error ->
print("Failed to check group members, error: $error")
})
let groupId = // group id
let userIds = // user ids
Communities.areGroupMembers(groupId, userIdList: userIds, success: { result in
print("Members of group: \(result)")
}, failure: { error in
print("Failed to check group members, error: \(error)")
})
var groupId = // group id
var userIds = // user ids
Communities.AreGroupMembers(groupId, userIdList: userIds, (result) => {
Debug.Log("Members of group: " + result);
}, (error) => {
Debug.Log("Failed to check group members, error: " + error);
});
String groupId = // group id
UserIdList userIdList = // list of user ids
Communities.areGroupMembers(groupId, userIdList).then((result) {
print('Members of group: ' + result);
}).catchError((error) {
print('Failed to check group members, error: ' + error)
});
const groupId = // group id
const userIds = // user ids
Communities.areGroupMembers(groupId, userIds)
.then((result) => {
console.log('Members of group: ' + result);
}, (error) => {
console.log('Failed to check group members, error: ' + error);
});
const groupId = 'group-id';
const userIds = GetSocialSDK.UserIdList.create(['userAID', 'userBID']);
GetSocialSDK.Communities.areGroupMembers(groupId, userIds)
.then((result) => {
console.log('Members of group: ', result);
}, (error) => {
console.log('Failed to check group members, error: ', error);
});
Follow¶
Group members become also group followers automatically as soon as they join and they will start seeing content from the Group feed in their timeline. However if members want to stop seeing Group content they can unfollow
the group while keeping their member status. They can follow
back at any time.
To follow groups use (only available for group members):
Communities.follow(FollowQuery.groups("dogs", "cats", "daily-challenges"), { groupsFollowing ->
print("Successfully followed the groups. Now you follow $groupsFollowing groups!")
}, { error ->
print("Failed to follow groups: $error")
})
Communities.follow(FollowQuery.groups(["dogs", "cats", "daily-challenges"]), success: { groupsFollowing in
print("Successfully followed the groups. Now you follow \(groupsFollowing) groups!")
}, failure: { error in
print("Failed to follow groups: \(error)")
})
Communities.Follow(FollowQuery.Groups("dogs", "cats", "daily-challenges"), (groupsFollowing) => {
Debug.Log("Successfully followed the groups. Number of followed groups: " + groupsFollowing);
}, (error) => {
Debug.Log("Failed to follow groups, error " + error);
});
Communities.follow(FollowQuery.groups(['dogs', 'cats', 'daily-challenges'])).then((result) {
print('Successfully followed the groups. Number of followed groups: ' + result);
}).catchError((error) {
print('Failed to follow groups, error: ' + error)
});
Communities.follow(FollowQuery.groups(['dogs', 'cats', 'daily-challenges']))
.then((result) => {
console.log('Successfully followed the groups. Number of followed groups: ' + result);
}, (error) => {
console.log('Failed to follow groups, error: ' + error.message);
});
GetSocialSDK.Communities.follow(GetSocialSDK.FollowQuery.groups(['dogs', 'cats', 'daily-challenges']))
.then((result) => {
console.log('Successfully followed the groups. Number of followed groups: ', result);
}, (error) => {
console.log('Failed to follow groups, error: ', error);
});
Unfollow¶
Unfollow works in the same way, as Follow, just use method unfollow
:
Communities.unfollow(FollowQuery.groups("dogs", "cats", "daily-challenges"), { groupsFollowing ->
print("Successully unfollowed the groups. Now you follow $groupsFollowing groups!")
}, { error ->
print("Failed to unfollow groups: $error")
})
Communities.unfollow(FollowQuery.groups(["dogs", "cats", "daily-challenges"]), success: { groupsFollowing in
print("Successully unfollowed the groups. Now you follow \(groupsFollowing) groups!")
}, failure: { error in
print("Failed to unfollow groups: \(error)")
})
Communities.Unfollow(FollowQuery.Groups("dogs", "cats", "daily-challenges"), (groupsFollowing) => {
Debug.Log("Successfully unfollowed the groups. Number of followed groups: " + groupsFollowing);
}, (error) => {
Debug.Log("Failed to unfollow groups, error " + error);
});
Communities.unfollow(FollowQuery.groups(['dogs', 'cats', 'daily-challenges'])).then((result) {
print('Successfully unfollowed the groups. Number of followed groups: ' + result);
}).catchError((error) {
print('Failed to unfollow groups, error: ' + error)
});
Communities.unfollow(FollowQuery.groups(['dogs', 'cats', 'daily-challenges']))
.then((result) => {
console.log('Successfully unfollowed the groups. Number of followed groups: ' + result);
}, (error) => {
console.log('Failed to unfollow groups, error: ' + error.message);
});
GetSocialSDK.Communities.unfollow(GetSocialSDK.FollowQuery.groups(['dogs', 'cats', 'daily-challenges']))
.then((result) => {
console.log('Successfully unfollowed the groups. Number of followed groups: ', result);
}, (error) => {
console.log('Failed to unfollow groups, error: ', error);
});
Is Following¶
To check if a certain user is following groups, use:
Communities.isFollowing(UserId.currentUser(), FollowQuery.groups("cats", "dogs"), { isFollowing ->
print("Current user is following group 'cats': ${isFollowing["cats"]}")
print("Current user is following group 'dogs': ${isFollowing["dogs"]}")
}, { error: GetSocialError ->
print("Failed to get followers of group: $error")
})
Communities.isFollowing(UserId.currentUser(), query: FollowQuery.groups(["cats", "dogs"]), success: { isFollowing in
print("Current user is following group 'cats': \(isFollowing["cats"])")
print("Current user is following group 'dogs': \(isFollowing["dogs"])")
}, failure: { error in
print("Failed to check followers of groups: \(error)")
})
Communities.IsFollowing(UserId.CurrentUser(), FollowQuery.Groups("cats", "dogs"), (result) => {
Debug.Log("Current user is following group 'cats': " + result["cats"]);
Debug.Log("Current user is following group 'dogs': " + result["dogs"]);
}, (error) => {
Debug.Log("Failed to check followers of groups, error: " + error);
});
Communities.isFollowing(UserId.currentUser(), FollowQuery.groups(ids)).then((result) {
print('Current user is following group `cats`: ' + result['cats']);
print('Current user is following group `dogs`: ' + result['dogs']);
}).catchError((error) {
print('Failed to check followers of groups, error: ' + error)
});
Communities.isFollowing(UserId.currentUser(), FollowQuery.groups(['dogs', 'cats', 'daily-challenges']))
.then((result) => {
console.log('Current user is following group `cats`: ' + result['cats']);
console.log('Current user is following group `dogs`: ' + result['dogs']);
}, (error) => {
console.log('Failed to check followers of groups, error: ' + error.message);
});
GetSocialSDK.Communities.isFollowing(GetSocialSDK.UserId.currentUser(), GetSocialSDK.FollowQuery.groups(['dogs', 'cats', 'daily-challenges']))
.then((result) => {
console.log('Current user is following group `cats`: ', !!result['cats']);
console.log('Current user is following group `dogs`: ', !!result['dogs']);
}, (error) => {
console.log('Failed to check followers of groups, error: ', error);
});
First parameter is a user ID. We’re checking if current user is following some groups. The result is a map of String -> Boolean
, where key is the id of the group passed to FollowQuery
and value is true
, is user is following this group or false
otherwise.
Unexisting groups won’t be included in the result map.
Get Followers¶
To get followers of a group:
val followersQuery = FollowersQuery.ofGroup("cats")
val pagingQuery = PagingQuery(followersQuery).withLimit(25)
Communities.getFollowers(pagingQuery, { result: PagingResult<User> ->
val followersOfCatsGroup = result.entries
print("Followers of group 'cats': $followersOfCatsGroup")
}, { error: GetSocialError ->
print("Failed to get followers of the group: $error")
})
let followersQuery = FollowersQuery.ofGroup("cats")
let pagingQuery = FollowersPagingQuery.init(followersQuery)
pagingQuery.limit = 25
Communities.followers(pagingQuery, success: { result in
print("Followers of group 'cats': \(result.followers)")
}, failure: { error in
print("Failed to get followers of group: \(error)")
})
var followersQuery = FollowersQuery.OfGroup("cats");
var pagingQuery = new PagingQuery<FollowersQuery>(followersQuery);
Communities.GetFollowers(pagingQuery, (result) => {
Debug.Log("Followers of group 'cats': " + result.Entries);
}, (error) => {
Debug.Log("Failed to get followers of group: " + error);
});
FollowersQuery query = FollowersQuery.ofGroup('cats');
Communities.getFollowers(PagingQuery(query)).then((result) {
print('Followers of group `cats`: ' + result.entries);
}).catchError((error) {
print('Failed to check followers of group, error: ' + error)
});
const followersQuery = FollowersQuery.ofGroup('cats');
const pagingQuery = new PagingQuery(followersQuery);
Communities.getFollowers(pagingQuery)
.then((result) => {
console.log('Followers of group "cats":' + result.entries);
}, (error) => {
console.log('Failed to check followers of group, error: ' + error.message);
});
const followersQuery = GetSocialSDK.FollowersQuery.ofGroup('cats');
const query = new GetSocialSDK.PagingQuery(followersQuery);
GetSocialSDK.Communities.getFollowers(query)
.then((result) => {
console.log('Followers of group "cats":', result.entries);
}, (error) => {
console.log('Failed to check followers of group, error: ', error);
});
This method uses the PagingQuery
concept that is used across our SDK. Read more about this.
Followers Count¶
To get the followers count of a group:
val groupsFollowers = FollowersQuery.ofGroup("level1")
Communities.getFollowersCount(groupsFollowers, { followersCount: Int ->
print("Followers count of group 'level1': $followersCount")
}, { error: GetSocialError ->
print("Failed to get followers of group: $error")
})
let groupFollowers = FollowersQuery.ofGroup("level1")
Communities.followersCount(groupFollowers, success: { followersCount in
print("Followers count of group 'level1': \(followersCount)")
}, failure: { error in
print("Failed to get followers count of group: \(error)")
})
var groupFollowers = FollowersQuery.OfGroup("cats");
Communities.GetFollowersCount(groupFollowers, (result) => {
Debug.Log("Followers count of group 'cats': " + result);
}, (error) => {
Debug.Log("Failed to get followers count of group: " + error);
});
FollowersQuery query = FollowersQuery.ofGroup('cats');
Communities.getFollowersCount(query).then((result) {
print('Followers count of group `cats`: ' + result);
}).catchError((error) {
print('Failed to check followers count of group, error: ' + error)
});
const followersQuery = FollowersQuery.ofGroup('cats');
Communities.getFollowersCount(followersQuery)
.then((result) => {
console.log('Followers count of group "cats":' + result);
}, (error) => {
console.log('Failed to check followers count of group, error: ' + error.message);
});
const followersQuery = GetSocialSDK.FollowersQuery.ofGroup('cats');
GetSocialSDK.Communities.getFollowersCount(followersQuery)
.then((result) => {
console.log('Followers count of group "cats":', result);
}, (error) => {
console.log('Failed to check followers count of group, error: ', error);
});
Get Following Groups¶
You can also get all the groups that are followed by a certain user:
val query = GroupsQuery.all().followedByUser(UserId.currentUser())
val pagingQuery = PagingQuery(query)
Communities.getGroups(pagingQuery, { result: PagingResult<Group> ->
val groups = result.entries
print("Groups followed by current user: $groups")
}, { error: GetSocialError ->
print("Failed to get list of groups: $error")
})
let query = GroupsQuery.all().followedBy(UserId.currentUser())
let pagingQuery = GroupsPagingQuery(query)
Communities.groups(pagingQuery, success: { result in
print("Groups followed by current user: \(result.groups)")
}, failure: { error in
print("Failed to get list of groups: \(error)")
})
var query = GroupsQuery.All().FollowedBy(UserId.CurrentUser());
var pagingQuery = new PagingQuery<GroupsQuery(query);
Communities.GetGroups(pagingQuery, (result) => {
Debug.Log("Groups followed by current user: " + result.Entries);
}, (error) => {
Debug.Log("Failed to get list of groups: " + error);
});
GroupsQuery query = GroupsQuery.find('cats').followedBy(UserId.currentUser());
Communities.getGroups(PagingQuery(query)).then((result) {
print('Groups followed by current user: ' + result.entries);
}).catchError((error) {
print('Failed to get list of groups, error: ' + error);
});
const query = GroupsQuery.all().followedBy(UserId.currentUser());
let pagingQuery = new PagingQuery(query);
Communities.getGroups(pagingQuery)
.then((result) => {
console.log('Groups followed by current user: ' + result.entries);
}, (error) => {
console.log('Failed to get list of groups, error: ' + error);
});
const query = GetSocialSDK.GroupsQuery.all().followedBy(GetSocialSDK.UserId.currentUser());
GetSocialSDK.Communities.getGroups(new GetSocialSDK.PagingQuery(query))
.then((result) => {
console.log('Groups followed by current user: ', result.entries);
}, (error) => {
console.log('Failed to get list of groups, error: ', error);
});