Skip to main content

Pin Channels

Chat UI SDK supports pinning channels, unpinning channels, and synchronizing pin status.

Channel long-press menu

Usage

Pin status synchronizes to the server and automatically syncs across multiple clients.

InitParams.enableSyncEmptyTopConversation controls whether empty channels participate in pin synchronization.

Customization

Pin or unpin a channel

kotlin
val identifier = ChannelIdentifier(ChannelType.DIRECT, "user_001")
val channel = NCChatUI.createChannel(identifier)

channel.pin(PinParams()) { result, error ->
// result == true and error == null indicates successful pinning
}

channel.unpin { result, error ->
// Unpin the channel
}

Listen for pin status synchronization

kotlin
private const val CHANNEL_HANDLER_ID = "channel_pin_sync"

NCEngine.addChannelHandler(
CHANNEL_HANDLER_ID,
object : ChannelHandler {
override fun onChannelPinnedSync(event: ChannelPinnedSyncEvent) {
// event.channelIdentifier / event.isPinned
}
}
)

NCEngine.removeChannelHandler(CHANNEL_HANDLER_ID)

Get pin status and pinned channel list

kotlin
BaseChannel.getPinnedChannels(
listOf(ChannelType.DIRECT, ChannelType.GROUP, ChannelType.SYSTEM)
) { channels, error ->
// Get the list of pinned channels
}

val id = ChannelIdentifier(ChannelType.DIRECT, "user_001")
BaseChannel.getChannels(listOf(id)) { channels, error ->
val pinned = channels?.firstOrNull()?.isPinned == true
}