Skip to main content

User event handler

Use UserHandler to receive user-level event callbacks — including subscription event changes, friend relationship changes, and multi-device sync notifications.

Register and remove the handler

kotlin
// Register
NCEngine.addUserHandler("MY_USER_HANDLER", object : UserHandler {
override fun onFriendAdd(event: FriendAddEvent) { /* ... */ }
})

// Remove
NCEngine.removeUserHandler("MY_USER_HANDLER")

Implement UserHandler

All methods have default empty implementations. Override only the callbacks you need.

kotlin
NCEngine.addUserHandler("MY_USER_HANDLER", object : UserHandler {

// Subscription event changed (e.g., online status update)
override fun onSubscriptionChanged(event: SubscriptionChangedEvent) {
for (info in event.events) {
println("User ${info.userId} status changed")
}
}

// Subscription data sync completed
override fun onSubscriptionSyncCompleted(event: SubscriptionSyncCompletedEvent) {
println("Subscription synced for type: ${event.type}")
}

// Subscription info changed on another device
override fun onSubscriptionChangedOnOtherDevices(event: SubscriptionChangedOnOtherDevicesEvent) {
println("Subscription changed on another device: ${event.events.size} events")
}

// Friend added
override fun onFriendAdd(event: FriendAddEvent) {
println("Friend added: ${event.userId}")
}

// Friends deleted
override fun onFriendDelete(event: FriendDeleteEvent) {
println("Friends deleted: ${event.userIds}")
}

// Friend application status changed
override fun onFriendApplicationStatusChanged(event: FriendApplicationStatusChangedEvent) {
println("Friend application from ${event.userId} status: ${event.applicationStatus}")
}

// All friends cleared (server-initiated only)
override fun onFriendCleared(event: FriendClearedEvent) {
println("All friends cleared at: ${event.operationTime}")
}

// Friend info changed on another device (multi-device sync)
override fun onFriendInfoChangedSync(event: FriendInfoChangedSyncEvent) {
println("Friend info synced for: ${event.userId}")
}
})

Callback reference

CallbackEvent typeTrigger
onSubscriptionChangedSubscriptionChangedEventOne or more subscribed events changed (e.g., online status). Iterate event.events.
onSubscriptionSyncCompletedSubscriptionSyncCompletedEventSubscription data sync completed. event.type identifies the subscription type.
onSubscriptionChangedOnOtherDevicesSubscriptionChangedOnOtherDevicesEventSubscription info changed on another device. Iterate event.events.
onFriendAddFriendAddEventA friend was added. event.userId for the friend's ID.
onFriendDeleteFriendDeleteEventOne or more friends were removed. event.userIds for affected IDs.
onFriendApplicationStatusChangedFriendApplicationStatusChangedEventA friend request status changed. event.userId and event.applicationStatus.
onFriendClearedFriendClearedEventAll friends were cleared by a server-side operation. event.operationTime for the timestamp.
onFriendInfoChangedSyncFriendInfoChangedSyncEventFriend info changed on another device (multi-device sync).

UserSettingsHandler

To receive user-level settings sync events, register a UserSettingsHandler separately:

kotlin
// Register
NCEngine.addUserSettingsHandler("MY_SETTINGS_HANDLER", object : UserSettingsHandler {
override fun onUserSettingsSyncCompleted(event: UserSettingsSyncCompletedEvent) {
if (event.error == null) {
// User settings synced successfully
} else {
println("User settings sync failed: ${event.error}")
}
}
})

// Remove
NCEngine.removeUserSettingsHandler("MY_SETTINGS_HANDLER")