@cometchat/skills 4.2.1 → 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/README.md +33 -12
- package/bin/install.js +59 -4
- package/package.json +14 -1
- package/skills/cometchat/SKILL.md +460 -77
- 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 +20 -2
- 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 +389 -9
- 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 +235 -293
- 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 +22 -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 +412 -13
- 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 +20 -2
- 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 +78 -63
- package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +8 -6
- 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 +348 -10
- 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 +43 -21
- package/skills/cometchat-flutter-v6-testing/SKILL.md +6 -6
- 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 +281 -11
- 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 +56 -18
- package/skills/cometchat-native-calls/SKILL.md +89 -19
- 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 +91 -57
- package/skills/cometchat-native-core/SKILL.md +281 -9
- package/skills/cometchat-native-customization/SKILL.md +150 -28
- package/skills/cometchat-native-expo-patterns/SKILL.md +77 -27
- package/skills/cometchat-native-features/SKILL.md +79 -49
- 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 +71 -3
- package/skills/cometchat-nextjs-patterns/SKILL.md +48 -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 +57 -4
- package/skills/cometchat-react-push/SKILL.md +258 -72
- package/skills/cometchat-react-router-patterns/SKILL.md +43 -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
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cometchat-android-v6-migration
|
|
3
|
-
description: V5→V6 migration recipes for native Android. CometChat ships V5 (chat-uikit-android:5.x — Java + Kotlin Views) and V6
|
|
3
|
+
description: V5→V6 migration recipes for native Android. CometChat ships V5 (chat-uikit-android:5.x — Java + Kotlin Views) and V6 (chatuikit-{compose,kotlin}-android:6.x — GA 2026-05-25 — Compose surface OR Kotlin Views, calls bundled) side-by-side. Covers when to migrate vs stay, the cohort-selection decision (Compose vs Kotlin Views on V6), gradle dependency rewrites, builder API changes (UIKitSettings replaces UIKitSettingsBuilder), theme system rewrite (CometChatTheme.DayNight), calls integration delta (calling UI bundled, but calls-sdk-android:5.0.+ is still a required peer dep), Activity theme rules, side-by-side cohort selection during migration, and a verification checklist.
|
|
4
4
|
license: "MIT"
|
|
5
|
-
compatibility: "Migrating FROM com.cometchat:chat-uikit-android:5.x TO com.cometchat:chatuikit-{compose,kotlin}-android:6.0
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list, ask-user"
|
|
5
|
+
compatibility: "Migrating FROM com.cometchat:chat-uikit-android:5.x TO com.cometchat:chatuikit-{compose,kotlin}-android:6.0.+; minSdk 28+ (V6 raised the floor from 21 to 28); Kotlin >= 1.9 for V6 Compose"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "4.0.0"
|
|
@@ -12,7 +11,7 @@ metadata:
|
|
|
12
11
|
|
|
13
12
|
## Purpose
|
|
14
13
|
|
|
15
|
-
Migration recipes for moving from CometChat Android UIKit V5 (`chat-uikit-android:5.x`) to V6 (`chatuikit-{compose,kotlin}-android:6.0
|
|
14
|
+
Migration recipes for moving from CometChat Android UIKit V5 (`chat-uikit-android:5.x`) to V6 (`chatuikit-{compose,kotlin}-android:6.0.+`). V6 is stable (GA 2026-05-25) and the recommended target for new apps; existing V5 apps can migrate when ready — there's no forced timeline, and V5 remains supported. This skill covers both the decision and the mechanics.
|
|
16
15
|
|
|
17
16
|
V6 is a different SDK, not a drop-in replacement. The migration is roughly the size of jumping from React Native UIKit v5 to v6 — package coordinates, builder APIs, theme system, calls handling all change.
|
|
18
17
|
|
|
@@ -23,9 +22,9 @@ V6 is a different SDK, not a drop-in replacement. The migration is roughly the s
|
|
|
23
22
|
- `cometchat-android-v6-{compose,kotlin}-{components,placement,theming,customization}` — surface-specific destination skills
|
|
24
23
|
- `cometchat-android-v6-calls` — calls migration (calls SDK is bundled in V6)
|
|
25
24
|
|
|
26
|
-
**Ground truth:**
|
|
25
|
+
**Ground truth:** **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).
|
|
27
26
|
- V5 source — installed `com.cometchat:chat-uikit-android@5.x` artifacts under `~/.gradle/caches/`
|
|
28
|
-
- V6 source — installed `chatuikit-{compose,kotlin}-android@6.0
|
|
27
|
+
- V6 source — installed `chatuikit-{compose,kotlin}-android@6.0.+` artifacts
|
|
29
28
|
- Sister skill — `cometchat-flutter-v6-migration` (different platform, same migration shape)
|
|
30
29
|
|
|
31
30
|
---
|
|
@@ -44,7 +43,7 @@ V6 is a different SDK, not a drop-in replacement. The migration is roughly the s
|
|
|
44
43
|
- You're starting a new project
|
|
45
44
|
- You're rewriting your existing app's UI to Compose anyway
|
|
46
45
|
- You need V6 features that aren't backported to V5 (e.g. some AI Agent components)
|
|
47
|
-
- You've validated V6
|
|
46
|
+
- You've validated V6 against your use cases on a sample project first
|
|
48
47
|
|
|
49
48
|
**The dispatcher (`cometchat-android-v6`) routes by detected version.** Both V5 and V6 skill sets ship in `npx @cometchat/skills add --family android` — the migration here lives under V6 because that's the destination cohort.
|
|
50
49
|
|
|
@@ -56,8 +55,8 @@ V6 is split into two surfaces:
|
|
|
56
55
|
|
|
57
56
|
| Surface | Package | When to pick |
|
|
58
57
|
|---|---|---|
|
|
59
|
-
| Compose | `com.cometchat:chatuikit-compose-android:6.0
|
|
60
|
-
| Kotlin Views | `com.cometchat:chatuikit-kotlin-android:6.0
|
|
58
|
+
| Compose | `com.cometchat:chatuikit-compose-android:6.0.+` | New apps; existing apps already on Compose |
|
|
59
|
+
| Kotlin Views | `com.cometchat:chatuikit-kotlin-android:6.0.+` | Existing apps on Java + XML layouts; teams not ready for Compose |
|
|
61
60
|
|
|
62
61
|
**You can mix both in the same app**, but a single chat surface is one or the other — not both.
|
|
63
62
|
|
|
@@ -81,7 +80,7 @@ dependencies {
|
|
|
81
80
|
|
|
82
81
|
```kotlin
|
|
83
82
|
dependencies {
|
|
84
|
-
implementation("com.cometchat:chatuikit-compose-android:6.0
|
|
83
|
+
implementation("com.cometchat:chatuikit-compose-android:6.0.+")
|
|
85
84
|
// No separate calls SDK — calls bundled into the same artifact
|
|
86
85
|
// Compose dependencies (if not already present)
|
|
87
86
|
implementation(platform("androidx.compose:compose-bom:2024.02.00"))
|
|
@@ -95,7 +94,7 @@ dependencies {
|
|
|
95
94
|
|
|
96
95
|
```kotlin
|
|
97
96
|
dependencies {
|
|
98
|
-
implementation("com.cometchat:chatuikit-kotlin-android:6.0
|
|
97
|
+
implementation("com.cometchat:chatuikit-kotlin-android:6.0.+")
|
|
99
98
|
// No separate calls SDK
|
|
100
99
|
// Material Components for theming (`CometChatTheme.DayNight` extends Material themes)
|
|
101
100
|
implementation("com.google.android.material:material:1.11.+")
|
|
@@ -135,30 +134,28 @@ CometChatUIKit.init(this, settings, object : CometChat.CallbackListener<String>(
|
|
|
135
134
|
})
|
|
136
135
|
```
|
|
137
136
|
|
|
138
|
-
### V6 — `UIKitSettings.
|
|
137
|
+
### V6 — `UIKitSettings.UIKitSettingsBuilder()`
|
|
139
138
|
|
|
140
139
|
```kotlin
|
|
141
|
-
val settings = UIKitSettings.
|
|
140
|
+
val settings = UIKitSettings.UIKitSettingsBuilder()
|
|
142
141
|
.setAppId(BuildConfig.COMETCHAT_APP_ID)
|
|
143
142
|
.setRegion(BuildConfig.COMETCHAT_REGION)
|
|
144
143
|
.setAuthKey(BuildConfig.COMETCHAT_AUTH_KEY)
|
|
145
144
|
.subscribePresenceForAllUsers()
|
|
146
|
-
.
|
|
145
|
+
.setEnableCalling(true) // ← calls toggled on here, not via separate SDK
|
|
147
146
|
.build()
|
|
148
147
|
|
|
149
|
-
CometChatUIKit.init(this, settings) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
}
|
|
148
|
+
CometChatUIKit.init(this, settings, object : CometChat.CallbackListener<String>() {
|
|
149
|
+
override fun onSuccess(result: String) { /* ... */ }
|
|
150
|
+
override fun onError(e: CometChatException) { /* surface to UI */ }
|
|
151
|
+
})
|
|
155
152
|
```
|
|
156
153
|
|
|
157
154
|
Differences:
|
|
158
155
|
|
|
159
|
-
-
|
|
160
|
-
- Calls: separate SDK init → `.
|
|
161
|
-
- Result: `
|
|
156
|
+
- Builder: unchanged — both V5 and V6 use `UIKitSettings.UIKitSettingsBuilder()` (nested class)
|
|
157
|
+
- Calls: separate SDK init → `.setEnableCalling(true)` flag on the builder
|
|
158
|
+
- Result handling: unchanged — `init()`/`login()` still take `CometChat.CallbackListener<T>` (onSuccess/onError). There is **no** `Result.Success`/`Result.Error` sealed class in V6.
|
|
162
159
|
|
|
163
160
|
For full builder option mapping, see `cometchat-android-v6-builder-settings`.
|
|
164
161
|
|
|
@@ -166,7 +163,7 @@ For full builder option mapping, see `cometchat-android-v6-builder-settings`.
|
|
|
166
163
|
|
|
167
164
|
## 5. Calls integration migration
|
|
168
165
|
|
|
169
|
-
V5 has a separate `calls-sdk-android` artifact + a separate `CometChatCalls.init`. V6 bundles calls into `chatuikit-{compose,kotlin}-android` and toggles via `.
|
|
166
|
+
V5 has a separate `calls-sdk-android` artifact + a separate `CometChatCalls.init`. V6 bundles calls into `chatuikit-{compose,kotlin}-android` and toggles via `.setEnableCalling(true)`.
|
|
170
167
|
|
|
171
168
|
### V5 calls init
|
|
172
169
|
|
|
@@ -184,12 +181,17 @@ CometChatCalls.init(this, callAppSettings, /* callback */)
|
|
|
184
181
|
### V6 calls init
|
|
185
182
|
|
|
186
183
|
```kotlin
|
|
187
|
-
val settings = UIKitSettings.
|
|
184
|
+
val settings = UIKitSettings.UIKitSettingsBuilder()
|
|
188
185
|
// ... appId, region, authKey ...
|
|
189
|
-
.
|
|
186
|
+
.setEnableCalling(true) // ← that's it; calls SDK init happens internally
|
|
190
187
|
.build()
|
|
191
188
|
|
|
192
|
-
|
|
189
|
+
// init takes a CometChat.CallbackListener<String> (an abstract class — NOT a
|
|
190
|
+
// fun interface), so use the object form, not a trailing lambda.
|
|
191
|
+
CometChatUIKit.init(this, settings, object : CometChat.CallbackListener<String>() {
|
|
192
|
+
override fun onSuccess(result: String) { /* ready */ }
|
|
193
|
+
override fun onError(e: CometChatException) { /* handle */ }
|
|
194
|
+
})
|
|
193
195
|
```
|
|
194
196
|
|
|
195
197
|
### Permissions + manifest carry over
|
|
@@ -255,7 +257,7 @@ This is documented in `cometchat-android-v6-troubleshooting` and surfaced in the
|
|
|
255
257
|
1. Audit V5 theme attrs (`grep cometchat res/values/`)
|
|
256
258
|
2. Map each to its V6 equivalent (most are same names; some have been renamed for Material 3 alignment)
|
|
257
259
|
3. Activity manifest: change `android:theme="@style/Theme.AppCompat.*"` → `android:theme="@style/Theme.YourApp"` where the new theme inherits `CometChatTheme.DayNight`
|
|
258
|
-
4. Programmatic theme overrides: rewrite via Compose `CometChatTheme(colorScheme = ...)` or Kotlin Views `CometChatTheme.singleton.colors
|
|
260
|
+
4. Programmatic theme overrides: rewrite via Compose `CometChatTheme(colorScheme = ...)` or Kotlin Views `CometChatTheme.setPrimaryColor(...)` (the `CometChatTheme` object exposes `setPrimaryColor`/`setExtendedPrimaryColor*`/`setNeutralColor*` etc. — there is no `.singleton.colors` field; depends on surface)
|
|
259
261
|
|
|
260
262
|
For full mapping, see `cometchat-android-v6-{compose,kotlin}-theming`.
|
|
261
263
|
|
|
@@ -275,24 +277,24 @@ import com.cometchat.chatuikit.messages.CometChatMessageList
|
|
|
275
277
|
### V6 Compose imports
|
|
276
278
|
|
|
277
279
|
```kotlin
|
|
278
|
-
import com.cometchat.
|
|
279
|
-
import com.cometchat.
|
|
280
|
+
import com.cometchat.uikit.compose.presentation.conversations.ui.CometChatConversations
|
|
281
|
+
import com.cometchat.uikit.compose.presentation.messagelist.ui.CometChatMessageList
|
|
280
282
|
```
|
|
281
283
|
|
|
282
284
|
### V6 Kotlin Views imports
|
|
283
285
|
|
|
284
286
|
```kotlin
|
|
285
|
-
import com.cometchat.
|
|
286
|
-
import com.cometchat.
|
|
287
|
+
import com.cometchat.uikit.kotlin.presentation.conversations.ui.CometChatConversations
|
|
288
|
+
import com.cometchat.uikit.kotlin.presentation.messagelist.ui.CometChatMessageList
|
|
287
289
|
```
|
|
288
290
|
|
|
289
|
-
The skill rewrites imports during migration. Most projects can do a regex sweep:
|
|
291
|
+
The skill rewrites imports during migration. The V6 namespace is `com.cometchat.uikit.{compose,kotlin}.presentation.<feature>.ui` — NOT the V5 `com.cometchat.chatuikit.*`. Most projects can do a regex sweep:
|
|
290
292
|
|
|
291
293
|
```bash
|
|
292
294
|
# Compose path
|
|
293
|
-
sed -i 's|com.cometchat.chatuikit.
|
|
295
|
+
sed -i -E 's|com.cometchat.chatuikit.([a-z]+)|com.cometchat.uikit.compose.presentation.\1.ui|g' app/src/main/kotlin/**/*.kt
|
|
294
296
|
# Kotlin Views path
|
|
295
|
-
sed -i 's|com.cometchat.chatuikit.
|
|
297
|
+
sed -i -E 's|com.cometchat.chatuikit.([a-z]+)|com.cometchat.uikit.kotlin.presentation.\1.ui|g' app/src/main/kotlin/**/*.kt
|
|
296
298
|
```
|
|
297
299
|
|
|
298
300
|
But verify each rewrite — some V5 modules have been split or merged in V6 in ways the agent should review case-by-case.
|
|
@@ -326,14 +328,14 @@ For an in-progress migration, you can have V5 and V6 in the same module temporar
|
|
|
326
328
|
|
|
327
329
|
□ Update gradle
|
|
328
330
|
□ Remove chat-uikit-android:5.x
|
|
329
|
-
□ KEEP calls-sdk-android:5.0.+ (V6 needs it as peer dep — see §"
|
|
330
|
-
□ Add chatuikit-{compose,kotlin}-android:6.0
|
|
331
|
+
□ KEEP calls-sdk-android:5.0.+ (V6 needs it as peer dep — see §"KEEP calls-sdk-android:5.0.+" above)
|
|
332
|
+
□ Add chatuikit-{compose,kotlin}-android:6.0.+
|
|
331
333
|
□ Add Compose deps (if applicable) or Material Components (if Kotlin Views)
|
|
332
334
|
|
|
333
335
|
□ Rewrite init
|
|
334
|
-
□ UIKitSettingsBuilder → UIKitSettings.
|
|
335
|
-
□ Drop separate CometChatCalls.init; add .
|
|
336
|
-
□ CallbackListener
|
|
336
|
+
□ UIKitSettingsBuilder → UIKitSettings.UIKitSettingsBuilder()
|
|
337
|
+
□ Drop separate CometChatCalls.init; add .setEnableCalling(true) on UIKitSettings
|
|
338
|
+
□ init callback stays CometChat.CallbackListener<String> (V6 did NOT switch to a Result/sealed-class API)
|
|
337
339
|
|
|
338
340
|
□ Rewrite themes
|
|
339
341
|
□ Activity theme parent → CometChatTheme.DayNight (Kotlin Views)
|
|
@@ -379,8 +381,8 @@ For an in-progress migration, you can have V5 and V6 in the same module temporar
|
|
|
379
381
|
- [ ] `app/build.gradle.kts` has only one CometChat dep tree (V5 OR V6, not both)
|
|
380
382
|
- [ ] `minSdk = 28` or higher
|
|
381
383
|
- [ ] All V5 imports rewritten to the V6 surface (`compose` or `kotlin` namespace)
|
|
382
|
-
- [ ] `UIKitSettingsBuilder` → `UIKitSettings.
|
|
383
|
-
- [ ] `.
|
|
384
|
+
- [ ] `UIKitSettingsBuilder` → `UIKitSettings.UIKitSettingsBuilder()` everywhere
|
|
385
|
+
- [ ] `.setEnableCalling(true)` on the builder if calls are used
|
|
384
386
|
- [ ] Activity themes inherit `CometChatTheme.DayNight` (Kotlin Views path)
|
|
385
387
|
- [ ] No `CometChatCalls.init` calls outside what V6 does internally
|
|
386
388
|
- [ ] `calls-sdk-android:5.0.+` retained as explicit peer dep (V6 needs it; despite vendor marketing of "bundled calls")
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v6-production
|
|
|
3
3
|
description: "CometChat Android UIKit v6 production readiness — token auth, ProGuard/R8, security checklist, release configuration"
|
|
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, production, security, proguard, release, auth-token"
|
|
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/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-v6-core (init/login), cometchat-android-v6-builder-settings (UIKitSettings), cometchat-android-v6-push (FCM)
|
|
14
15
|
|
|
15
16
|
## Purpose
|
|
@@ -165,11 +166,13 @@ implementation("androidx.compose.material3:material3")
|
|
|
165
166
|
Pin CometChat SDK versions explicitly:
|
|
166
167
|
|
|
167
168
|
```kotlin
|
|
168
|
-
implementation("com.cometchat:chatuikit-compose-android:6.0
|
|
169
|
+
implementation("com.cometchat:chatuikit-compose-android:6.0.+")
|
|
169
170
|
// or
|
|
170
|
-
implementation("com.cometchat:chatuikit-kotlin-android:6.0
|
|
171
|
+
implementation("com.cometchat:chatuikit-kotlin-android:6.0.+")
|
|
171
172
|
```
|
|
172
173
|
|
|
174
|
+
> Never pin `6.0.0-beta2` (or any `-beta` preview) in a production build — V6 went GA on 2026-05-25. The `6.0.+` dynamic pin tracks GA patches forward (ENG-35701). Pin an exact GA patch (e.g. `6.0.1`) if your release process requires reproducible builds.
|
|
175
|
+
|
|
173
176
|
## 6. minSdk 28 Implications
|
|
174
177
|
|
|
175
178
|
v6 requires `minSdk = 28` (Android 9.0 Pie). This means:
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v6-push
|
|
|
3
3
|
description: "CometChat Android UIKit v6 push notifications — FCM setup, chat/call notification handling, VoIP integration, and deep-linking"
|
|
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, push, fcm, firebase, voip, notifications, calls"
|
|
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/notifications/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-events (call events), cometchat-android-v6-builder-settings (calling config)
|
|
14
15
|
|
|
15
16
|
## Purpose
|
|
@@ -58,9 +59,49 @@ Add `google-services.json` to your app module's root directory.
|
|
|
58
59
|
FirebaseApp.initializeApp(this)
|
|
59
60
|
```
|
|
60
61
|
|
|
62
|
+
### 1.3 Register / unregister the push token (the kit's ONLY public push API)
|
|
63
|
+
|
|
64
|
+
This is the single load-bearing client step. `CometChatNotifications.registerPushToken(...)` binds the FCM token to the logged-in CometChat user; `unregisterPushToken(...)` clears it. The Android `PushPlatforms` constant is **`FCM_ANDROID`** (verified in `com.cometchat.chat.enums.PushPlatforms` — the only Android value). Everything in §2 onward is sample-app glue you control; *this* is the real API.
|
|
65
|
+
|
|
66
|
+
```kotlin
|
|
67
|
+
import com.cometchat.chat.core.CometChatNotifications
|
|
68
|
+
import com.cometchat.chat.enums.PushPlatforms
|
|
69
|
+
import com.cometchat.chat.exceptions.CometChatException
|
|
70
|
+
import com.google.firebase.messaging.FirebaseMessaging
|
|
71
|
+
|
|
72
|
+
// Call AFTER CometChatUIKit.login(...) resolves (a token registered before
|
|
73
|
+
// login is not bound to a user). Also call from FCMService.onNewToken when a
|
|
74
|
+
// session already exists (token rotation).
|
|
75
|
+
fun registerPushToken() {
|
|
76
|
+
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
|
|
77
|
+
if (!task.isSuccessful) return@addOnCompleteListener
|
|
78
|
+
CometChatNotifications.registerPushToken(
|
|
79
|
+
task.result,
|
|
80
|
+
PushPlatforms.FCM_ANDROID,
|
|
81
|
+
"YOUR_PROVIDER_ID", // FCM Provider ID from the CometChat dashboard (§4 setup)
|
|
82
|
+
object : CometChat.CallbackListener<String>() {
|
|
83
|
+
override fun onSuccess(s: String?) { /* registered */ }
|
|
84
|
+
override fun onError(e: CometChatException) { /* log + retry */ }
|
|
85
|
+
}
|
|
86
|
+
)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Call BEFORE CometChatUIKit.logout() — otherwise the logged-out device keeps
|
|
91
|
+
// receiving pushes for the previous user.
|
|
92
|
+
fun unregisterPushToken(onDone: () -> Unit) {
|
|
93
|
+
CometChatNotifications.unregisterPushToken(object : CometChat.CallbackListener<String>() {
|
|
94
|
+
override fun onSuccess(s: String?) { onDone() }
|
|
95
|
+
override fun onError(e: CometChatException) { onDone() } // proceed with logout regardless
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Lifecycle: **register after login resolves** (and on `onNewToken` when a session exists), **unregister before logout**. This mirrors the verified `cometchat-android-v5-push` pattern — the registration API is identical across v5/v6 (it lives in the Chat SDK, not the UI Kit).
|
|
101
|
+
|
|
61
102
|
## 2. FCMService Implementation
|
|
62
103
|
|
|
63
|
-
> **Heads-up — this is a reference pattern.** The classes referenced below (`CometChatVoIP`, `CometChatVoIPConnectionService`, `FCMMessageDTO`, `FCMCallDto`, `FCMService`, `VoIPPermissionListener`, `CometChatVoIPUtils`, `FCMMessageNotificationUtils`) are NOT exported from `com.cometchat:chatuikit-{compose,kotlin}-android:6.x`. They
|
|
104
|
+
> **Heads-up — this is a reference pattern.** The classes referenced below (`CometChatVoIP`, `CometChatVoIPConnectionService`, `FCMMessageDTO`, `FCMCallDto`, `FCMService`, `VoIPPermissionListener`, `CometChatVoIPUtils`, `FCMMessageNotificationUtils`) are NOT exported from `com.cometchat:chatuikit-{compose,kotlin}-android:6.x`. They are sample-app glue (derived from the CometChat Android push sample app — note: not present in the v6 kit clone, so treat them as a copy-in/reference pattern) — copy the relevant source files into your project, or use them as a guide for writing your own equivalents. The kit's only public push surface is `CometChatNotifications.registerPushToken(...)` / `unregisterPushToken(...)`; everything below is glue you control.
|
|
64
105
|
|
|
65
106
|
Pattern from `master-app-jetpack/fcm/FCMService.kt` (sample-app code, copy into your project):
|
|
66
107
|
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v6-testing
|
|
|
3
3
|
description: "CometChat Android UIKit v6 testing — unit testing ViewModels, Compose UI testing, Espresso, Maestro, and CI configuration"
|
|
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, testing, junit, kotest, compose-testing, espresso, maestro"
|
|
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-extensions (ViewModel/DataSource architecture), cometchat-android-v6-compose-components, cometchat-android-v6-kotlin-components
|
|
14
15
|
|
|
15
16
|
## Purpose
|
|
@@ -111,7 +112,7 @@ fun `emitting message event is received by collector`() = runTest {
|
|
|
111
112
|
CometChatEvents.messageEvents.collect { events.add(it) }
|
|
112
113
|
}
|
|
113
114
|
|
|
114
|
-
CometChatEvents.
|
|
115
|
+
CometChatEvents.emitMessageEvent(
|
|
115
116
|
CometChatMessageEvent.MessageSent(mockMessage, MessageStatus.SUCCESS)
|
|
116
117
|
)
|
|
117
118
|
|
|
@@ -195,13 +196,15 @@ import io.kotest.property.forAll
|
|
|
195
196
|
import io.kotest.property.Arb
|
|
196
197
|
import io.kotest.property.arbitrary.string
|
|
197
198
|
|
|
198
|
-
class
|
|
199
|
+
class BubbleFactoryTest : FunSpec({
|
|
199
200
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
201
|
+
// NOTE: BubbleFactory has NO public getKey(category, type) helper — a factory
|
|
202
|
+
// is matched purely by the getCategory()/getType() pair it overrides. Test that
|
|
203
|
+
// your custom factory reports the category/type it intends to handle.
|
|
204
|
+
test("custom BubbleFactory reports its target category and type") {
|
|
205
|
+
val factory = MyPollBubbleFactory() // your BubbleFactory subclass
|
|
206
|
+
factory.getCategory() shouldBe "custom"
|
|
207
|
+
factory.getType() shouldBe "extension_poll"
|
|
205
208
|
}
|
|
206
209
|
})
|
|
207
210
|
```
|
|
@@ -3,13 +3,14 @@ name: cometchat-android-v6-troubleshooting
|
|
|
3
3
|
description: "CometChat Android UIKit v6 troubleshooting — diagnostic table, common issues, and fixes for both Kotlin Views and Compose stacks"
|
|
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.1"
|
|
10
9
|
tags: "cometchat, android, troubleshooting, debugging, errors, issues"
|
|
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-compose-theming, cometchat-android-v6-kotlin-theming, cometchat-android-v6-push
|
|
14
15
|
|
|
15
16
|
## Purpose
|
|
@@ -49,6 +50,7 @@ Diagnose and fix common issues with CometChat Android UIKit v6 across both Kotli
|
|
|
49
50
|
| Call notifications not showing | VoIP permissions missing | Request READ_PHONE_STATE, MANAGE_OWN_CALLS, ANSWER_PHONE_CALLS |
|
|
50
51
|
| Calls SDK not initialized | `enableCalling` not set | Set `setEnableCalling(true)` on `UIKitSettingsBuilder` |
|
|
51
52
|
| `CometChatCalls` class not found | Missing calls SDK dependency | Add `com.cometchat:calls-sdk-android` to dependencies |
|
|
53
|
+
| Calls broken on `chatuikit:6.0.0` (call button targets wrong user, in-call screen blank, etc.) | Known v6.0.0 calls defects — `CometChatCallButtons` captures the first-rendered user globally + 4 related bugs | Apply the **5 documented workarounds (W1–W5)** in `cometchat-android-v6-calls` (§"Five required workarounds"). The kit ships broken for calls at 6.0.0 but works end-to-end with W1–W5 (validated on device). Don't hand-patch blind — use that section. |
|
|
52
54
|
| Build fails with duplicate classes | Conflicting annotation libs | Add `exclude(group = "org.jetbrains", module = "annotations-java5")` to configurations |
|
|
53
55
|
| `compileSdk` error | SDK too low | Set `compileSdk = 36` |
|
|
54
56
|
| `minSdk` error | API level too low | Set `minSdk = 28` — v6 requires Android 9.0+ |
|
|
@@ -155,6 +157,12 @@ If message list doesn't scroll properly, ensure the layout gives it flexible hei
|
|
|
155
157
|
|
|
156
158
|
## 5. Push Notification Issues
|
|
157
159
|
|
|
160
|
+
### 5.0 No notifications shown on Android 13+ (API 33+)
|
|
161
|
+
|
|
162
|
+
- **Symptom**: FCM messages arrive (visible in logcat) but no system notification appears on Android 13+.
|
|
163
|
+
- **Cause**: `POST_NOTIFICATIONS` is a **runtime** permission on API 33+ — declaring it in the manifest isn't enough.
|
|
164
|
+
- **Fix**: Declare `<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>` AND request it at runtime (`ActivityCompat.requestPermissions(...)` / the Activity Result API) before you expect notifications. Below API 33 it's granted implicitly.
|
|
165
|
+
|
|
158
166
|
### 5.1 SDK Not Initialized in FCM Service
|
|
159
167
|
|
|
160
168
|
```kotlin
|
|
@@ -170,11 +178,24 @@ override fun onMessageReceived(message: RemoteMessage) {
|
|
|
170
178
|
|
|
171
179
|
### 5.2 VoIP Permission Check
|
|
172
180
|
|
|
181
|
+
> ⚠️ **`CometChatVoIP` is NOT a v6 kit/SDK API.** It exists only as an app-local helper in the **V5** sample app; the v6 sample even asserts it must not be referenced (`PreservationPropertyTest.kt:78`). Check the permissions directly with `ContextCompat.checkSelfPermission` (or copy the V5 helper into your project if you want its convenience wrappers):
|
|
182
|
+
|
|
173
183
|
```kotlin
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
184
|
+
import androidx.core.content.ContextCompat
|
|
185
|
+
import android.content.pm.PackageManager
|
|
186
|
+
import android.Manifest
|
|
187
|
+
|
|
188
|
+
// All three permissions are required for VoIP calling
|
|
189
|
+
fun hasVoipPermissions(context: Context): Boolean {
|
|
190
|
+
val needed = listOf(
|
|
191
|
+
Manifest.permission.READ_PHONE_STATE,
|
|
192
|
+
Manifest.permission.MANAGE_OWN_CALLS,
|
|
193
|
+
Manifest.permission.ANSWER_PHONE_CALLS,
|
|
194
|
+
)
|
|
195
|
+
return needed.all {
|
|
196
|
+
ContextCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
|
|
197
|
+
}
|
|
198
|
+
}
|
|
178
199
|
```
|
|
179
200
|
|
|
180
201
|
## 6. Dependency Conflicts
|