Browse SDKs · uni-app / uni-app x
Platform
SDKsuni-app / uni-app x

Get typing status

Query and listen for member typing status across platforms within a conversation.

Copy

When entering a conversation or reconnecting after a connection drop, invoke getInputStates() to determine which client platforms a specific chat member is actively typing on.

Parameters

ParameterTypeRequiredDescription
conversationIDstringYesTarget conversation ID.
userIDstringYesUser ID of the member whose typing status is being queried.

Code example

import { getInputStates } from '@/uni_modules/unix-openim-sdk'

const result = await getInputStates({
  conversationID,
  userID: memberUserID,
})

const platformIDs = result?.platforms ?? []
setTyping(memberUserID, platformIDs.length > 0)

Return value

The Promise resolves with an OpenIMGetInputStatesResult | null object. The platforms property contains an array of OpenIMPlatform values indicating active platforms for that user. An empty array indicates that the member is not actively typing on any platform.

Listen for incoming typing indicators

Centrally register onConversationUserInputStatusChanged to observe incoming typing indicators. The event delivers an OpenIMConversationInputStatusItem | null containing conversationID, userID, and platformIDs. Merge typing states using conversationID:userID as the key.

import {
  OpenIMConversationInputStatusItem,
  off,
  onConversationUserInputStatusChanged,
} from '@/uni_modules/unix-openim-sdk'

const handleInputStatusChanged = (
  status: OpenIMConversationInputStatusItem | null,
) => {
  if (status == null) return

  updateTypingState(
    status.conversationID,
    status.userID,
    status.platformIDs,
  )
}

const inputStatusSubscription =
  onConversationUserInputStatusChanged(handleInputStatusChanged)

function removeTypingStatusListener() {
  off(inputStatusSubscription)
}

Unregister the listener when closing the chat view or switching accounts.