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 changedonChannelNoDisturbLevelSync(event): Channel Do Not Disturb level changedonChannelStatusSyncCompleted(event): Channel status sync completed
Set up the handler
- Kotlin
- Java
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)
Java
private static final String CHANNEL_STATUS_HANDLER_ID = "channel_status_sync";
NCEngine.addChannelHandler(
CHANNEL_STATUS_HANDLER_ID,
new ChannelHandler() {
@Override
public void onChannelPinnedSync(ChannelPinnedSyncEvent event) {
ChannelIdentifier id = event.getChannelIdentifier();
boolean isPinned = event.isPinned();
// Update the channel UI
}
@Override
public void onChannelNoDisturbLevelSync(ChannelNoDisturbLevelSyncEvent event) {
ChannelIdentifier id = event.getChannelIdentifier();
ChannelNoDisturbLevel level = event.getLevel();
// Update the channel Do Not Disturb UI
}
@Override
public void onChannelStatusSyncCompleted(ChannelStatusSyncCompletedEvent event) {
if (event.getError() == null) {
// Trigger a full refresh if needed
}
}
});
// Remove when no longer needed
NCEngine.removeChannelHandler(CHANNEL_STATUS_HANDLER_ID);