@cometchat/skills 4.3.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/bin/install.js +27 -0
- package/package.json +14 -1
- package/skills/cometchat/SKILL.md +233 -69
- package/skills/cometchat/references/asking-questions.md +48 -0
- package/skills/cometchat-a11y/SKILL.md +3 -2
- package/skills/cometchat-android-v5/SKILL.md +2 -1
- package/skills/cometchat-android-v5-calls/SKILL.md +36 -22
- package/skills/cometchat-android-v5-calls/references/README.md +1 -1
- package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +7 -5
- package/skills/cometchat-android-v5-calls/references/audio-controls.md +4 -4
- package/skills/cometchat-android-v5-calls/references/call-layouts.md +33 -25
- package/skills/cometchat-android-v5-calls/references/call-session.md +2 -2
- package/skills/cometchat-android-v5-calls/references/custom-ui.md +5 -5
- package/skills/cometchat-android-v5-calls/references/event-listeners.md +2 -2
- package/skills/cometchat-android-v5-calls/references/idle-timeout.md +20 -14
- package/skills/cometchat-android-v5-calls/references/in-call-chat.md +1 -1
- package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +43 -27
- package/skills/cometchat-android-v5-calls/references/participant-management.md +3 -3
- package/skills/cometchat-android-v5-calls/references/raise-hand.md +25 -19
- package/skills/cometchat-android-v5-calls/references/recording.md +2 -2
- package/skills/cometchat-android-v5-calls/references/ringing-integration.md +1 -1
- package/skills/cometchat-android-v5-calls/references/screen-sharing.md +5 -9
- package/skills/cometchat-android-v5-calls/references/session-settings.md +3 -3
- package/skills/cometchat-android-v5-calls/references/setup.md +1 -1
- package/skills/cometchat-android-v5-calls/references/share-invite.md +9 -4
- package/skills/cometchat-android-v5-calls/references/video-controls.md +4 -4
- package/skills/cometchat-android-v5-calls/references/voip-calling.md +2 -2
- package/skills/cometchat-android-v5-components/SKILL.md +4 -3
- package/skills/cometchat-android-v5-core/SKILL.md +5 -3
- package/skills/cometchat-android-v5-customization/SKILL.md +171 -7
- package/skills/cometchat-android-v5-extensions/SKILL.md +7 -4
- package/skills/cometchat-android-v5-features/SKILL.md +5 -4
- package/skills/cometchat-android-v5-placement/SKILL.md +2 -1
- package/skills/cometchat-android-v5-production/SKILL.md +2 -1
- package/skills/cometchat-android-v5-push/SKILL.md +2 -3
- package/skills/cometchat-android-v5-testing/SKILL.md +2 -1
- package/skills/cometchat-android-v5-theming/SKILL.md +2 -1
- package/skills/cometchat-android-v5-troubleshooting/SKILL.md +3 -2
- package/skills/cometchat-android-v6/SKILL.md +2 -1
- package/skills/cometchat-android-v6-builder-settings/SKILL.md +11 -7
- package/skills/cometchat-android-v6-calls/SKILL.md +79 -18
- package/skills/cometchat-android-v6-calls/references/advanced-features.md +87 -0
- package/skills/cometchat-android-v6-calls/references/call-layouts.md +24 -15
- package/skills/cometchat-android-v6-calls/references/call-session.md +2 -2
- package/skills/cometchat-android-v6-calls/references/device-management.md +17 -16
- package/skills/cometchat-android-v6-calls/references/idle-timeout.md +7 -4
- package/skills/cometchat-android-v6-calls/references/in-call-chat.md +13 -8
- package/skills/cometchat-android-v6-calls/references/raise-hand.md +6 -4
- package/skills/cometchat-android-v6-compose-components/SKILL.md +52 -29
- package/skills/cometchat-android-v6-compose-customization/SKILL.md +156 -1
- package/skills/cometchat-android-v6-compose-placement/SKILL.md +129 -40
- package/skills/cometchat-android-v6-compose-theming/SKILL.md +27 -1
- package/skills/cometchat-android-v6-core/SKILL.md +208 -28
- package/skills/cometchat-android-v6-events/SKILL.md +4 -1
- package/skills/cometchat-android-v6-extensions/SKILL.md +2 -1
- package/skills/cometchat-android-v6-features/SKILL.md +26 -2
- package/skills/cometchat-android-v6-kotlin-components/SKILL.md +31 -1
- package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +172 -1
- package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +20 -5
- package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +36 -5
- package/skills/cometchat-android-v6-migration/SKILL.md +44 -42
- package/skills/cometchat-android-v6-production/SKILL.md +6 -3
- package/skills/cometchat-android-v6-push/SKILL.md +43 -2
- package/skills/cometchat-android-v6-testing/SKILL.md +11 -8
- package/skills/cometchat-android-v6-troubleshooting/SKILL.md +26 -5
- package/skills/cometchat-angular-calls/SKILL.md +256 -389
- package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +3 -2
- package/skills/cometchat-angular-calls/references/call-layouts.md +29 -12
- package/skills/cometchat-angular-calls/references/call-session.md +2 -2
- package/skills/cometchat-angular-calls/references/custom-ui.md +18 -10
- package/skills/cometchat-angular-calls/references/device-management.md +53 -34
- package/skills/cometchat-angular-calls/references/group-calls.md +45 -24
- package/skills/cometchat-angular-calls/references/idle-timeout.md +31 -15
- package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +7 -6
- package/skills/cometchat-angular-calls/references/raise-hand.md +9 -4
- package/skills/cometchat-angular-calls/references/recording-screen-share.md +32 -39
- package/skills/cometchat-angular-calls/references/ringing-integration.md +3 -1
- package/skills/cometchat-angular-calls/references/share-invite.md +11 -5
- package/skills/cometchat-angular-calls/references/virtual-background.md +29 -0
- package/skills/cometchat-angular-components/SKILL.md +149 -620
- package/skills/cometchat-angular-core/SKILL.md +232 -312
- package/skills/cometchat-angular-customization/SKILL.md +415 -223
- package/skills/cometchat-angular-features/SKILL.md +216 -334
- package/skills/cometchat-angular-patterns/SKILL.md +168 -359
- package/skills/cometchat-angular-placement/SKILL.md +189 -560
- package/skills/cometchat-angular-production/SKILL.md +241 -92
- package/skills/cometchat-angular-push/SKILL.md +280 -294
- package/skills/cometchat-angular-testing/SKILL.md +430 -158
- package/skills/cometchat-angular-theming/SKILL.md +190 -265
- package/skills/cometchat-angular-troubleshooting/SKILL.md +192 -157
- package/skills/cometchat-astro-patterns/SKILL.md +2 -1
- package/skills/cometchat-calls/SKILL.md +25 -19
- package/skills/cometchat-calls/references/use-case-broadcast.md +15 -10
- package/skills/cometchat-calls/references/use-case-marketplace.md +2 -3
- package/skills/cometchat-calls/references/use-case-support.md +3 -4
- package/skills/cometchat-calls/references/use-case-team.md +23 -12
- package/skills/cometchat-calls/references/use-case-telehealth.md +3 -4
- package/skills/cometchat-components/SKILL.md +163 -25
- package/skills/cometchat-core/SKILL.md +255 -19
- package/skills/cometchat-customization/SKILL.md +50 -25
- package/skills/cometchat-features/SKILL.md +313 -34
- package/skills/cometchat-flutter-v5/SKILL.md +10 -4
- package/skills/cometchat-flutter-v5-calls/SKILL.md +188 -158
- package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +48 -24
- package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +20 -15
- package/skills/cometchat-flutter-v5-calls/references/call-session.md +100 -145
- package/skills/cometchat-flutter-v5-calls/references/device-management.md +12 -8
- package/skills/cometchat-flutter-v5-calls/references/group-calls.md +30 -36
- package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +15 -13
- package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +12 -9
- package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +115 -65
- package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +41 -30
- package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +17 -14
- package/skills/cometchat-flutter-v5-calls/references/share-invite.md +8 -2
- package/skills/cometchat-flutter-v5-conversations/SKILL.md +2 -1
- package/skills/cometchat-flutter-v5-core/SKILL.md +5 -4
- package/skills/cometchat-flutter-v5-customization/SKILL.md +136 -5
- package/skills/cometchat-flutter-v5-events/SKILL.md +2 -1
- package/skills/cometchat-flutter-v5-messages/SKILL.md +2 -1
- package/skills/cometchat-flutter-v5-production/SKILL.md +15 -6
- package/skills/cometchat-flutter-v5-push/SKILL.md +2 -1
- package/skills/cometchat-flutter-v5-testing/SKILL.md +17 -6
- package/skills/cometchat-flutter-v5-theming/SKILL.md +2 -1
- package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +7 -6
- package/skills/cometchat-flutter-v5-users-groups/SKILL.md +3 -2
- package/skills/cometchat-flutter-v6/SKILL.md +17 -16
- package/skills/cometchat-flutter-v6-calls/SKILL.md +72 -57
- package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +5 -3
- package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +89 -0
- package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +15 -12
- package/skills/cometchat-flutter-v6-calls/references/call-session.md +2 -2
- package/skills/cometchat-flutter-v6-calls/references/device-management.md +9 -3
- package/skills/cometchat-flutter-v6-calls/references/group-calls.md +10 -10
- package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +15 -7
- package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +6 -3
- package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +23 -16
- package/skills/cometchat-flutter-v6-components/SKILL.md +32 -11
- package/skills/cometchat-flutter-v6-conversations/SKILL.md +39 -11
- package/skills/cometchat-flutter-v6-core/SKILL.md +182 -21
- package/skills/cometchat-flutter-v6-customization/SKILL.md +97 -25
- package/skills/cometchat-flutter-v6-events/SKILL.md +3 -2
- package/skills/cometchat-flutter-v6-features/SKILL.md +15 -6
- package/skills/cometchat-flutter-v6-messages/SKILL.md +111 -60
- package/skills/cometchat-flutter-v6-migration/SKILL.md +18 -25
- package/skills/cometchat-flutter-v6-placement/SKILL.md +79 -50
- package/skills/cometchat-flutter-v6-production/SKILL.md +13 -12
- package/skills/cometchat-flutter-v6-push/SKILL.md +41 -19
- package/skills/cometchat-flutter-v6-testing/SKILL.md +4 -4
- package/skills/cometchat-flutter-v6-theming/SKILL.md +38 -5
- package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +182 -17
- package/skills/cometchat-flutter-v6-users-groups/SKILL.md +12 -4
- package/skills/cometchat-i18n/SKILL.md +139 -78
- package/skills/cometchat-ios/SKILL.md +4 -2
- package/skills/cometchat-ios-calls/SKILL.md +225 -95
- package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +11 -9
- package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +45 -0
- package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +6 -7
- package/skills/cometchat-ios-calls/references/call-layouts.md +31 -91
- package/skills/cometchat-ios-calls/references/call-session.md +51 -54
- package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +33 -29
- package/skills/cometchat-ios-calls/references/custom-ui.md +38 -38
- package/skills/cometchat-ios-calls/references/group-calls.md +33 -70
- package/skills/cometchat-ios-calls/references/idle-timeout.md +24 -25
- package/skills/cometchat-ios-calls/references/in-call-chat.md +19 -23
- package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +128 -70
- package/skills/cometchat-ios-calls/references/picture-in-picture.md +20 -20
- package/skills/cometchat-ios-calls/references/raise-hand.md +14 -227
- package/skills/cometchat-ios-calls/references/recording-screen-share.md +35 -122
- package/skills/cometchat-ios-calls/references/ringing-integration.md +17 -16
- package/skills/cometchat-ios-calls/references/share-invite.md +8 -12
- package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +4 -4
- package/skills/cometchat-ios-components/SKILL.md +200 -12
- package/skills/cometchat-ios-core/SKILL.md +173 -45
- package/skills/cometchat-ios-customization/SKILL.md +276 -110
- package/skills/cometchat-ios-features/SKILL.md +64 -36
- package/skills/cometchat-ios-placement/SKILL.md +15 -12
- package/skills/cometchat-ios-production/SKILL.md +12 -4
- package/skills/cometchat-ios-push/SKILL.md +53 -19
- package/skills/cometchat-ios-testing/SKILL.md +14 -9
- package/skills/cometchat-ios-theming/SKILL.md +39 -3
- package/skills/cometchat-ios-troubleshooting/SKILL.md +41 -21
- package/skills/cometchat-native-bare-patterns/SKILL.md +34 -17
- package/skills/cometchat-native-calls/SKILL.md +28 -16
- package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +2 -2
- package/skills/cometchat-native-calls/references/call-layouts.md +15 -14
- package/skills/cometchat-native-calls/references/call-session.md +2 -2
- package/skills/cometchat-native-calls/references/custom-ui.md +12 -8
- package/skills/cometchat-native-calls/references/device-management.md +53 -30
- package/skills/cometchat-native-calls/references/group-calls.md +35 -30
- package/skills/cometchat-native-calls/references/idle-timeout.md +6 -6
- package/skills/cometchat-native-calls/references/in-call-chat.md +10 -8
- package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +2 -2
- package/skills/cometchat-native-calls/references/raise-hand.md +15 -13
- package/skills/cometchat-native-calls/references/recording-screen-share.md +49 -170
- package/skills/cometchat-native-calls/references/share-invite.md +7 -5
- package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +4 -2
- package/skills/cometchat-native-components/SKILL.md +84 -52
- package/skills/cometchat-native-core/SKILL.md +101 -32
- package/skills/cometchat-native-customization/SKILL.md +150 -28
- package/skills/cometchat-native-expo-patterns/SKILL.md +57 -26
- package/skills/cometchat-native-features/SKILL.md +23 -16
- package/skills/cometchat-native-placement/SKILL.md +19 -10
- package/skills/cometchat-native-production/SKILL.md +9 -3
- package/skills/cometchat-native-push/SKILL.md +2 -1
- package/skills/cometchat-native-testing/SKILL.md +1 -2
- package/skills/cometchat-native-theming/SKILL.md +54 -29
- package/skills/cometchat-native-troubleshooting/SKILL.md +9 -3
- package/skills/cometchat-nextjs-patterns/SKILL.md +20 -6
- package/skills/cometchat-placement/SKILL.md +42 -3
- package/skills/cometchat-production/SKILL.md +12 -5
- package/skills/cometchat-react-calls/SKILL.md +220 -10
- package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +4 -3
- package/skills/cometchat-react-calls/references/call-layouts.md +5 -6
- package/skills/cometchat-react-calls/references/call-session.md +1 -1
- package/skills/cometchat-react-calls/references/custom-ui.md +61 -15
- package/skills/cometchat-react-calls/references/device-management.md +55 -51
- package/skills/cometchat-react-calls/references/group-calls.md +18 -23
- package/skills/cometchat-react-calls/references/idle-timeout.md +25 -12
- package/skills/cometchat-react-calls/references/in-call-chat.md +7 -7
- package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +9 -11
- package/skills/cometchat-react-calls/references/raise-hand.md +14 -14
- package/skills/cometchat-react-calls/references/recording-screen-share.md +39 -38
- package/skills/cometchat-react-calls/references/ringing-integration.md +2 -2
- package/skills/cometchat-react-calls/references/share-invite.md +4 -5
- package/skills/cometchat-react-calls/references/testing-calls-on-web.md +20 -2
- package/skills/cometchat-react-calls/references/virtual-background.md +32 -0
- package/skills/cometchat-react-patterns/SKILL.md +44 -4
- package/skills/cometchat-react-push/SKILL.md +258 -72
- package/skills/cometchat-react-router-patterns/SKILL.md +10 -4
- package/skills/cometchat-react-testing/SKILL.md +14 -5
- package/skills/cometchat-theming/SKILL.md +181 -18
- package/skills/cometchat-troubleshooting/SKILL.md +40 -20
|
@@ -3,13 +3,14 @@ name: cometchat-android-v5-customization
|
|
|
3
3
|
description: "Customize CometChat components beyond theming — custom message templates, DataSource decorators, event listeners, and custom view slots."
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list, grep"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
10
9
|
tags: "cometchat android customization custom-view message-template datasource events"
|
|
11
10
|
---
|
|
12
11
|
|
|
12
|
+
> **Ground truth:** `com.cometchat:chat-uikit-android:5.x` (legacy/maintenance-only; +`calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android`. **Official docs:** https://www.cometchat.com/docs/ui-kit/android/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.
|
|
13
|
+
|
|
13
14
|
> **Companion skills:** `cometchat-android-v5-components` provides the component
|
|
14
15
|
> catalog; `cometchat-android-v5-theming` covers visual styling;
|
|
15
16
|
> `cometchat-android-v5-extensions` covers the extension architecture.
|
|
@@ -40,6 +41,8 @@ This skill teaches how to customize CometChat components beyond what theming pro
|
|
|
40
41
|
|
|
41
42
|
Templates define how message bubbles are rendered. Each template maps a message `type` + `category` to custom views.
|
|
42
43
|
|
|
44
|
+
> **Prefer the decorator (§3) for anything app-wide.** The per-list `setTemplates(...)` shown here only affects the one `CometChatMessageList` you call it on. To register a custom type, override a built-in bubble, add an attachment, or add a long-press option **everywhere**, use the four `DataSourceDecorator` recipes in §3 — that is the pattern the kit's own extensions use.
|
|
45
|
+
|
|
43
46
|
**Java:**
|
|
44
47
|
```java
|
|
45
48
|
CometChatMessageTemplate template = new CometChatMessageTemplate()
|
|
@@ -71,10 +74,16 @@ CometChatMessageTemplate template = new CometChatMessageTemplate()
|
|
|
71
74
|
return options;
|
|
72
75
|
});
|
|
73
76
|
|
|
74
|
-
// Apply to message list
|
|
75
|
-
messageList.setTemplates(Collections.singletonList(template));
|
|
77
|
+
// Apply to message list — APPEND to defaults, never replace.
|
|
78
|
+
// ❌ messageList.setTemplates(Collections.singletonList(template)); // wipes ALL default bubbles
|
|
79
|
+
List<CometChatMessageTemplate> templates =
|
|
80
|
+
CometChatUIKit.getDataSource().getMessageTemplates(new AdditionParameter());
|
|
81
|
+
templates.add(template); // keep text/image/video/file/… + add yours
|
|
82
|
+
messageList.setTemplates(templates);
|
|
76
83
|
```
|
|
77
84
|
|
|
85
|
+
> **The #1 custom-bubble mistake:** `setTemplates(singletonList(myTemplate))` replaces the entire template set, so every default bubble (text, image, video, audio, file, …) stops rendering. Always seed the list from `CometChatUIKit.getDataSource().getMessageTemplates(new AdditionParameter())` and `add()` your template — or register a `DataSourceDecorator` (§3) so the append applies app-wide.
|
|
86
|
+
|
|
78
87
|
**Kotlin:**
|
|
79
88
|
```kotlin
|
|
80
89
|
val template = CometChatMessageTemplate()
|
|
@@ -99,7 +108,11 @@ val template = CometChatMessageTemplate()
|
|
|
99
108
|
R.drawable.ic_custom) { /* handle click */ })
|
|
100
109
|
}
|
|
101
110
|
|
|
102
|
-
|
|
111
|
+
// APPEND to defaults — don't replace.
|
|
112
|
+
// ❌ messageList.setTemplates(listOf(template)) // wipes ALL default bubbles
|
|
113
|
+
val templates = CometChatUIKit.getDataSource().getMessageTemplates(AdditionParameter())
|
|
114
|
+
templates.add(template)
|
|
115
|
+
messageList.setTemplates(templates)
|
|
103
116
|
```
|
|
104
117
|
|
|
105
118
|
### Template view slots
|
|
@@ -118,20 +131,26 @@ messageList.setTemplates(listOf(template))
|
|
|
118
131
|
|
|
119
132
|
## 2. CometChatMessageOption
|
|
120
133
|
|
|
121
|
-
Custom actions in the message long-press menu.
|
|
134
|
+
Custom actions in the message long-press menu. `CometChatMessageOption extends CometChatOption`. Verified constructor (`CometChatMessageOption.java:43`):
|
|
135
|
+
|
|
136
|
+
```java
|
|
137
|
+
public CometChatMessageOption(@NotNull String id, @NotNull String title, @ColorInt int icon, OnClick onClick)
|
|
138
|
+
```
|
|
122
139
|
|
|
123
140
|
**Java:**
|
|
124
141
|
```java
|
|
125
142
|
CometChatMessageOption option = new CometChatMessageOption(
|
|
126
143
|
"bookmark", // unique ID
|
|
127
144
|
"Bookmark", // title
|
|
128
|
-
R.drawable.ic_bookmark, // icon
|
|
129
|
-
() -> { // onClick
|
|
145
|
+
R.drawable.ic_bookmark, // icon — see note below
|
|
146
|
+
() -> { // onClick (com.cometchat.chatuikit.shared.interfaces.OnClick)
|
|
130
147
|
// Handle bookmark action
|
|
131
148
|
}
|
|
132
149
|
);
|
|
133
150
|
```
|
|
134
151
|
|
|
152
|
+
> **Icon-param quirk:** the 4-arg constructor's third param is annotated `@ColorInt int icon`, but the kit's own decorators pass a **drawable** resource here (e.g. `MessageTranslationDecorator.java:53` passes `R.drawable.cometchat_ic_translate`). Pass your `R.drawable.*` id — the annotation is misleading, the runtime treats it as a drawable. The 7-arg constructor (`CometChatMessageOption.java:58`) adds `titleColor`, `iconTintColor`, `titleAppearance` if you need styling.
|
|
153
|
+
|
|
135
154
|
---
|
|
136
155
|
|
|
137
156
|
## 3. DataSource and DataSourceDecorator
|
|
@@ -183,6 +202,147 @@ ChatConfigurator.enable(dataSource -> new CustomDataSource(dataSource));
|
|
|
183
202
|
ChatConfigurator.enable { dataSource -> CustomDataSource(dataSource) }
|
|
184
203
|
```
|
|
185
204
|
|
|
205
|
+
### The four customization scenarios (all via the decorator)
|
|
206
|
+
|
|
207
|
+
The canonical Android V5 extension surface is the `DataSource` chain. The four most common requests each map to **one overridden method** on your `DataSourceDecorator`. Every override **must call `super.*` first** and append — returning a fresh list/template wipes the kit's defaults. These are the exact methods + signatures the kit's own extensions use; cited file:line for each.
|
|
208
|
+
|
|
209
|
+
#### Scenario 1 — Register a custom message type (new bubble)
|
|
210
|
+
|
|
211
|
+
Override `getMessageTemplates(...)` and append a `CometChatMessageTemplate` whose `setCategory(...)` is `UIKitConstants.MessageCategory.CUSTOM` and whose `setType(...)` is your custom type string. Render its bubble with `setContentView(MessagesViewHolderListener)`. This mirrors `PollsExtensionDecorator.getMessageTemplates` (`PollsExtensionDecorator.java:82-86`) + `getPollTemplate` (`PollsExtensionDecorator.java:220-309`).
|
|
212
|
+
|
|
213
|
+
**Java:**
|
|
214
|
+
```java
|
|
215
|
+
@Override
|
|
216
|
+
public List<CometChatMessageTemplate> getMessageTemplates(@NonNull AdditionParameter additionParameter) {
|
|
217
|
+
List<CometChatMessageTemplate> templates = super.getMessageTemplates(additionParameter); // keep defaults
|
|
218
|
+
templates.add(getLocationTemplate(additionParameter));
|
|
219
|
+
return templates;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
private CometChatMessageTemplate getLocationTemplate(@NonNull AdditionParameter additionParameter) {
|
|
223
|
+
return new CometChatMessageTemplate()
|
|
224
|
+
.setCategory(UIKitConstants.MessageCategory.CUSTOM) // CUSTOM, not MESSAGE
|
|
225
|
+
.setType("location") // your custom type
|
|
226
|
+
// setOptions: Function3<Context, BaseMessage, Group, List<CometChatMessageOption>>
|
|
227
|
+
.setOptions((context, baseMessage, group) ->
|
|
228
|
+
ChatConfigurator.getDataSource().getCommonOptions(context, baseMessage, group, additionParameter))
|
|
229
|
+
.setContentView(new MessagesViewHolderListener() {
|
|
230
|
+
@Override
|
|
231
|
+
public View createView(Context context, CometChatMessageBubble messageBubble,
|
|
232
|
+
UIKitConstants.MessageBubbleAlignment alignment) {
|
|
233
|
+
return LayoutInflater.from(context).inflate(R.layout.custom_location_bubble, null);
|
|
234
|
+
}
|
|
235
|
+
@Override
|
|
236
|
+
public void bindView(Context context, View createdView, BaseMessage message,
|
|
237
|
+
UIKitConstants.MessageBubbleAlignment alignment,
|
|
238
|
+
RecyclerView.ViewHolder holder, List<BaseMessage> messageList, int position) {
|
|
239
|
+
// bind from (CustomMessage) message customData
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
> You usually also want the type to count as a known type: override `getDefaultMessageTypes(...)` / `getDefaultMessageCategories(...)` and append your type / `MessageCategory.CUSTOM` (Polls does exactly this — `PollsExtensionDecorator.java:171-186`).
|
|
246
|
+
|
|
247
|
+
#### Scenario 2 — Override an existing built-in type's bubble
|
|
248
|
+
|
|
249
|
+
Do **not** rebuild the template list. Override the per-type template getter and mutate the template returned by `super`. The verified getters on `DataSource` are `getTextTemplate(AdditionParameter)`, `getImageTemplate`, `getVideoTemplate`, `getAudioTemplate`, `getFileTemplate` (`DataSource.java:230-244`), plus the lookup `getMessageTemplate(String category, String type, AdditionParameter)` (`DataSource.java:260`). The decorator forwards each to the wrapped source (`DataSourceDecorator.java:598`, `:652`), so call `super` then re-skin only the slot you want.
|
|
250
|
+
|
|
251
|
+
**Java:**
|
|
252
|
+
```java
|
|
253
|
+
@Override
|
|
254
|
+
public CometChatMessageTemplate getTextTemplate(@NonNull AdditionParameter additionParameter) {
|
|
255
|
+
CometChatMessageTemplate template = super.getTextTemplate(additionParameter); // keeps type/category/options
|
|
256
|
+
template.setContentView(new MessagesViewHolderListener() { // swap only the content slot
|
|
257
|
+
@Override
|
|
258
|
+
public View createView(Context context, CometChatMessageBubble messageBubble,
|
|
259
|
+
UIKitConstants.MessageBubbleAlignment alignment) {
|
|
260
|
+
return LayoutInflater.from(context).inflate(R.layout.my_text_bubble, null);
|
|
261
|
+
}
|
|
262
|
+
@Override
|
|
263
|
+
public void bindView(Context context, View createdView, BaseMessage message,
|
|
264
|
+
UIKitConstants.MessageBubbleAlignment alignment,
|
|
265
|
+
RecyclerView.ViewHolder holder, List<BaseMessage> messageList, int position) {
|
|
266
|
+
((TextView) createdView.findViewById(R.id.body)).setText(((TextMessage) message).getText());
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
return template;
|
|
270
|
+
}
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
> `setContentView`/`setBubbleView`/`setHeaderView`/`setBottomView`/`setStatusInfoView`/`setFooterView`/`setReplyView` all take a `MessagesViewHolderListener` and return the template (`CometChatMessageTemplate.java:79-202`) — pick the slot you need. Overriding `getTextTemplate` reskins **every** text bubble app-wide while preserving its default options/category/type.
|
|
274
|
+
|
|
275
|
+
#### Scenario 3 — Add a composer attachment option
|
|
276
|
+
|
|
277
|
+
Override `getAttachmentOptions(...)`, call `super`, and append a `CometChatMessageComposerAction` (a builder — `setId/setTitle/setIcon/setOnClick`, `CometChatMessageComposerAction.java:46-127`). This is exactly `PollsExtensionDecorator.getAttachmentOptions` (`PollsExtensionDecorator.java:88-168`).
|
|
278
|
+
|
|
279
|
+
**Java:**
|
|
280
|
+
```java
|
|
281
|
+
@Override
|
|
282
|
+
public List<CometChatMessageComposerAction> getAttachmentOptions(Context context, User user,
|
|
283
|
+
Group group, HashMap<String, String> idMap, @NonNull AdditionParameter additionParameter) {
|
|
284
|
+
List<CometChatMessageComposerAction> options =
|
|
285
|
+
super.getAttachmentOptions(context, user, group, idMap, additionParameter); // keep camera/gallery/file/poll/…
|
|
286
|
+
options.add(new CometChatMessageComposerAction()
|
|
287
|
+
.setId("location")
|
|
288
|
+
.setTitle("Send Location")
|
|
289
|
+
.setIcon(R.drawable.ic_location)
|
|
290
|
+
.setOnClick(() -> { /* pick + send (see below) */ }));
|
|
291
|
+
return options;
|
|
292
|
+
}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
#### Scenario 4 — Add a message long-press option (Forward-style)
|
|
296
|
+
|
|
297
|
+
Override the **per-type** option getter — `getTextMessageOptions`, `getImageMessageOptions`, `getVideoMessageOptions`, `getAudioMessageOptions`, or `getFileMessageOptions` (`DataSource.java:49-108`) — call `super`, then append a `CometChatMessageOption`. This is exactly `MessageTranslationDecorator.getTextMessageOptions` (`MessageTranslationDecorator.java:44-59`).
|
|
298
|
+
|
|
299
|
+
**Java:**
|
|
300
|
+
```java
|
|
301
|
+
@Override
|
|
302
|
+
public List<CometChatMessageOption> getTextMessageOptions(Context context,
|
|
303
|
+
BaseMessage baseMessage, Group group, @NonNull AdditionParameter additionParameter) {
|
|
304
|
+
List<CometChatMessageOption> options =
|
|
305
|
+
super.getTextMessageOptions(context, baseMessage, group, additionParameter); // keep reply/copy/edit/delete/…
|
|
306
|
+
if (baseMessage != null && baseMessage.getDeletedAt() == 0) {
|
|
307
|
+
options.add(new CometChatMessageOption(
|
|
308
|
+
"forward", "Forward", R.drawable.ic_forward, () -> { /* forward baseMessage */ }));
|
|
309
|
+
}
|
|
310
|
+
return options;
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
> `getMessageOptions(...)` (`DataSource.java:271`) is the **aggregate** dispatcher the kit calls per message; it routes to the per-type getters above. To add an option to *one* message type, override that type's getter (as above). Override `getMessageOptions` only when you want the option on **every** message type at once.
|
|
315
|
+
|
|
316
|
+
> **Append rule (all four):** an override that returns a fresh `new ArrayList<>()` instead of starting from `super.*` wipes every default (bubbles, attachments, or options). Always seed from `super`.
|
|
317
|
+
|
|
318
|
+
Register the decorator app-wide via `ChatConfigurator.enable(...)` (§"Register via ChatConfigurator" above) — it accepts `Function1<DataSource, DataSource>` (`ChatConfigurator.java:39`). For a packaged two-class extension (registrar + decorator), see `cometchat-android-v5-extensions`.
|
|
319
|
+
|
|
320
|
+
### Sending a custom message — use the UIKit path, not the raw SDK
|
|
321
|
+
|
|
322
|
+
```java
|
|
323
|
+
CustomMessage message = new CustomMessage(
|
|
324
|
+
receiverId, CometChatConstants.RECEIVER_TYPE_USER, // or RECEIVER_TYPE_GROUP
|
|
325
|
+
"location", // matches the template type
|
|
326
|
+
customData); // JSONObject
|
|
327
|
+
// ✅ kit path — sets muid + sender, fires ccMessageSent → list APPENDS
|
|
328
|
+
CometChatUIKit.sendCustomMessage(message, new CometChat.CallbackListener<CustomMessage>() {
|
|
329
|
+
@Override public void onSuccess(CustomMessage m) { }
|
|
330
|
+
@Override public void onError(CometChatException e) { }
|
|
331
|
+
});
|
|
332
|
+
// ❌ CometChat.sendCustomMessage(...) — no muid/sender/event → recipient error + realtime replace
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
Verified against kit source (chat-uikit-android 5.x):
|
|
336
|
+
- `CometChatUIKit.getDataSource()`, `ChatConfigurator.getDataSource()` / `ChatConfigurator.enable(Function1<DataSource,DataSource>)` (`ChatConfigurator.java:39,55`)
|
|
337
|
+
- `DataSource.getMessageTemplates(AdditionParameter)` (`DataSource.java:248`); per-type template getters `getTextTemplate/getImageTemplate/getVideoTemplate/getAudioTemplate/getFileTemplate(AdditionParameter)` (`DataSource.java:230-244`); lookup `getMessageTemplate(String category, String type, AdditionParameter)` (`DataSource.java:260`)
|
|
338
|
+
- Per-type option getters `getTextMessageOptions/getImageMessageOptions/getVideoMessageOptions/getAudioMessageOptions/getFileMessageOptions(Context, BaseMessage, Group, AdditionParameter)` (`DataSource.java:49-108`); aggregate `getMessageOptions(...)` (`DataSource.java:271`)
|
|
339
|
+
- `DataSource.getAttachmentOptions(Context, User, Group, HashMap, AdditionParameter)` (`DataSource.java:286`)
|
|
340
|
+
- `CometChatMessageTemplate` setters `setType/setCategory(String)`, `setOptions(Function3<Context,BaseMessage,Group,List<CometChatMessageOption>>)`, `setContentView/setBubbleView/setHeaderView/setBottomView/setStatusInfoView/setFooterView/setReplyView(MessagesViewHolderListener)` (`CometChatMessageTemplate.java:79-237`)
|
|
341
|
+
- `CometChatMessageComposerAction` builder `setId/setTitle/setIcon/setOnClick(...)` (`CometChatMessageComposerAction.java:46-127`); `CometChatMessageOption(String,String,int,OnClick)` (`CometChatMessageOption.java:43`)
|
|
342
|
+
- `MessagesViewHolderListener.createView(...)` + `bindView(...)` (`MessagesViewHolderListener.java:18-26`)
|
|
343
|
+
- `CometChatUIKit.sendCustomMessage(CustomMessage, CallbackListener)`
|
|
344
|
+
- Canonical reference decorators: `PollsExtensionDecorator.java` (template + attachment), `MessageTranslationDecorator.java` (message option)
|
|
345
|
+
|
|
186
346
|
---
|
|
187
347
|
|
|
188
348
|
## 4. Event system
|
|
@@ -303,3 +463,7 @@ header.setSubtitleView((context, user, group) -> {
|
|
|
303
463
|
- **Register `ChatConfigurator.enable()` AFTER `CometChatUIKit.init()` succeeds.** The configurator resets on init.
|
|
304
464
|
- **Always remove event listeners when the Activity/Fragment is destroyed.** Use `onDestroy()` or `onDestroyView()`.
|
|
305
465
|
- **Template view slots use `MessagesViewHolderListener`.** Implement both `createView()` and `bindView()`.
|
|
466
|
+
|
|
467
|
+
## Sound (in-app message + call sounds)
|
|
468
|
+
|
|
469
|
+
The V5 UI Kit surfaces `CometChatSoundManager` for incoming/outgoing message + call sounds (mute / custom audio). **V5 is legacy/maintenance-only** — V6 is the current cohort. For call sounds see this family's `-calls` skill; verify the `CometChatSoundManager` API against the installed kit before relying on it.
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v5-extensions
|
|
|
3
3
|
description: "Extension architecture for CometChat Android — ExtensionsDataSource, decorators, built-in extensions, and how to create custom extensions."
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
10
9
|
tags: "cometchat android extensions datasource decorator polls stickers collaborative"
|
|
11
10
|
---
|
|
12
11
|
|
|
12
|
+
> **Ground truth:** `com.cometchat:chat-uikit-android:5.x` (legacy/maintenance-only; +`calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android`. **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.
|
|
13
|
+
|
|
13
14
|
> **Companion skills:** `cometchat-android-v5-customization` covers DataSource decorators;
|
|
14
15
|
> `cometchat-android-v5-features` covers the feature catalog.
|
|
15
16
|
|
|
@@ -98,7 +99,7 @@ public class MyExtensionDecorator extends DataSourceDecorator {
|
|
|
98
99
|
// Override methods to add custom behavior
|
|
99
100
|
}
|
|
100
101
|
|
|
101
|
-
// 2. Registrar — extends ExtensionsDataSource,
|
|
102
|
+
// 2. Registrar — extends ExtensionsDataSource, implements getExtensionId() + addExtension()
|
|
102
103
|
public class MyExtension extends ExtensionsDataSource {
|
|
103
104
|
@Override
|
|
104
105
|
public String getExtensionId() {
|
|
@@ -106,7 +107,9 @@ public class MyExtension extends ExtensionsDataSource {
|
|
|
106
107
|
}
|
|
107
108
|
|
|
108
109
|
@Override
|
|
109
|
-
public void
|
|
110
|
+
public void addExtension() {
|
|
111
|
+
// addExtension() is the ABSTRACT method you must implement. The inherited
|
|
112
|
+
// concrete enable() calls it after confirming the extension is on (dashboard).
|
|
110
113
|
ChatConfigurator.enable(dataSource -> new MyExtensionDecorator(dataSource));
|
|
111
114
|
}
|
|
112
115
|
}
|
|
@@ -119,6 +122,6 @@ extensions.add(new MyExtension());
|
|
|
119
122
|
|
|
120
123
|
## Hard rules
|
|
121
124
|
|
|
122
|
-
- **Two classes per extension.** A registrar (`ExtensionsDataSource`,
|
|
125
|
+
- **Two classes per extension.** A registrar (`ExtensionsDataSource`, implements abstract `getExtensionId()` + `addExtension()`; `enable()` is inherited) and a decorator (`DataSourceDecorator`, holds the per-message override). `setExtensions(...)` wants registrars; the chain builds decorators automatically.
|
|
123
126
|
- **Register after init.** `ChatConfigurator.enable()` must be called after `CometChatUIKit.init()` succeeds.
|
|
124
127
|
- **Backend extension toggle still applies.** Even if an extension is registered client-side, it needs to be enabled on the app's backend. Use `cometchat apply-feature <id> --app-id <X>` (the CLI hits the dashboard API). For dashboard-only extensions (Giphy / Stipop / Tenor / Chatwoot / Intercom — those needing third-party API keys), the user has to enter the third-party config in the dashboard manually.
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v5-features
|
|
|
3
3
|
description: "Add features (calls, reactions, polls, file sharing, AI, etc.) to an already-integrated CometChat project. Routes to the right sub-flow based on feature type."
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
10
9
|
tags: "cometchat android features extensions calls reactions polls ai-features"
|
|
11
10
|
---
|
|
12
11
|
|
|
12
|
+
> **Ground truth:** `com.cometchat:chat-uikit-android:5.x` (legacy/maintenance-only; +`calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android`. **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.
|
|
13
|
+
|
|
13
14
|
> **Companion skills:** `cometchat-android-v5-core` covers initialization;
|
|
14
15
|
> `cometchat-android-v5-customization` covers deeper component customization;
|
|
15
16
|
> `cometchat-android-v5-extensions` covers the extension architecture.
|
|
@@ -42,7 +43,7 @@ This skill teaches how CometChat features are structured and what work is requir
|
|
|
42
43
|
| Type 1 — Default | Built into the UI Kit at compile time | None — already there |
|
|
43
44
|
| Type 2a — Extension | Backend extension, pure boolean toggle | `cometchat apply-feature <id> --app-id <X>` (CLI hits dashboard API) |
|
|
44
45
|
| Type 2b — AI feature | Backend AI feature requiring an OpenAI key | `cometchat apply-feature <id> --app-id <X> --openai-key sk-...` |
|
|
45
|
-
| Type 2c — Dashboard-only | Third-party API key / multi-field config (Giphy, Stipop, Tenor, Chatwoot, Intercom) | Open https://app.cometchat.com →
|
|
46
|
+
| Type 2c — Dashboard-only | Third-party API key / multi-field config (Giphy, Stipop, Tenor, Chatwoot, Intercom) | Open https://app.cometchat.com → Chat & Messaging → Features → configure |
|
|
46
47
|
| Type 3 — Package-install | Requires a separate SDK dependency | Add Gradle dependency |
|
|
47
48
|
| Type 4 — Component-toggle | Hide/show via `setHide*` / `disable*` methods on the relevant component | Call the setter on the component instance (see catalog) |
|
|
48
49
|
|
|
@@ -94,7 +95,7 @@ Requires `cometchat auth login` once per machine.
|
|
|
94
95
|
**AI Features (CLI-toggleable — needs `--openai-key`):**
|
|
95
96
|
Conversation Starter, Conversation Summary, Smart Reply
|
|
96
97
|
|
|
97
|
-
**Dashboard-only (third-party config — open https://app.cometchat.com →
|
|
98
|
+
**Dashboard-only (third-party config — open https://app.cometchat.com → Chat & Messaging → Features):**
|
|
98
99
|
Stickers (Stipop), Giphy, Tenor, Chatwoot, Intercom — these require API keys / webhooks the user must enter manually.
|
|
99
100
|
|
|
100
101
|
---
|
|
@@ -106,7 +107,7 @@ Stickers (Stipop), Giphy, Tenor, Chatwoot, Intercom — these require API keys /
|
|
|
106
107
|
Add the calling SDK:
|
|
107
108
|
|
|
108
109
|
```groovy
|
|
109
|
-
implementation 'com.cometchat:calls-sdk-android:
|
|
110
|
+
implementation 'com.cometchat:calls-sdk-android:5.+'
|
|
110
111
|
```
|
|
111
112
|
|
|
112
113
|
The UI Kit auto-detects the calling SDK and enables call buttons in `CometChatMessageHeader`. No additional code needed — `CometChatIncomingCall`, `CometChatOutgoingCall`, and `CometChatOngoingCall` activate automatically.
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v5-placement
|
|
|
3
3
|
description: "Where to put CometChat in your Android app — Activity, Fragment, BottomSheet, Dialog, Tab, or embedded patterns."
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
10
9
|
tags: "chat cometchat android placement activity fragment bottomsheet dialog tabs integration"
|
|
11
10
|
---
|
|
12
11
|
|
|
12
|
+
> **Ground truth:** `com.cometchat:chat-uikit-android:5.x` (legacy/maintenance-only) views + `docs/ui-kit/android`. **Official docs:** https://www.cometchat.com/docs/ui-kit/android/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.
|
|
13
|
+
|
|
13
14
|
> **Companion skills:** `cometchat-android-v5-core` covers init and login;
|
|
14
15
|
> `cometchat-android-v5-components` provides the component catalog.
|
|
15
16
|
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v5-production
|
|
|
3
3
|
description: "Production readiness for CometChat Android — server-side token auth, user management CRUD, ProGuard rules, and security checklist."
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
10
9
|
tags: "cometchat android production auth token security user-management proguard"
|
|
11
10
|
---
|
|
12
11
|
|
|
12
|
+
> **Ground truth:** `com.cometchat:chat-uikit-android:5.x` (legacy/maintenance-only; +`calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android`. **Official docs:** https://www.cometchat.com/docs/fundamentals/user-auth · **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.
|
|
13
|
+
|
|
13
14
|
> **Companion skills:** `cometchat-android-v5-core` covers dev-mode login;
|
|
14
15
|
> `cometchat-android-v5-push` covers push notification setup for production.
|
|
15
16
|
|
|
@@ -3,7 +3,6 @@ name: cometchat-android-v5-push
|
|
|
3
3
|
description: "Push notifications for CometChat Android — FCM setup, CometChatNotifications API, token registration with PushPlatforms, foreground/background handling, notification channels, reply-from-notification, and tap-to-deep-link."
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x; com.google.firebase:firebase-messaging"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
@@ -17,7 +16,7 @@ metadata:
|
|
|
17
16
|
|
|
18
17
|
Push notifications are non-negotiable for production chat. Without them, a backgrounded app never wakes when a message arrives. This skill covers end-to-end FCM setup for CometChat Android v5 — using the correct `CometChatNotifications` API with `PushPlatforms.FCM_ANDROID`, notification channels, foreground/background handling, reply-from-notification, and tap-to-deep-link.
|
|
19
18
|
|
|
20
|
-
**Ground truth:** `sample-app-java+push-notification/src/main/java/com/cometchat/sampleapp/java/fcm/` and `sample-app-kotlin+push-notification/src/main/java/com/cometchat/sampleapp/kotlin/fcm/` in the v5 UIKit repository.
|
|
19
|
+
**Ground truth:** `sample-app-java+push-notification/src/main/java/com/cometchat/sampleapp/java/fcm/` and `sample-app-kotlin+push-notification/src/main/java/com/cometchat/sampleapp/kotlin/fcm/` in the v5 UIKit repository. **Official docs:** https://www.cometchat.com/docs/notifications/overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP).
|
|
21
20
|
|
|
22
21
|
---
|
|
23
22
|
|
|
@@ -108,7 +107,7 @@ The v5 SDK uses `CometChatNotifications.registerPushToken()` — **not** the dep
|
|
|
108
107
|
|
|
109
108
|
| Method | Signature | Description |
|
|
110
109
|
|---|---|---|
|
|
111
|
-
| `registerPushToken` | `CometChatNotifications.registerPushToken(String token,
|
|
110
|
+
| `registerPushToken` | `CometChatNotifications.registerPushToken(String token, PushPlatforms platform, String providerId, CallbackListener<String>)` | Register FCM token with CometChat (param 2 is the `PushPlatforms` enum, e.g. `PushPlatforms.FCM_ANDROID` — not a String) |
|
|
112
111
|
| `unregisterPushToken` | `CometChatNotifications.unregisterPushToken(CallbackListener<String>)` | Unregister token (call before logout) |
|
|
113
112
|
|
|
114
113
|
### PushPlatforms constants
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v5-testing
|
|
|
3
3
|
description: "Testing patterns for CometChat Android — JUnit + Mockito setup, mocking the SDK, Espresso UI tests, E2E with Maestro, and CI integration."
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x; JUnit 4 (kit sample apps); Mockito/MockK"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
10
9
|
tags: "cometchat android testing junit espresso maestro mockito ci"
|
|
11
10
|
---
|
|
12
11
|
|
|
12
|
+
> **Ground truth:** `com.cometchat:chat-uikit-android:5.x` (legacy/maintenance-only; +`calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android`. **Official docs:** https://www.cometchat.com/docs/ui-kit/android/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.
|
|
13
|
+
|
|
13
14
|
> **Companion skills:** `cometchat-android-v5-core` covers init/login patterns you're testing;
|
|
14
15
|
> `cometchat-android-v5-components` covers component APIs to assert against.
|
|
15
16
|
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v5-theming
|
|
|
3
3
|
description: "Customize CometChat UI to match your app's design system. Covers CometChatTheme, XML attributes, style classes, dark mode, and color system."
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
10
9
|
tags: "cometchat android theming customization branding dark-mode colors styles"
|
|
11
10
|
---
|
|
12
11
|
|
|
12
|
+
> **Ground truth:** `com.cometchat:chat-uikit-android:5.x` (legacy/maintenance-only; +`calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android`. **Official docs:** https://www.cometchat.com/docs/ui-kit/android/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.
|
|
13
|
+
|
|
13
14
|
> **Companion skills:** `cometchat-android-v5-core` covers initialization;
|
|
14
15
|
> `cometchat-android-v5-components` provides the component catalog;
|
|
15
16
|
> `cometchat-android-v5-customization` covers deeper component-level overrides.
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v5-troubleshooting
|
|
|
3
3
|
description: "Diagnose and fix problems with a CometChat Android integration. Gradle errors, runtime crashes, rendering issues, and version compatibility."
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list, grep"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
10
9
|
tags: "cometchat android troubleshooting fix diagnose errors crashes gradle proguard"
|
|
11
10
|
---
|
|
12
11
|
|
|
12
|
+
> **Ground truth:** `com.cometchat:chat-uikit-android:5.x` (legacy/maintenance-only; +`calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android`. **Official docs:** https://www.cometchat.com/docs/ui-kit/android/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.
|
|
13
|
+
|
|
13
14
|
> **Companion skills:** `cometchat-android-v5-core` covers correct init/login patterns;
|
|
14
15
|
> `cometchat-android-v5-production` covers ProGuard rules.
|
|
15
16
|
|
|
@@ -50,7 +51,7 @@ This skill teaches how to diagnose CometChat Android integration problems system
|
|
|
50
51
|
| `NetworkOnMainThreadException` | Calling CometChat sync methods on main thread | Use callbacks (all CometChat methods are async) |
|
|
51
52
|
| `minSdkVersion 21` error | CometChat requires API 24+ | Set `minSdkVersion 24` in build.gradle |
|
|
52
53
|
| Message list shows wrong messages | `setUser()`/`setGroup()` called with wrong object | Verify UID/GUID matches the intended conversation |
|
|
53
|
-
| Calling buttons not showing | Calling SDK not added | Add `com.cometchat:calls-sdk-android:
|
|
54
|
+
| Calling buttons not showing | Calling SDK not added | Add `com.cometchat:calls-sdk-android:5.+` dependency (matches `-core`/`-features`) |
|
|
54
55
|
| `java.lang.NoSuchMethodError` | Version mismatch between UI Kit and Chat SDK | Use compatible versions — UI Kit 5.x requires Chat SDK 4.x |
|
|
55
56
|
|
|
56
57
|
---
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v6
|
|
|
3
3
|
description: "Entry-point dispatcher for CometChat Android UIKit v6 — routes to the correct skill based on project stack and task"
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-compose-android:6.x / com.cometchat:chatuikit-kotlin-android:6.x"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
10
9
|
tags: "cometchat, android, uikit, kotlin, jetpack-compose, dispatcher"
|
|
11
10
|
---
|
|
12
11
|
|
|
12
|
+
> **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/ui-kit/android/v6/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.
|
|
13
|
+
|
|
13
14
|
> **Companion skills:** cometchat-android-v6-core, cometchat-android-v6-events, cometchat-android-v6-kotlin-components, cometchat-android-v6-compose-components, cometchat-android-v6-kotlin-theming, cometchat-android-v6-compose-theming, cometchat-android-v6-kotlin-customization, cometchat-android-v6-compose-customization, cometchat-android-v6-kotlin-placement, cometchat-android-v6-compose-placement, cometchat-android-v6-builder-settings, cometchat-android-v6-features, cometchat-android-v6-extensions, cometchat-android-v6-push, cometchat-android-v6-production, cometchat-android-v6-troubleshooting, cometchat-android-v6-testing
|
|
14
15
|
|
|
15
16
|
## Purpose
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v6-builder-settings
|
|
|
3
3
|
description: "CometChat Android UIKit v6 UIKitSettings configuration — all builder options for SDK init, presence, calling, and host overrides"
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-core-android:6.x"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
10
9
|
tags: "cometchat, android, settings, builder, configuration, calling"
|
|
11
10
|
---
|
|
12
11
|
|
|
12
|
+
> **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/ui-kit/android/v6/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.
|
|
13
|
+
|
|
13
14
|
> **Companion skills:** cometchat-android-v6-core (init/login), cometchat-android-v6-push (FCM/VoIP)
|
|
14
15
|
|
|
15
16
|
## Purpose
|
|
@@ -47,13 +48,14 @@ val settings = UIKitSettings.UIKitSettingsBuilder()
|
|
|
47
48
|
.subscribePresenceForAllUsers() // Subscribe to all users' presence
|
|
48
49
|
.subscribePresenceForRoles(listOf("admin")) // Subscribe by roles
|
|
49
50
|
.subscribePresenceForFriends() // Subscribe to friends' presence
|
|
51
|
+
.setRoles(listOf("admin")) // Override the roles list directly (advanced)
|
|
50
52
|
|
|
51
53
|
// Socket connection
|
|
52
54
|
.setAutoEstablishSocketConnection(true) // Auto-connect (default: true)
|
|
53
55
|
|
|
54
56
|
// Calling
|
|
55
57
|
.setEnableCalling(true) // Auto-init CometChatCalls SDK (default: false)
|
|
56
|
-
.setCallSettingsBuilder(
|
|
58
|
+
.setCallSettingsBuilder(sessionSettingsBuilder) // Custom call config (optional) — pass a CometChatCalls.SessionSettingsBuilder
|
|
57
59
|
|
|
58
60
|
// Host overrides (advanced — for on-premise deployments)
|
|
59
61
|
.overrideAdminHost("https://custom-admin.example.com")
|
|
@@ -92,23 +94,25 @@ For custom call settings:
|
|
|
92
94
|
```kotlin
|
|
93
95
|
import com.cometchat.calls.core.CometChatCalls
|
|
94
96
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
97
|
+
// The kit stores/uses a SessionSettingsBuilder (no-arg ctor) — NOT CallSettingsBuilder.
|
|
98
|
+
// setCallSettingsBuilder(Any) casts its arg to CometChatCalls.SessionSettingsBuilder
|
|
99
|
+
// internally; passing a CallSettingsBuilder is silently stored as null.
|
|
100
|
+
val sessionSettingsBuilder = CometChatCalls.SessionSettingsBuilder()
|
|
101
|
+
// configure via the SessionSettingsBuilder setters (see cometchat-android-v6-calls)
|
|
98
102
|
|
|
99
103
|
val settings = UIKitSettings.UIKitSettingsBuilder()
|
|
100
104
|
.setAppId("APP_ID")
|
|
101
105
|
.setRegion("us")
|
|
102
106
|
.setAuthKey("AUTH_KEY")
|
|
103
107
|
.setEnableCalling(true)
|
|
104
|
-
.setCallSettingsBuilder(
|
|
108
|
+
.setCallSettingsBuilder(sessionSettingsBuilder) // param typed Any; pass a SessionSettingsBuilder
|
|
105
109
|
.build()
|
|
106
110
|
```
|
|
107
111
|
|
|
108
112
|
After init, retrieve the stored builder:
|
|
109
113
|
|
|
110
114
|
```kotlin
|
|
111
|
-
val builder: CometChatCalls.
|
|
115
|
+
val builder: CometChatCalls.SessionSettingsBuilder? = CometChatUIKit.getSessionSettingsBuilder()
|
|
112
116
|
```
|
|
113
117
|
|
|
114
118
|
## 4. Checking Initialization State
|