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:

val channelClient = client.channel("messaging", "general")
val data = mapOf("invites" to listOf("nick"))

channelClient.create(memberIds = listOf("thierry", "tommaso"), extraData = data).enqueue { result ->
  if (result.isSuccess) {
    val channel = result.data()
  } else {
    // Handle result.error()
  }
}

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.

channelClient.acceptInvite(
  message = "Nick joined this channel!"
).enqueue { result ->
  if (result.isSuccess) {
    val channel = result.data()
  } else {
    // Handle result.error()
  }
}

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.

channelClient.rejectInvite().enqueue { result ->
  if (result.isSuccess) {
    // Invite rejected
  } else {
    // Handle result.error()
  }
}

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:

val request = QueryChannelsRequest(
  filter = Filters.eq("invite", "accepted"),
  offset = 0,
  limit = 10
)
client.queryChannels(request).enqueue { result ->
  if (result.isSuccess) {
    val channels: List<Channel> = result.data()
  } else {
    // Handle result.error()
  }
}

Query for Rejected Invites

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

val request = QueryChannelsRequest(
  filter = Filters.eq("invite", "rejected"),
  offset = 0,
  limit = 10
)
client.queryChannels(request).enqueue { result ->
  if (result.isSuccess) {
    val channels: List<Channel> = result.data()
  } else {
    // Handle result.error()
  }
}

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:

val request = QueryChannelsRequest(
  filter = Filters.eq("invite", "pending"),
  offset = 0,
  limit = 10
)
client.queryChannels(request).enqueue { result ->
  if (result.isSuccess) {
    val channels: List<Channel> = result.data()
  } else {
    // Handle result.error()
  }
}

// Backend SDK
Channel.queryMembers()
  .type("messaging")
  .id("general")
  .filterCondition("invite", "pending")
  .request();
© Getstream.io, Inc. All Rights Reserved.