Invites

Inviting Users

Stream Chat provides the ability to invite users to a channel. Upon invitation, the end-user will receive a notification that they were invited to the specified channel.

Most of our SDKs have a helper method for member invitation which uses the Update Channel API endpoint.

See the following for an example on how to invite a user by user ID:

// Invite IStreamUser collection as new members
await channel.InviteMembersAsync(users);

// Or add by ID
await channel.InviteMembersAsync("some-user-id-1", "some-user-id-2");

Accepting an Invite

In order to accept an invite, you must use call the acceptInvite method. The acceptInvite method accepts an object with an optional message property. Please see below for an example of how to call acceptInvite :

The message can be used for system messages for display within the channel (e.g. “Nick joined this channel!”).

Unread counts are not incremented for a channel for which a user is a member of but has a pending invite.

await channel.AcceptInviteAsync();

Rejecting an Invite

To reject an invite, call the rejectInvite method. This method does not require a user ID as it pulls the user ID from the current session in store from the connectUser call.

await channel.RejectInviteAsync();

Query for Accepted Invites

Querying for accepted invites is done via the queryChannels method. This allows you to return a list of accepted invites with a single call. See below for an example:

var filter = new List<IFieldFilterRule>
{
  ChannelFilter.Invite.EqualsTo(ChannelFieldInvite.Status.Accepted)
};

var sort = ChannelSort.OrderByDescending(ChannelSortFieldName.LastMessageAt);

var acceptedInvites = await Client.QueryChannelsAsync(filter, sort);

Query for Rejected Invites

Similar to querying for accepted invites, you can query for rejected invites with queryChannels. See below for an example:

var filter = new List<IFieldFilterRule>
{
  ChannelFilter.Invite.EqualsTo(ChannelFieldInvite.Status.Rejected)
};

var sort = ChannelSort.OrderByDescending(ChannelSortFieldName.LastMessageAt);

var rejectedInvites = await Client.QueryChannelsAsync(filter, sort);

Query for Pending Invites

Similar to querying for accepted and rejected invites, you can query for pending invites with queryChannels. See below for an example:

var filter = new List<IFieldFilterRule>
{
  ChannelFilter.Invite.EqualsTo(ChannelFieldInvite.Status.Pending)
};

var sort = ChannelSort.OrderByDescending(ChannelSortFieldName.LastMessageAt);

var pendingInvites = await Client.QueryChannelsAsync(filter, sort);
© Getstream.io, Inc. All Rights Reserved.