cometchat-android-v6-kotlin-components — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited cometchat-android-v6-kotlin-components (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Ground truth:com.cometchat:chatuikit-kotlin-android:6.xcomponent catalog (javap the AAR) +docs/ui-kit/android/v6. Official docs: https://www.cometchat.com/docs/ui-kit/android/v6/components-overview · Docs MCP:claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp(or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
Companion skills: cometchat-android-v6-compose-components (Compose equivalent), cometchat-android-v6-kotlin-theming, cometchat-android-v6-kotlin-customization, cometchat-android-v6-kotlin-placement
Complete catalog of all Kotlin Views components in CometChat UIKit v6. Each component is a custom View class in com.cometchat.uikit.kotlin.presentation.
cometchat-android-v6-compose-components)cometchat-android-v6-kotlin-customization)cometchat-android-v6-kotlin-placement)⛔ Only the components in THIS catalog exist — do not invent or recall names from v4/older memory. Before emitting anyCometChat*view, confirm it's listed below; if it's not here, it doesn't exist (→ "unresolved reference" compile error). There is no all-in-one component: the v4-era compositesCometChatConversationsWithMessages/CometChatUsersWithMessages/CometChatGroupsWithMessages/CometChatMessagesand theCometChatUIgod-view are absent in the v6 Kotlin-Views kit (verified against the publishedchatuikit-kotlin-android:6.0.1AAR — the only top-levelCometChat*views areCometChatConversations,CometChatMessageHeader,CometChatMessageList,CometChatMessageComposer,CometChatMessageInformation,CometChatUsers,CometChatGroups). Compose a two-pane experience yourself:CometChatConversations(list) → on item-click, hostCometChatMessageHeader+CometChatMessageList+CometChatMessageComposerfor the selectedUser/Group.
| Component | Package | Type | Purpose |
|---|---|---|---|
CometChatConversations | presentation.conversations.ui | View | Recent conversations list |
CometChatUsers | presentation.users.ui | View | User list |
CometChatGroups | presentation.groups.ui | View | Group list |
CometChatGroupMembers | presentation.groupmembers.ui | View | Members of a group |
CometChatCallLogs | presentation.calllogs.ui | View | Call history |
⚠️ There is NO combined `CometChatMessages` View on Android v6 Kotlin-Views either. Like the Compose surface, v6 Kotlin-Views ships the pieces separately — compose the chat screen manually asCometChatMessageHeader + CometChatMessageList + CometChatMessageComposer(see §2.4). Nocom.cometchat.uikit.kotlin.presentation.cometchatmessages.CometChatMessagesexists on either surface.
| Component | Package | Type | Purpose |
|---|---|---|---|
CometChatMessageList | presentation.messagelist.ui | View | Message list with bubbles |
CometChatMessageComposer | presentation.messagecomposer.ui | View | Message input with attachments |
CometChatMessageHeader | presentation.messageheader.ui | View | Chat header (name, status, actions) |
CometChatMessageInformation | presentation.messageinformation.ui | View | Message delivery/read info |
CometChatThreadHeader | presentation.threadheader.ui | View | Thread parent message header |
| Component | Package | Type | Purpose |
|---|---|---|---|
CometChatCallButtons | presentation.callbuttons | View | Audio/video call buttons |
CometChatIncomingCall | presentation.incomingcall | View | Incoming call screen |
CometChatOutgoingCall | presentation.outgoingcall | View | Outgoing call screen |
CometChatOngoingCall | presentation.ongoingcall.ui | View | Active call screen |
CometChatCallActivity | calls | Activity | Activity wrapper for calls |
| Component | Package | Type | Purpose |
|---|---|---|---|
CometChatSearch | presentation.search.ui | View | Global search |
CometChatReactionList | presentation.reactionlist.ui | View | Reaction details |
CometChatEmojiKeyboard | presentation.emojikeyboard.ui | View | Emoji picker |
CometChatStickerKeyboard | presentation.stickerkeyboard.ui | View | Sticker picker |
CometChatFlagMessageDialog | presentation.report | Dialog | Report/flag message |
CometChatAIAssistantChatHistory | presentation.aiassistantchathistory.ui | View | AI chat history (extends MaterialCardView) |
CometChatNotificationFeed | presentation.notificationfeed.ui | View | Full-screen notification feed (category filter chips, timestamp grouping, rich cards, real-time updates) — extends FrameLayout |
Located in presentation.shared/:
aiconversationstarter/, aiconversationsummary/, aismartreplies/baseelements/messagebubble/ (BubbleFactory, CometChatMessageBubble, InternalContentRenderer)dialog/mediarecorder/, mediaselection/, mediaviewer/, inlineaudiorecorder/messagepreview/moderation/permission/popupmenu/reaction/receipts/searchbox/shimmer/statusindicator/suggestionlist/toolbar/typingindicator/List components use RecyclerView adapters:
| Adapter | Component |
|---|---|
ConversationsAdapter | CometChatConversations |
MessageAdapter | CometChatMessageList |
| Group/User adapters in respective packages | CometChatGroups, CometChatUsers |
import com.cometchat.uikit.kotlin.presentation.conversations.ui.CometChatConversations
class ConversationsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val conversations = CometChatConversations(this)
conversations.setOnItemClick { conversation ->
// Navigate to chat
}
setContentView(conversations)
}
}<com.cometchat.uikit.kotlin.presentation.messagelist.ui.CometChatMessageList
android:id="@+id/messageList"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />val messageList = findViewById<CometChatMessageList>(R.id.messageList)
messageList.setUser(user)val users = CometChatUsers(this)
users.setOnItemClick { user ->
// Navigate to chat with user
}
setContentView(users)class MessagesActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_messages)
val header = findViewById<CometChatMessageHeader>(R.id.messageHeader)
val messageList = findViewById<CometChatMessageList>(R.id.messageList)
val composer = findViewById<CometChatMessageComposer>(R.id.messageComposer)
header.setUser(user)
messageList.setUser(user)
composer.setUser(user)
}
}Every component has a corresponding style class in its style/ subpackage:
| Component | Style Class |
|---|---|
CometChatConversations | CometChatConversationsStyle |
CometChatUsers | CometChatUsersStyle |
CometChatGroups | CometChatGroupsStyle |
CometChatGroupMembers | CometChatGroupMembersStyle |
CometChatMessageList | CometChatMessageListStyle |
CometChatMessageComposer | CometChatMessageComposerStyle |
CometChatMessageHeader | CometChatMessageHeaderStyle |
CometChatCallLogs | CometChatCallLogsStyle |
CometChatThreadHeader | CometChatThreadHeaderStyle |
CometChatNotificationFeed | CometChatNotificationFeedStyle (@ColorInt Int props; .default() factory; setStyle(style)) |
CometChatAIAssistantChatHistory | CometChatAIAssistantChatHistoryStyle (.default(context)) |
Style classes resolve defaults from XML theme attributes and CometChatTheme singleton.
Each component creates its own ViewModel internally via factories from chatuikit-core. ViewModels are shared with the Compose stack — the same CometChatConversationsViewModel powers both CometChatConversations (View) and CometChatConversations (@Composable).
The list/data components expose three setters to replace the built-in empty, error, and loading states with your own View:
fun setEmptyView(view: View?)
fun setErrorView(view: View?)
fun setLoadingView(view: View?)Verified present on CometChatConversations, CometChatUsers, CometChatGroups, CometChatGroupMembers, CometChatCallLogs, and CometChatSearch (e.g. CometChatConversations.kt:1045/1052/1059, CometChatUsers.kt:735/742/749). Pass null to fall back to the default state view.
val users = findViewById<CometChatUsers>(R.id.users)
users.setEmptyView(layoutInflater.inflate(R.layout.my_empty_state, null))
users.setErrorView(layoutInflater.inflate(R.layout.my_error_state, null))
users.setLoadingView(layoutInflater.inflate(R.layout.my_loading_state, null))CometChatMessageListdoes NOT expose theseset*Viewstate setters — customize its empty/error/loading states through styling/bubble customization instead (seecometchat-android-v6-kotlin-customization).CometChatNotificationFeedinstead takes its own programmatic empty/error/loading rendering internally (see §1.4).
CometChatTheme.DayNight (or .Light / .Dark) — Theme.AppCompat.*, Theme.MaterialComponents.*.Bridge, plain Theme.MaterialComponents.*, and Theme.Material3.* all crash at component inflation. See cometchat-android-v6-kotlin-placement "Activity theme" section.setUser(user) or setGroup(group) to configure messaging components — they need a target to load messagessetBubbleFactories() and set*ViewProvider() — see cometchat-android-v6-kotlin-customization~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.