cometchat-android-v6-compose-components

v2026.09.25

The closed catalog of CometChat Android v6 UI Kit components for the Jetpack Compose cohort — what exists, the composable import for each, the param shape (onX lambdas, hideX booleans, @Composable slots), and how to pass custom UI into a slot instead of stacking on top. Triggers: 'cometchat compose components', 'is there a X composable', 'cometchat jetpack compose list', 'custom row compose cometchat', 'swap the message bubble compose'.

GitHub
安装命令
npx skhub add cometchat/cometchat-android-v6-compose-components
Markdown
SKILL.md

Ground truth: catalog android-v6.json (287 symbols, from the INSTALLED 6.0.5 source, cross-checked against the published AAR). Param shapes below were read from the Compose source. Fetch anything else from docs (core → references/docs-map.md); never trust memory.

⚠️ This is the Jetpack Compose cohort. Artifact chatuikit-compose-android, namespace com.cometchat.uikit.compose.presentation.*, components are composables configured by named params. The Views cohort (chatuikit-kotlin-android, setX(...) setters) is a separate skill — never install both.

Companion skills (read first)

  • cometchat-android-v6-core — install, credentials, initFromSettings → login → render, the fetch map. Assumed here, never repeated.
  • cometchat-android-v6-compose-placement — where these go · cometchat-android-v6-compose-customization — theming and slots.

Use this skill when

"which composables does the kit have?", "is there a <X> composable?", "what params does the conversations list take?", "can I replace a row / bubble region in Compose?".

Prerequisites & install

⚠️ Required on Compose too: configurations.all { exclude(group = "org.jetbrains", module = "annotations-java5") } plus android.useAndroidX=true + android.enableJetifier=true in gradle.properties. The collision arrives via chatuikit-core-android, which BOTH cohorts pull, so a Compose-only app fails its FIRST build without them (~40 Duplicate class errors). Full block: cometchat-android-v6-core §Prerequisites & install. implementation("com.cometchat:chatuikit-compose-android:6.0.5") + buildFeatures { compose = true } + the Kotlin Compose plugin. Same init/login gate as core.

Component catalog (closed list)

The component NAMES are identical to the Views cohort — only the wiring differs. Import pattern: com.cometchat.uikit.compose.presentation.<area>.ui.<Component>. Not listed ⇒ not in the catalog ⇒ does not exist.

⚠️ Three exceptions to that path (verified vs 6.0.6): the calling trio DOES carry .ui in Compose — …compose.presentation.callbuttons.ui.CometChatCallButtons — which is the OPPOSITE of the Views cohort, so do not carry the Views exception across. And the presentation.shared.* family drops .ui entirely: …presentation.shared.searchbox.CometChatSearchBox, …presentation.shared.baseelements.avatar.CometChatAvatar, …presentation.shared.toolbar.CometChatToolbar. CometChatScopeChange ships in Views only — there is no Compose composable for it.

Conversations & lists — CometChatConversations · CometChatUsers · CometChatGroups · CometChatGroupMembers (+ row composables CometChatConversationListItem, CometChatUsersListItem, CometChatGroupMemberListItem, CometChatGroupsItem). Messaging — CometChatMessageHeader · CometChatMessageList · CometChatMessageComposer · CometChatMessageBubble · CometChatThreadHeader · CometChatThreadScreen · CometChatMessageInformation · CometChatMessageOption · CometChatMessageComposerAction · CometChatReactionList · CometChatMessageReaction · CometChatFlagMessageDialog · CometChatTypingIndicator · CometChatReceipt/CometChatReceipts. Bubbles by type — CometChatTextBubble · CometChatImageBubble/CometChatImagesBubble · CometChatVideoBubble/CometChatVideosBubble · CometChatAudioBubble/CometChatAudiosBubble · CometChatVoiceNoteBubble · CometChatFileBubble/CometChatFilesBubble · CometChatPollBubble · CometChatStickerBubble · CometChatCardBubble · CometChatCollaborativeBubble · CometChatActionBubble · CometChatCallActionBubble · CometChatMeetCallBubble · CometChatDeleteBubble · CometChatAIAssistantBubble. Calling — CometChatCallButtons · CometChatIncomingCall · CometChatOutgoingCall · CometChatOngoingCall · CometChatCallLogs · CometChatCallLogsListItem. Search, AI & notifications — CometChatSearch · CometChatSearchBox · CometChatAIAssistantChatHistory · CometChatAIConversationStarterView · CometChatAISmartRepliesView · CometChatAIConversationSummaryView · CometChatNotificationFeed. Composer add-ons & media — CometChatStickerKeyboard · CometChatEmojiKeyboard · CometChatCreatePoll · CometChatAttachmentTray/CometChatAttachmentTile · CometChatMediaRecorder/CometChatInlineMediaRecorder/CometChatInlineAudioRecorder · CometChatAudioVisualizer/CometChatInlineAudioWaveform · CometChatRichTextToolbar · CometChatSuggestionList · CometChatImagePreview · CometChatImageViewerScreen · CometChatVideoViewerScreen. Building blocks — CometChatAvatar · CometChatBadgeCount · CometChatStatusIndicator · CometChatDate · CometChatToolbar · CometChatDialog/CometChatConfirmDialog · CometChatPopupMenu · CometChatSnackBar · state views CometChatLoadingState/CometChatEmptyState/CometChatErrorState · shimmer CometChatShimmerBox/CometChatShimmerContainer. Non-visual — CometChatUIKit · theming CometChatTheme/CometChatColorScheme/CometChatTypography · CometChatLocalize · CometChatSoundManager · events CometChatEvents + the *Event family · formatters CometChatTextFormatter/CometChatMentionsFormatter/CometChatRichTextFormatter.

⚠️ Emitting ANY calling component requires the calls artifact and "uiKit": { "enableCalling": true } in assets/cometchat-settings.json — otherwise it crashes on device while compiling fine (the compile gate cannot catch it). Full artifact/flag/result matrix: docs call-logs page. → cometchat-android-v6-calls.

Param shape — how a Compose component is configured

Three conventions, consistent across the cohort (verified vs 6.0.5):

  • onX lambdas for events — onItemClick: ((Conversation) -> Unit)?, onSearchClick: (() -> Unit)?, onBackPress: (() -> Unit)?, onItemLongClick, onError: ((CometChatException) -> Unit)?, onLoad, onEmpty, onSelection.
  • hideX booleans for affordances — hideSearchBox, hideToolbar, hideBackIcon, hideUserStatus, hideReceipts, hideDeleteOption, hideLoadingState, hideEmptyState, hideErrorState. (Views uses visibility setters; Compose hides.)
  • @Composable slots for custom UI — e.g. itemView, leadingView, subtitleView, trailingView, each (@Composable (Conversation, TypingIndicator?) -> Unit)?. Plus modifier: Modifier, style: CometChat<X>Style = …default(), and request-builder params (conversationsRequestBuilder).
import com.cometchat.uikit.compose.presentation.conversations.ui.CometChatConversations

CometChatConversations(
    modifier = Modifier.fillMaxSize(),
    title = "Chats",
    onItemClick = { conversation -> /* navigate */ },
    onSearchClick = { /* open search route */ },
)

Size it to fill. The kit fills the box you give it — a wrap_content-equivalent (unbounded height, or a Column without weight) renders a sliver (core/references/layout.md).

Key param differences from the Views cohort

ConcernViewsCompose
thread scopesetParentMessageId(Long)parentMessageId: Long = -1 param on list AND composer
thread headersetParentMessage(BaseMessage)parentMessage: BaseMessage (required param)
search scopesetSearchIn(List<SearchScope>)searchScopes: List<SearchScope>
search targetsetUid / setGuiduid: String? / guid: String?
affordancesvisibility settershideX: Boolean
slotsViewHolder listeners@Composable lambdas
Everything else (user, group, onThreadRepliesClick: ((BaseMessage) -> Unit)?) matches by name.

Custom UI goes IN a slot, not on top

Pass a @Composable to the component's slot param (itemView, leadingView, subtitleView, trailingView), use options/addOptions for the long-press menu, and setBubbleFactories-equivalent factories for custom message TYPES. Never stack your own composable over a kit component, and never re-implement a list the kit ships. Detail: cometchat-android-v6-compose-customization.

⚠️ A slot with a DEFAULT implementation REPLACES it — CometChatMessageHeader auxiliaryView vs trailingView (verified vs installed 6.0.5 source + on device). The header's auxiliaryView substitutes the built-in DefaultAuxiliaryView, which is what HOSTS the voice/video call buttons — so putting a custom icon there silently removes them. Extra header icons belong in trailingView, a separate slot that keeps the auxiliary area (and its call buttons) intact. Use auxiliaryView only when you intend to REPLACE the call-button area (and re-render CometChatCallButtons yourself if you still want calling).

Group member permissions — the kit enforces them, don't re-implement

CometChatGroupMembers gates its own long-press menu (verified vs 6.0.5). Rely on it:

Logged-in userMenu opens onCannot act on
Owner (uid == group.owner)anyone but themselves—
Admin (group.scope)participants, moderatorsother admins, owner
Moderatorparticipants onlymoderators, admins, owner
Participantnobodyeveryone

A moderator also cannot assign the admin role (disabled in the scope sheet). Scope strings: CometChatConstants.SCOPE_ADMIN / SCOPE_MODERATOR / SCOPE_PARTICIPANT. Never hand-roll these checks or hide the component behind your own role logic — you will drift from the kit.

⚠️ Reversed parameter order between the two ownership APIs: CometChat.updateGroupMemberScope(UID, GUID, scope, listener) but CometChat.transferGroupOwnership(GUID, UID, listener).

Components that do NOT exist in v6

No combined shell — CometChatConversationsWithMessages, CometChatUsersWithMessages, CometChatGroupsWithMessages, CometChatUI are v4-era. ⚠️ CometChatMessageTemplate is absent from the shipped 6.0.5 artifact (logged internally) — use bubble factories.

Common pitfalls

Mixing cohorts (Views artifact in a Compose app) · using a setX(...) setter on a composable · unbounded height (sliver) · showSearchBar-style thinking (Compose uses hideSearchBox) · overlaying instead of slotting · a custom header icon in CometChatMessageHeader auxiliaryView (replaces the call-button host — use trailingView) · emitting CometChatMessageTemplate · guessing a param instead of fetching the page's Compose tab.

Verify it works

Every composable you emitted is in the list above (Tier-1) and it compiles — ./gradlew :app:assembleDebug # in YOUR app (native-fence.mjs is a pack-repo gate, not installed by the CLI). On device: full-size render with the kit's own loading/empty state, slotted composables INSIDE the component.

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.25

发布时间

2026年9月25日

分类

未分类

许可证

MIT

源路径

skills/cometchat-android-v6-compose-components

默认分支

main

最新提交

f92ff9e

Tree SHA

f40470f