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

Usage
Pin status synchronizes to the server and automatically syncs across multiple clients.
InitParams.enableSyncEmptyTopConversationcontrols whether empty channels participate in pin synchronization.
Customization
Pin or unpin a channel
- Kotlin
- Java
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
}
Java
ChannelIdentifier identifier = new ChannelIdentifier(ChannelType.DIRECT, "user_001");
BaseChannel channel = NCChatUI.createChannel(identifier);
channel.pin(new PinParams(), (result, error) -> {
// result == true and error == null indicates successful pinning
});
channel.unpin((result, error) -> {
// Unpin the channel
});
Listen for pin status synchronization
- Kotlin
- Java
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)
Java
private static final String CHANNEL_HANDLER_ID = "channel_pin_sync";
NCEngine.addChannelHandler(
CHANNEL_HANDLER_ID,
new ChannelHandler() {
@Override
public void onChannelPinnedSync(ChannelPinnedSyncEvent event) {
// event.getChannelIdentifier() / event.isPinned()
}
});
NCEngine.removeChannelHandler(CHANNEL_HANDLER_ID);
Get pin status and pinned channel list
- Kotlin
- Java
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
}
Java
BaseChannel.getPinnedChannels(
Arrays.asList(ChannelType.DIRECT, ChannelType.GROUP, ChannelType.SYSTEM),
(channels, error) -> {
// Get the list of pinned channels
});
ChannelIdentifier id = new ChannelIdentifier(ChannelType.DIRECT, "user_001");
BaseChannel.getChannels(Collections.singletonList(id), (channels, error) -> {
boolean pinned = channels != null && !channels.isEmpty() && channels.get(0).isPinned();
});