Skip to main content

Sync channel pin and Do Not Disturb status across clients

The SDK provides multi-client channel status synchronization. When another client modifies a channel's pin or Do Not Disturb status, this client receives sync events in real time through NCEngine.addChannelHandler(...).

Handler callbacks

Override the following callbacks in ChannelHandler as needed:

  • onChannelPinnedSync(event): Channel pin status changed
  • onChannelNoDisturbLevelSync(event): Channel Do Not Disturb level changed
  • onChannelStatusSyncCompleted(event): Channel status sync completed

Set up the handler

kotlin
private const val CHANNEL_STATUS_HANDLER_ID = "channel_status_sync"

NCEngine.addChannelHandler(
CHANNEL_STATUS_HANDLER_ID,
object : ChannelHandler {
override fun onChannelPinnedSync(event: ChannelPinnedSyncEvent) {
val id = event.channelIdentifier
val isPinned = event.isPinned
// Update the channel UI
}

override fun onChannelNoDisturbLevelSync(event: ChannelNoDisturbLevelSyncEvent) {
val id = event.channelIdentifier
val level = event.level
// Update the channel Do Not Disturb UI
}

override fun onChannelStatusSyncCompleted(event: ChannelStatusSyncCompletedEvent) {
if (event.error == null) {
// Trigger a full refresh if needed
}
}
}
)

// Remove when no longer needed
NCEngine.removeChannelHandler(CHANNEL_STATUS_HANDLER_ID)