Skip to content
OpenSmartRoute
Skillv1.0.0

cometchat-android-v6-extensions

CometChat Android UIKit v6 extension architecture — DataSource/Repository pattern, custom message types, and data-layer overrides

by cometchat(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from cometchat/cometchat-skills (skills/cometchat-android-v6-extensions/SKILL.md). Install upstream with npx skills add cometchat/cometchat-skills --skill cometchat-android-v6-extensions. Copyright stays with the author (MIT).

Ground truth: com.cometchat:chatuikit-{compose,kotlin}-android:6.x (+ calls-sdk-android:5.x) — resolved AAR (javap) + ui-kit/android/v6. Official docs: https://www.cometchat.com/docs/fundamentals/extensions-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-features (feature catalog), cometchat-android-v6-kotlin-customization, cometchat-android-v6-compose-customization

Purpose

Extend the CometChat UIKit v6 data layer using the clean architecture DataSource/Repository pattern. Create custom DataSource implementations, override repository behavior, and register custom message types.

Use this skill when

  • Creating a custom DataSource implementation to change how data is fetched
  • Overriding default repository behavior
  • Registering custom message types
  • Understanding the data flow from DataSource → Repository → ViewModel

Do not use this skill when

  • Customizing UI/bubble rendering (use cometchat-*-customization — that's the BubbleFactory layer)
  • Working with component APIs (use cometchat-*-components)

1. Clean Architecture Overview

The chatuikit-core module follows clean architecture with three layers:

┌─────────────────────────────────────────┐
│  UI Layer (chatuikit-kotlin / compose)  │
│  Components observe ViewModel state     │
├─────────────────────────────────────────┤
│  ViewModel Layer (core/viewmodel/)      │
│  Calls use cases / repositories         │
├─────────────────────────────────────────┤
│  Domain Layer (core/domain/)            │
│  Repository interfaces, Use cases       │
├─────────────────────────────────────────┤
│  Data Layer (core/data/)                │
│  DataSource interfaces + impls          │
│  Repository implementations            │
└─────────────────────────────────────────┘

2. DataSource Pattern

Each feature area has a DataSource interface and default implementation:

core/data/datasource/
├── ConversationListDataSource.kt       (interface)
├── ConversationListDataSourceImpl.kt   (default implementation)
├── MessageListDataSource.kt
├── MessageListDataSourceImpl.kt
├── ...

2.1 All DataSource Types

DataSource Implementation What it provides
CallButtonsDataSource CallButtonsDataSourceImpl Call button actions
CallLogsDataSource CallLogsDataSourceImpl Call history fetching
CollaborativeDataSource CollaborativeDataSourceImpl Document/whiteboard data
ConversationListDataSource ConversationListDataSourceImpl Conversation list fetching
GroupMembersDataSource GroupMembersDataSourceImpl Group member operations
GroupsDataSource GroupsDataSourceImpl Group list fetching
MessageComposerDataSource MessageComposerDataSourceImpl Composer actions/attachments
MessageHeaderDataSource MessageHeaderDataSourceImpl Header data (name, status)
MessageInformationDataSource MessageInformationDataSourceImpl Read receipts, delivery info
MessageListDataSource MessageListDataSourceImpl Message fetching/pagination
PollDataSource PollDataSourceImpl Poll creation/voting
ReactionListDataSource ReactionListDataSourceImpl Reaction data
SearchDataSource SearchDataSourceImpl Global search
StickerDataSource StickerDataSourceImpl Sticker fetching
UsersDataSource UsersDataSourceImpl User list fetching

2.2 Additional DataSource

File Purpose
MessageReceiptEventListener.kt Listens for receipt events at the data layer

3. Repository Pattern

Repositories in core/data/repository/ implement domain interfaces from core/domain/repository/:

core/data/repository/
├── CallButtonsRepositoryImpl.kt
├── CallLogsRepositoryImpl.kt
├── ConversationListRepositoryImpl.kt
├── GroupMembersRepositoryImpl.kt
├── GroupsRepositoryImpl.kt
├── MessageComposerRepositoryImpl.kt
├── MessageHeaderRepositoryImpl.kt
├── MessageInformationRepositoryImpl.kt
├── MessageListRepositoryImpl.kt
├── PollRepositoryImpl.kt
├── ReactionListRepositoryImpl.kt
├── SearchRepositoryImpl.kt
├── StickerRepositoryImpl.kt
├── UsersRepositoryImpl.kt

Each repository wraps a DataSource and adds business logic, caching, or transformation.

4. ViewModel Layer

ViewModels in core/viewmodel/ consume repositories and expose UI state:

// Example: CometChatConversationsViewModel
// - Injected via CometChatConversationsViewModelFactory
// - Exposes StateFlow<ConversationListUIState>
// - Calls ConversationListRepositoryImpl internally

ViewModel factories in core/factory/ handle dependency injection:

Factory ViewModel
CometChatConversationsViewModelFactory CometChatConversationsViewModel
CometChatMessageListViewModelFactory CometChatMessageListViewModel
CometChatGroupsViewModelFactory CometChatGroupsViewModel
CometChatUsersViewModelFactory CometChatUsersViewModel
CometChatCallLogsViewModelFactory CometChatCallLogsViewModel
CometChatMessageComposerViewModelFactory CometChatMessageComposerViewModel
CometChatMessageHeaderViewModelFactory CometChatMessageHeaderViewModel
CometChatGroupMembersViewModelFactory CometChatGroupMembersViewModel
CometChatMessageInformationViewModelFactory CometChatMessageInformationViewModel
CometChatReactionListViewModelFactory CometChatReactionListViewModel
CometChatSearchViewModelFactory CometChatSearchViewModel
CometChatCallButtonsViewModelFactory CometChatCallButtonsViewModel
CometChatCreatePollViewModelFactory CometChatCreatePollViewModel
CometChatThreadHeaderViewModelFactory CometChatThreadHeaderViewModel
CometChatStickerKeyboardViewModelFactory CometChatStickerKeyboardViewModel
CometChatIncomingCallViewModelFactory CometChatIncomingCallViewModel
CometChatOutgoingCallViewModelFactory CometChatOutgoingCallViewModel
CometChatAIAssistantChatHistoryViewModelFactory CometChatAIAssistantChatHistoryViewModel

5. UI State Classes

Each ViewModel exposes a sealed UI state from core/state/:

State Class Used By
CallLogsUIState Call logs
MessageListUIState Message list
GroupsUIState Groups list
UsersUIState Users list
GroupMembersUIState Group members
MessageComposerUIState Composer
MessageHeaderUIState Header
MessageInformationUIState Message info
ReactionListUIState Reactions
SearchUIState Search
CallButtonsUIState Call buttons
CreatePollUIState Poll creation
ThreadHeaderUIState Thread header
StickerKeyboardUIState Sticker keyboard
IncomingCallUIState Incoming call
OutgoingCallUIState Outgoing call
ChatHistoryUIState AI chat history
ConversationStarterUIState AI conversation starter
ConversationSummaryUIState AI conversation summary
SmartRepliesUIState AI smart replies
DeleteState Delete operations
UIState Base UI state

6. Data Flow

User Action → Component → ViewModel → Repository → DataSource → CometChat SDK
                                                                      ↓
UI Update  ← Component ← ViewModel ← StateFlow ← Repository ← SDK Response

Hard rules

  • DataSources are the DATA layer — they fetch and mutate data. Do NOT confuse with BubbleFactory which is the UI rendering layer
  • The v5 DataSource decorator / ChatConfigurator pattern for bubble customization does NOT exist in v6 — use BubbleFactory instead (see cometchat-*-customization)
  • ViewModels are shared across both UI stacks (Kotlin Views and Compose) — they live in chatuikit-core
  • Always use the provided ViewModel factories — do not instantiate ViewModels directly

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/cometchat-cometchat-skills-cometchat-android-v6-extensions/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

cometchat-cometchat-skills-cometchat-android-v6-extensions.ocm.jsonjson
{
  "ocm": "1",
  "id": "cometchat-cometchat-skills-cometchat-android-v6-extensions",
  "kind": "skill",
  "name": "cometchat-android-v6-extensions",
  "description": "CometChat Android UIKit v6 extension architecture — DataSource/Repository pattern, custom message types, and data-layer overrides",
  "publisher": "cometchat",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "general"
    ],
    "tags": [
      "skill-md",
      "cometchat",
      "android",
      "extensions",
      "datasource",
      "repository",
      "clean-architecture",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "CometChat Android UIKit v6 extension architecture — DataSource/Repository pattern, custom message types, and data-layer overrides"
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/cometchat/cometchat-skills",
      "path": "skills/cometchat-android-v6-extensions/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/cometchat/cometchat-skills/blob/HEAD/skills/cometchat-android-v6-extensions/SKILL.md",
      "key": "cometchat/cometchat-skills/skills/cometchat-android-v6-extensions/SKILL.md"
    },
    "compatibility": "Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-core-android:6.x",
    "license": "MIT"
  },
  "instructions": "> **Ground truth:** `com.cometchat:chatuikit-{compose,kotlin}-android:6.x` (+ `calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android/v6`. **Official docs:** https://www.cometchat.com/docs/fundamentals/extensions-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.\n\n> **Companion skills:** cometchat-android-v6-features (feature catalog), cometchat-android-v6-kotlin-customization, cometchat-android-v6-compose-custo",
  "cost": {
    "context_tokens": 2024
  }
}

Fetch it by URL: GET /api/v1/registry/cometchat-cometchat-skills-cometchat-android-v6-extensions/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.