Invites

Invites allow you to add users to a channel with a pending state. The invited user receives a notification and can accept or reject the invite.

Unread counts are not incremented for channels with a pending invite.

Invite Users

// 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");

Accept an Invite

Call acceptInvite to accept a pending invite. You can optionally include a message parameter to post a system message when the user joins (e.g., “Nick joined this channel!”).

await channel.AcceptInviteAsync();

Reject an Invite

Call rejectInvite to decline a pending invite. Client-side calls use the currently connected user. Server-side calls require a user_id parameter.

await channel.RejectInviteAsync();

Query Invites by Status

Use queryChannels with the invite filter to retrieve channels based on invite status. Valid values are pending, accepted, and rejected.

Query Accepted Invites

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 Rejected Invites

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 Pending Invites

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

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

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