
Cometchat Android V6 Extensions
- 5 installs
- 70 repo stars
- Updated June 23, 2026
- cometchat/cometchat-skills
Extends the CometChat v6 data layer using the clean-architecture DataSource/Repository pattern, custom message types, and data-layer overrides.
About
This skill covers extending CometChat v6's data layer via the DataSource/Repository clean-architecture pattern, creating custom DataSource implementations, and registering custom message types. A developer uses it to change how data is fetched or override default repository behavior.
- DataSource/Repository clean-architecture pattern
- Custom DataSource implementations and custom message-type registration
Cometchat Android V6 Extensions by the numbers
- 5 all-time installs (skills.sh)
- Ranked #828 of 1,039 Mobile Development skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/cometchat/cometchat-skills --skill cometchat-android-v6-extensionsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 5 |
|---|---|
| repo stars | ★ 70 |
| Last updated | June 23, 2026 |
| Repository | cometchat/cometchat-skills ↗ |
What it does
Extends the CometChat v6 data layer using the clean-architecture DataSource/Repository pattern, custom message types, and data-layer overrides.
Files
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.ktEach 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 internallyViewModel 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 ResponseHard rules
- DataSources are the DATA layer — they fetch and mutate data. Do NOT confuse with BubbleFactory which is the UI rendering layer
- The v5
DataSourcedecorator /ChatConfiguratorpattern for bubble customization does NOT exist in v6 — use BubbleFactory instead (seecometchat-*-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