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

val channelClient = client.channel("messaging", "general")  channelClient.inviteMembers(memberIds = listOf("nick")).enqueue { result ->  if (result is Result.Success) {  val channel: Channel = result.value  } else {  // Handle Result.Failure  } }

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!”).

channelClient.acceptInvite(  message = "Nick joined this channel!" ).enqueue { result ->  if (result is Result.Success) {  val channel: Channel = result.value  } else {  // Handle Result.Failure  } }

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.

channelClient.rejectInvite().enqueue { result ->  if (result is Result.Success) {  // Invite rejected  } else {  // Handle Result.Failure  } }

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

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

Query Rejected Invites

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

Query Pending Invites

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