@cometchat/skills 4.4.2 → 5.0.1
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/.claude-plugin/marketplace.json +55 -0
- package/.claude-plugin/plugin.json +14 -0
- package/CHANGELOG.md +44 -0
- package/LICENSE +21 -0
- package/MIGRATING.md +187 -0
- package/README.md +52 -156
- package/RULES.md +125 -0
- package/bin/cometchat-skills.mjs +1280 -0
- package/bin/legacy-skills.json +95 -0
- package/catalogs/android-v6.json +1646 -0
- package/catalogs/flutter-v6.json +651 -0
- package/catalogs/ios-v5.json +1383 -0
- package/catalogs/rn-calls-v5.json +134 -0
- package/catalogs/rn-calls-v5.symbols.txt +58 -0
- package/catalogs/rn-sdk-v4.json +672 -0
- package/catalogs/rn-v5.json +449 -0
- package/catalogs/rn-v5.symbols.txt +216 -0
- package/catalogs/sdk-android-v5.json +514 -0
- package/contracts.android-calls-v5.json +122 -0
- package/contracts.android-v6.json +135 -0
- package/contracts.angular-v5.json +694 -0
- package/contracts.flutter-calls-v5.json +77 -0
- package/contracts.flutter-v6.json +126 -0
- package/contracts.ios-calls-v5.json +67 -0
- package/contracts.ios-v5.json +436 -0
- package/contracts.json +82 -0
- package/contracts.rn-calls-v5.json +77 -0
- package/contracts.rn-v5.json +727 -0
- package/contracts.sdk-android-v5.json +15 -0
- package/contracts.web-calls-v5.json +45 -0
- package/features.android-calls-v5.json +246 -0
- package/features.android-v6.json +65 -0
- package/features.angular-v5.json +521 -0
- package/features.flutter-calls-v5.json +286 -0
- package/features.flutter-v6.json +484 -0
- package/features.ios-calls-v5.json +236 -0
- package/features.ios-v5.json +573 -0
- package/features.json +61 -0
- package/features.rn-calls-v5.json +187 -0
- package/features.rn-v5.json +614 -0
- package/features.sdk-android-v5.json +40 -0
- package/features.sdk-jsv4.json +24 -0
- package/features.web-calls-v5.json +108 -0
- package/package.json +156 -74
- package/peers.yaml +355 -0
- package/registry/README.md +31 -0
- package/registry/android-calls-v5.json +94 -0
- package/registry/android-v6.json +177 -0
- package/registry/angular-v5.json +154 -0
- package/registry/flutter-calls-v5.json +94 -0
- package/registry/flutter-v6.json +159 -0
- package/registry/ios-calls-v5.json +99 -0
- package/registry/ios-v5.json +152 -0
- package/registry/rn-calls-v5.json +99 -0
- package/registry/rn-v5.json +169 -0
- package/registry/sdk-android-v5.json +93 -0
- package/registry/sdk-jsv4.json +93 -0
- package/registry/web-calls-v5.json +94 -0
- package/registry/web-v7.json +154 -0
- package/skills/cometchat/SKILL.md +47 -2096
- package/skills/cometchat-a11y/SKILL.md +44 -472
- package/skills/cometchat-analytics/SKILL.md +61 -0
- package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
- package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
- package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
- package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
- package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
- package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
- package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
- package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
- package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
- package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
- package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
- package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
- package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
- package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
- package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
- package/skills/cometchat-android-v6-core/SKILL.md +236 -672
- package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
- package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
- package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
- package/skills/cometchat-android-v6-core/references/layout.md +112 -0
- package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
- package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
- package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
- package/skills/cometchat-android-v6-events/SKILL.md +46 -184
- package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
- package/skills/cometchat-android-v6-features/SKILL.md +74 -143
- package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
- package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
- package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
- package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
- package/skills/cometchat-android-v6-production/SKILL.md +41 -179
- package/skills/cometchat-android-v6-push/SKILL.md +39 -289
- package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
- package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
- package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
- package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
- package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
- package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
- package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
- package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
- package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
- package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
- package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
- package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
- package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
- package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
- package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
- package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
- package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
- package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
- package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
- package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
- package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
- package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
- package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
- package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
- package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
- package/skills/cometchat-angular-v5-production/SKILL.md +102 -0
- package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
- package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
- package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
- package/skills/cometchat-audit/SKILL.md +61 -0
- package/skills/cometchat-compliance/SKILL.md +63 -0
- package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
- package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
- package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
- package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
- package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
- package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
- package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
- package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
- package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
- package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
- package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
- package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
- package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
- package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
- package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
- package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
- package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
- package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
- package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +132 -0
- package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
- package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
- package/skills/cometchat-flutter-v6-production/SKILL.md +59 -615
- package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
- package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
- package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
- package/skills/cometchat-i18n/SKILL.md +35 -404
- package/skills/cometchat-ios-calls/SKILL.md +112 -563
- package/skills/cometchat-ios-components/SKILL.md +44 -834
- package/skills/cometchat-ios-core/SKILL.md +182 -1068
- package/skills/cometchat-ios-core/references/anti-patterns.md +113 -0
- package/skills/cometchat-ios-core/references/docs-map.md +124 -0
- package/skills/cometchat-ios-core/references/install.md +23 -0
- package/skills/cometchat-ios-core/references/layout.md +219 -0
- package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
- package/skills/cometchat-ios-core/references/swiftui.md +91 -0
- package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
- package/skills/cometchat-ios-customization/SKILL.md +33 -968
- package/skills/cometchat-ios-features/SKILL.md +29 -738
- package/skills/cometchat-ios-migration/SKILL.md +39 -0
- package/skills/cometchat-ios-placement/SKILL.md +51 -729
- package/skills/cometchat-ios-production/SKILL.md +67 -723
- package/skills/cometchat-ios-push/SKILL.md +24 -602
- package/skills/cometchat-ios-testing/SKILL.md +36 -355
- package/skills/cometchat-ios-troubleshooting/SKILL.md +31 -989
- package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
- package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
- package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
- package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
- package/skills/cometchat-migrate-from-getstream/SKILL.md +65 -0
- package/skills/cometchat-migrate-from-getstream/references/concept-map.md +98 -0
- package/skills/cometchat-migrate-from-getstream/references/data-migration.md +74 -0
- package/skills/cometchat-migrate-from-getstream/references/feature-map.md +108 -0
- package/skills/cometchat-migrate-from-getstream/references/inventory.md +82 -0
- package/skills/cometchat-migrate-from-getstream/references/native-build.md +9 -0
- package/skills/cometchat-migrate-from-getstream/references/report-template.md +59 -0
- package/skills/cometchat-migrate-from-sendbird/SKILL.md +64 -0
- package/skills/cometchat-migrate-from-sendbird/references/concept-map.md +99 -0
- package/skills/cometchat-migrate-from-sendbird/references/data-migration.md +74 -0
- package/skills/cometchat-migrate-from-sendbird/references/feature-map.md +104 -0
- package/skills/cometchat-migrate-from-sendbird/references/inventory.md +86 -0
- package/skills/cometchat-migrate-from-sendbird/references/native-build.md +10 -0
- package/skills/cometchat-migrate-from-sendbird/references/report-template.md +59 -0
- package/skills/cometchat-migrate-from-twilio/SKILL.md +52 -0
- package/skills/cometchat-migrate-from-twilio/references/concept-map.md +49 -0
- package/skills/cometchat-migrate-from-twilio/references/data-migration.md +50 -0
- package/skills/cometchat-migrate-from-twilio/references/feature-map.md +27 -0
- package/skills/cometchat-migrate-from-twilio/references/inventory.md +53 -0
- package/skills/cometchat-migrate-from-twilio/references/report-template.md +52 -0
- package/skills/cometchat-moderation/SKILL.md +58 -0
- package/skills/cometchat-onboarding/SKILL.md +92 -0
- package/skills/cometchat-onboarding/references/archetypes.md +51 -0
- package/skills/cometchat-onboarding/references/calling-first.md +77 -0
- package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
- package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
- package/skills/cometchat-onboarding/references/platforms.md +105 -0
- package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
- package/skills/cometchat-react-native-calls/SKILL.md +200 -0
- package/skills/cometchat-react-native-components/SKILL.md +142 -0
- package/skills/cometchat-react-native-core/SKILL.md +335 -0
- package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
- package/skills/cometchat-react-native-core/references/component-props.md +105 -0
- package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
- package/skills/cometchat-react-native-core/references/docs-map.md +127 -0
- package/skills/cometchat-react-native-core/references/layout.md +61 -0
- package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
- package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
- package/skills/cometchat-react-native-customization/SKILL.md +198 -0
- package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
- package/skills/cometchat-react-native-features/SKILL.md +122 -0
- package/skills/cometchat-react-native-migration/SKILL.md +103 -0
- package/skills/cometchat-react-native-placement/SKILL.md +158 -0
- package/skills/cometchat-react-native-production/SKILL.md +79 -0
- package/skills/cometchat-react-native-push/SKILL.md +88 -0
- package/skills/cometchat-react-native-sdk/SKILL.md +133 -0
- package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
- package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
- package/skills/cometchat-react-native-testing/SKILL.md +94 -0
- package/skills/cometchat-react-native-troubleshooting/SKILL.md +174 -0
- package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
- package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
- package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
- package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
- package/skills/cometchat-react-v7-components/SKILL.md +72 -0
- package/skills/cometchat-react-v7-core/SKILL.md +101 -0
- package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
- package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
- package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
- package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
- package/skills/cometchat-react-v7-core/references/layout.md +150 -0
- package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
- package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
- package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
- package/skills/cometchat-react-v7-core/references/theming.md +52 -0
- package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
- package/skills/cometchat-react-v7-features/SKILL.md +92 -0
- package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
- package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
- package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
- package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
- package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
- package/skills/cometchat-react-v7-production/SKILL.md +84 -0
- package/skills/cometchat-react-v7-push/SKILL.md +53 -0
- package/skills/cometchat-react-v7-testing/SKILL.md +60 -0
- package/skills/cometchat-react-v7-troubleshooting/SKILL.md +47 -0
- package/skills/cometchat-security/SKILL.md +80 -0
- package/skills/cometchat-self-host/SKILL.md +56 -0
- package/test-suite/README.md +70 -0
- package/test-suite/catalogs/android-calls-v5.json +830 -0
- package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
- package/test-suite/catalogs/android-v6.json +1646 -0
- package/test-suite/catalogs/android-v6.symbols.txt +298 -0
- package/test-suite/catalogs/angular-v5.json +7587 -0
- package/test-suite/catalogs/flutter-calls-v5.json +196 -0
- package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
- package/test-suite/catalogs/flutter-v6.json +651 -0
- package/test-suite/catalogs/ios-calls-v5.json +158 -0
- package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
- package/test-suite/catalogs/ios-v5.json +1383 -0
- package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
- package/test-suite/catalogs/rn-calls-v5.json +134 -0
- package/test-suite/catalogs/rn-sdk-v4.json +672 -0
- package/test-suite/catalogs/rn-v5.json +449 -0
- package/test-suite/catalogs/sdk-android-v5.json +514 -0
- package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
- package/test-suite/catalogs/sdk-jsv4.json +800 -0
- package/test-suite/catalogs/web-calls-v5.json +195 -0
- package/test-suite/catalogs/web-v7.json +1243 -0
- package/test-suite/scripts/build-registry.mjs +113 -0
- package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
- package/test-suite/scripts/catalog-refresh.mjs +100 -0
- package/test-suite/scripts/lint-skills.mjs +932 -0
- package/test-suite/scripts/measure-tokens.mjs +169 -0
- package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
- package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
- package/test-suite/scripts/typecheck-fences.mjs +206 -0
- package/test-suite/scripts/verify-catalog.mjs +242 -0
- package/test-suite/scripts/verify-contract-fences.mjs +94 -0
- package/test-suite/scripts/verify-detection.mjs +178 -0
- package/test-suite/scripts/verify-docs-base.mjs +91 -0
- package/test-suite/scripts/verify-family-agnostic.mjs +134 -0
- package/test-suite/scripts/verify-golden-path.mjs +138 -0
- package/test-suite/scripts/verify-oracle-components.mjs +133 -0
- package/test-suite/scripts/verify-template-bindings.mjs +148 -0
- package/test-suite/typecheck/angular-v5/package.json +21 -0
- package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
- package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
- package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
- package/test-suite/typecheck/web-v7/package.json +18 -0
- package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
- package/bin/install.js +0 -1003
- package/skills/.claude-plugin/marketplace.json +0 -86
- package/skills/cometchat/references/asking-questions.md +0 -48
- package/skills/cometchat-android-v5/SKILL.md +0 -121
- package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
- package/skills/cometchat-android-v5-calls/references/README.md +0 -53
- package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
- package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
- package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
- package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
- package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
- package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
- package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
- package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
- package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
- package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
- package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
- package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
- package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
- package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
- package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
- package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
- package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
- package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
- package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
- package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
- package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
- package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
- package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
- package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
- package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
- package/skills/cometchat-android-v5-components/SKILL.md +0 -431
- package/skills/cometchat-android-v5-core/SKILL.md +0 -486
- package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
- package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
- package/skills/cometchat-android-v5-features/SKILL.md +0 -131
- package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
- package/skills/cometchat-android-v5-production/SKILL.md +0 -95
- package/skills/cometchat-android-v5-push/SKILL.md +0 -619
- package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
- package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
- package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
- package/skills/cometchat-android-v6/SKILL.md +0 -108
- package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
- package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
- package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
- package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
- package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
- package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
- package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
- package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
- package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
- package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
- package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
- package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
- package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
- package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
- package/skills/cometchat-angular-calls/SKILL.md +0 -380
- package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
- package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
- package/skills/cometchat-angular-calls/references/call-session.md +0 -167
- package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
- package/skills/cometchat-angular-calls/references/device-management.md +0 -154
- package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
- package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
- package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
- package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
- package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
- package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
- package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
- package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
- package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
- package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
- package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
- package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
- package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
- package/skills/cometchat-angular-components/SKILL.md +0 -235
- package/skills/cometchat-angular-core/SKILL.md +0 -386
- package/skills/cometchat-angular-customization/SKILL.md +0 -616
- package/skills/cometchat-angular-features/SKILL.md +0 -329
- package/skills/cometchat-angular-patterns/SKILL.md +0 -256
- package/skills/cometchat-angular-placement/SKILL.md +0 -314
- package/skills/cometchat-angular-production/SKILL.md +0 -564
- package/skills/cometchat-angular-push/SKILL.md +0 -389
- package/skills/cometchat-angular-testing/SKILL.md +0 -605
- package/skills/cometchat-angular-theming/SKILL.md +0 -290
- package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
- package/skills/cometchat-astro-patterns/SKILL.md +0 -708
- package/skills/cometchat-calls/SKILL.md +0 -364
- package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
- package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
- package/skills/cometchat-calls/references/use-case-support.md +0 -189
- package/skills/cometchat-calls/references/use-case-team.md +0 -180
- package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
- package/skills/cometchat-components/SKILL.md +0 -1142
- package/skills/cometchat-core/SKILL.md +0 -1048
- package/skills/cometchat-customization/SKILL.md +0 -580
- package/skills/cometchat-customization/references/component-catalog.md +0 -236
- package/skills/cometchat-features/SKILL.md +0 -861
- package/skills/cometchat-flutter-v5/SKILL.md +0 -173
- package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
- package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
- package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
- package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
- package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
- package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
- package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
- package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
- package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
- package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
- package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
- package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
- package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
- package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
- package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
- package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
- package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
- package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
- package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
- package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
- package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
- package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
- package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
- package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
- package/skills/cometchat-flutter-v6/SKILL.md +0 -446
- package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
- package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
- package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
- package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
- package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
- package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
- package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
- package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
- package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
- package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
- package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
- package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
- package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
- package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
- package/skills/cometchat-ios/SKILL.md +0 -325
- package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
- package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
- package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
- package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
- package/skills/cometchat-ios-calls/references/call-session.md +0 -218
- package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
- package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
- package/skills/cometchat-ios-calls/references/device-management.md +0 -171
- package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
- package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
- package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
- package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
- package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
- package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
- package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
- package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
- package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
- package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
- package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
- package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
- package/skills/cometchat-ios-theming/SKILL.md +0 -667
- package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
- package/skills/cometchat-native-calls/SKILL.md +0 -671
- package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
- package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
- package/skills/cometchat-native-calls/references/call-session.md +0 -182
- package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
- package/skills/cometchat-native-calls/references/device-management.md +0 -158
- package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
- package/skills/cometchat-native-calls/references/group-calls.md +0 -296
- package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
- package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
- package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
- package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
- package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
- package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
- package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
- package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
- package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
- package/skills/cometchat-native-calls/references/share-invite.md +0 -146
- package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
- package/skills/cometchat-native-components/SKILL.md +0 -628
- package/skills/cometchat-native-core/SKILL.md +0 -679
- package/skills/cometchat-native-customization/SKILL.md +0 -716
- package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
- package/skills/cometchat-native-features/SKILL.md +0 -638
- package/skills/cometchat-native-placement/SKILL.md +0 -509
- package/skills/cometchat-native-production/SKILL.md +0 -700
- package/skills/cometchat-native-push/SKILL.md +0 -594
- package/skills/cometchat-native-testing/SKILL.md +0 -582
- package/skills/cometchat-native-theming/SKILL.md +0 -681
- package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
- package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
- package/skills/cometchat-placement/SKILL.md +0 -1360
- package/skills/cometchat-production/SKILL.md +0 -1027
- package/skills/cometchat-react-calls/SKILL.md +0 -752
- package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
- package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
- package/skills/cometchat-react-calls/references/call-session.md +0 -235
- package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
- package/skills/cometchat-react-calls/references/device-management.md +0 -210
- package/skills/cometchat-react-calls/references/group-calls.md +0 -257
- package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
- package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
- package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
- package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
- package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
- package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
- package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
- package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
- package/skills/cometchat-react-calls/references/share-invite.md +0 -175
- package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
- package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
- package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
- package/skills/cometchat-react-patterns/SKILL.md +0 -628
- package/skills/cometchat-react-push/SKILL.md +0 -634
- package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
- package/skills/cometchat-react-testing/SKILL.md +0 -413
- package/skills/cometchat-theming/SKILL.md +0 -498
- package/skills/cometchat-troubleshooting/SKILL.md +0 -294
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# setup-credentials — detect, credentials, authorize (Android v6)
|
|
2
|
+
|
|
3
|
+
> Ground truth: `ui-kit/android/getting-started-kotlin.md` + `getting-started-jetpack.md` + installed `chatuikit-core-android` 6.0.5 `CometChatUIKit.initFromSettings` + catalog `android-v6.json`, verified 2026-08-20.
|
|
4
|
+
|
|
5
|
+
## 1. Detect project (gradle / cohort)
|
|
6
|
+
- Confirm it's an Android project: `settings.gradle` or `settings.gradle.kts` exists (plus an app module with `build.gradle(.kts)`).
|
|
7
|
+
- **Cohort** (decides which ONE kit artifact to install — never both):
|
|
8
|
+
- **Compose** → the app module's `build.gradle(.kts)` mentions `androidx.compose` or `buildFeatures { compose = true }` (or the `kotlin.compose` plugin) → `com.cometchat:chatuikit-compose-android:6.0.5`
|
|
9
|
+
- **Views** → otherwise (XML layouts / `viewBinding`) → `com.cometchat:chatuikit-kotlin-android:6.0.5`
|
|
10
|
+
- Get the cohort from `npx @cometchat/skills detect --json` (`android_variant`, per RULES.md) or by
|
|
11
|
+
reading the gradle files yourself. Confirm against the gradle file if ambiguous (a hybrid app hosting Compose in Views counts as Compose only if chat screens will be composables; ASK if unclear).
|
|
12
|
+
- Kit prerequisites (both cohorts): API 28+ target samples; `jvmTarget "11"`; Views additionally `viewBinding = true`, Compose `compose = true`.
|
|
13
|
+
|
|
14
|
+
## 2. Config reuse — don't re-ask
|
|
15
|
+
A prior `.cometchat/config.json` (written by the CometChat CLI), an existing `app/src/main/assets/cometchat-settings.json`, or `COMETCHAT_*` entries in `local.properties` → reuse them, skip re-setup, don't re-provision or re-ask.
|
|
16
|
+
|
|
17
|
+
## 3. version_conflict — STOP gate
|
|
18
|
+
If ANY module declares a non-v6 CometChat UI Kit — `com.cometchat:chat-uikit-android` at 5.x/4.x (the old artifact name), or a mixed 5.x `chatuikit-*` — STOP. Surface it, reconcile (upgrade to v6 via `upgrading-from-v5`, or load matching-version skills), then continue. Never mix majors, and never install both `chatuikit-kotlin-android` and `chatuikit-compose-android` in one app (duplicate classes + doubled resources).
|
|
19
|
+
|
|
20
|
+
## 4. Env — the PRIMARY credential file is `assets/cometchat-settings.json` (read by `initFromSettings`)
|
|
21
|
+
The skill writes the app's credentials into a **gitignored** `app/src/main/assets/cometchat-settings.json` — the file `CometChatUIKit.initFromSettings(context, callback)` reads (it also persists `integrationSource="ai-agent"` for telemetry; `lifecycle.md`):
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"appId": "your_app_id",
|
|
25
|
+
"region": "us",
|
|
26
|
+
"credentials": { "authKey": "your_auth_key" },
|
|
27
|
+
"uiKit": { "subscribePresenceForAllUsers": true, "enableCalling": false }
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
- `appId` + `region` are REQUIRED (`ERR_SETTINGS_INVALID` otherwise); a missing file fails init with `ERR_SETTINGS_FILE_NOT_FOUND`.
|
|
31
|
+
- `credentials.authKey` is **dev only** — for prod builds OMIT it (login uses a server-minted auth token; `appId`/`region` are not secrets).
|
|
32
|
+
- `uiKit.enableCalling: true` auto-inits the Calls SDK (see `cometchat-android-v6-calls`); default false.
|
|
33
|
+
- **Gitignore it** — append `app/src/main/assets/cometchat-settings.json` to `.gitignore` (it carries the dev Auth Key) and never echo the key back to the user.
|
|
34
|
+
|
|
35
|
+
**Build-time extras only — `local.properties` → `BuildConfig`.** For non-credential values the app CODE reads at build time (e.g. a default demo UID), use the standard Android pattern (this is NOT the init credential path):
|
|
36
|
+
```properties
|
|
37
|
+
# local.properties (gitignored by Android Studio — verify)
|
|
38
|
+
COMETCHAT_DEMO_UID=cometchat-uid-1
|
|
39
|
+
```
|
|
40
|
+
```kotlin
|
|
41
|
+
// app module build.gradle.kts
|
|
42
|
+
import java.util.Properties
|
|
43
|
+
val localProps = Properties().apply {
|
|
44
|
+
val f = rootProject.file("local.properties")
|
|
45
|
+
if (f.exists()) f.inputStream().use { load(it) }
|
|
46
|
+
}
|
|
47
|
+
android {
|
|
48
|
+
buildFeatures { buildConfig = true } // required for buildConfigField to emit
|
|
49
|
+
defaultConfig {
|
|
50
|
+
buildConfigField("String", "COMETCHAT_DEMO_UID",
|
|
51
|
+
"\"${localProps.getProperty("COMETCHAT_DEMO_UID", "")}\"")
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
Groovy variant, briefly: `def p = new Properties(); rootProject.file('local.properties').withInputStream { p.load(it) }` then `buildConfigField 'String', 'COMETCHAT_DEMO_UID', "\"${p.getProperty('COMETCHAT_DEMO_UID', '')}\""` inside `defaultConfig` (+ `buildFeatures { buildConfig true }`). Code reads `BuildConfig.COMETCHAT_DEMO_UID` — never a hardcoded literal.
|
|
56
|
+
|
|
57
|
+
## 5. Credentials — fetch from the dashboard (offer it), or paste manually
|
|
58
|
+
> **The CLI is a DASHBOARD/API client only, loaded ON DEMAND.** It does `auth` (dashboard login), `provision` (fetch App ID/Region/Auth Key), and `config` (local cred state). It knows NOTHING about Gradle/Android and does NOT write the settings JSON or any gradle file — **the SKILL owns detection (§1) and env-writing (§4).**
|
|
59
|
+
|
|
60
|
+
> **OFFER the dashboard fetch; don't default to manual paste.** When credentials are missing, present BOTH paths and default to the fetch: *"I can fetch your App ID / Region / Auth Key by logging into your CometChat dashboard (I'll load the CometChat CLI to do it), or you can paste them manually — which do you prefer?"* Never silently skip to "paste them yourself," and never end the build with an "add credentials manually" TODO.
|
|
61
|
+
|
|
62
|
+
**The CLI:** `<cli>` = `npx @cometchat/skills-cli@3` (public npm — no auth needed; `@3` pins the CLI major that matches the v5 skills).
|
|
63
|
+
|
|
64
|
+
**Fetch path (user opted in).** Let each command block — don't background or race them.
|
|
65
|
+
1. `<cli> auth status --json` → `logged-in` | `logged-out`.
|
|
66
|
+
2. If logged-out: `<cli> auth login` — opens the dashboard (device-auth), polls, stores the bearer in the OS keychain. Surface errors verbatim (`ACCESS_DENIED`/`EXPIRED`/`TIMEOUT`/`ABORTED`) and stop.
|
|
67
|
+
3. Pick the app — REUSE first, ASK with CURATED options, never auto-create: `<cli> provision list --json`, then present at most 4 selectable options — the top 3 most relevant apps (name · region · App ID) + "Show all N apps"; free-text = "I'll paste an App ID manually". NEVER dump all N apps; NEVER create an app unasked (zero apps → ask before creating).
|
|
68
|
+
4. `<cli> provision use --app-id "<id>" --json` → returns `{ appId, region, authKey }` and writes a framework-neutral `.cometchat/config.json`. It does NOT write the settings JSON — that's §4, the skill's job. Treat the Auth Key as a secret.
|
|
69
|
+
|
|
70
|
+
**Manual path** (user prefers, or the CLI can't run): Dashboard → Your App → Credentials → App ID, Region (`us`/`eu`/`in`), Auth Key (**dev only**). If neither path yields them, ASK and WAIT — never proceed with placeholders.
|
|
71
|
+
|
|
72
|
+
**Then the SKILL writes `assets/cometchat-settings.json` (§4)** from the config.json / returned creds and gitignores it. The CLI stops at "here are your credentials." Dashboard-gated features (`<cli> features list` / `features enable <id>`) work the same way — the CLI flips the dashboard toggle; you still wire the client component.
|
|
73
|
+
|
|
74
|
+
## 6. Authorize / verify
|
|
75
|
+
Credentials are valid when `CometChatUIKit.initFromSettings(...)` hits `onSuccess` and `CometChatUIKit.login(uid, ...)` succeeds for a UID that exists (§7). `ERR_SETTINGS_FILE_NOT_FOUND` → the assets JSON is missing; `ERR_SETTINGS_INVALID` → `appId`/`region` missing in it; other auth errors → most commonly a **Region mismatch**. Do not render chat UI until login resolves (`lifecycle.md`).
|
|
76
|
+
|
|
77
|
+
## 7. Which user to log in as (the login UID) — do NOT invent one
|
|
78
|
+
`login(uid, callback)` authenticates a user that **must already exist** in your CometChat app; it does **not** create one. Logging in a missing UID fails (`ERR_UID_NOT_FOUND`) and the screen stays blank.
|
|
79
|
+
- **Never suggest a legacy/guessed sample UID** (`superhero1`, `cc-user-*`, etc. are NOT seeded in modern apps). The ONLY tentative suggestion is `cometchat-uid-1..5`, labelled *"if this is a freshly-created app"* — fresh apps are pre-seeded with `cometchat-uid-1`…`cometchat-uid-5` (the docs samples log in as `cometchat-uid-1`).
|
|
80
|
+
- **Use a real UID:** Dashboard → your app → **Users** tab lists every UID. ASK the user; prefer their answer over any suggestion.
|
|
81
|
+
- **Create one (dev):** Dashboard → Users → Add User, or `CometChatUIKit.createUser(user, callback)` (uses the init Auth Key; dev only) — fetch exact shapes from docs if you need programmatic creation.
|
|
82
|
+
- **Production:** never the Auth Key, never a hardcoded UID. Per real end-user, create a matching CometChat user server-side (REST API + API key), mint a per-user **auth token** from your backend, and log in with `CometChatUIKit.loginWithAuthToken(authToken, callback)` (`lifecycle.md`).
|
|
83
|
+
|
|
84
|
+
## §1a — Cohort selection (the first decision, and the least reversible)
|
|
85
|
+
|
|
86
|
+
Score STRUCTURAL signals, not a loose `/compose/` text match (it matches "composer", the kit's
|
|
87
|
+
own artifact name), and read BOTH
|
|
88
|
+
Groovy and Kotlin DSL (`build.gradle` **and** `build.gradle.kts` — an earlier version read only the
|
|
89
|
+
Groovy names and returned `framework: null` for every Kotlin-DSL project).
|
|
90
|
+
|
|
91
|
+
| `android_variant` | Signals that produced it | Action |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| `compose` | `buildFeatures { compose = true }`, `org.jetbrains.kotlin.plugin.compose`, `androidx.compose.*`, `compose-bom` — and no Views signal | Use **Compose** (`…-compose-*`). Do not ask; do not offer Views. Emitting XML into a Compose app is a defect. |
|
|
94
|
+
| `views` | `viewBinding`/`dataBinding` enabled, or `app/src/main/res/layout/` exists — and no Compose signal | Use **Views** (`…-kotlin-*`). |
|
|
95
|
+
| `mixed` | both sets present — typically an app mid-migration | **ASK and WAIT.** Say what you found: "your app has both Compose and XML screens — the chat screens can be either." Never pick silently. |
|
|
96
|
+
| `unknown` | neither (new/empty project) | **ASK and WAIT**, with a recommendation: Compose for greenfield, Views if the team's existing screens are XML. |
|
|
97
|
+
|
|
98
|
+
`android_cohort_signals: { composeHits, viewsHits }` is returned so you can SHOW the evidence
|
|
99
|
+
("I detected Compose: compose plugin + compose-bom, no XML layouts").
|
|
100
|
+
|
|
101
|
+
**Existing CometChat install.** When `existing_cometchat` is true, detect also returns
|
|
102
|
+
`installed_uikit`, `android_uikit_major` and `version_conflict`. A v4/v5 `chat-uikit-android` is a
|
|
103
|
+
**STOP**: adding v6 beside it produces duplicate-class build failures. Tell the user which version
|
|
104
|
+
they are on and offer the upgrade (`cometchat-android-v6-migration`) BEFORE any new feature work.
|
|
105
|
+
Only when the tree is clean (or already v6) do you proceed to credentials.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# troubleshooting — CometChat Android v6: symptom → cause → fix
|
|
2
|
+
|
|
3
|
+
> Ground truth: `ui-kit/android/troubleshooting.md` (docs rows) + `getting-started-*` Warnings + installed 6.0.5 `CometChatUIKit.kt` error codes, verified 2026-08-20.
|
|
4
|
+
|
|
5
|
+
The fast symptom-table for a broken integration. Each row is a REAL failure mode — fix in the app; don't fetch docs for these. Deeper detail is cross-linked to the sibling reference. For anything not here → the docs page `{DOCS_BASE}/ui-kit/android/troubleshooting.md` (`docs-map.md`).
|
|
6
|
+
|
|
7
|
+
## The table
|
|
8
|
+
| Symptom (what the user sees) | Root cause | Fix |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| **Build fails: `Could not find com.cometchat:chatuikit-...`** | The CometChat Maven repository is missing — the kit isn't on mavenCentral | Add `maven("https://dl.cloudsmith.io/public/cometchat/cometchat/maven/")` to `settings.gradle(.kts)` `dependencyResolutionManagement.repositories`, then re-sync. |
|
|
11
|
+
| **`Duplicate class android.support.v4.*` — on a CLEAN, single-cohort app** | NOT a version conflict. `com.cometchat:chat-sdk-android` still pulls a pre-AndroidX transitive: `android.arch.lifecycle:extensions:1.1.1` → `com.android.support:support-compat:26.1.0`, which collides with `androidx.core:core`. | Set BOTH in `gradle.properties`: `android.useAndroidX=true` and `android.enableJetifier=true`. Verified on a clean app 2026-08-24 (removing the line reproduces the failure). The review harness carries the same pair. |
|
|
12
|
+
| **`Duplicate class org.jetbrains.annotations.*` at dexing** | `io.noties:prism4j` pulls `annotations-java5:17`, colliding with `annotations:23` from AndroidX/Kotlin | `configurations.all { exclude(group = "org.jetbrains", module = "annotations-java5") }` — see core's install block. |
|
|
13
|
+
| **`Dependency 'androidx.core:core:1.18.0' requires Android Gradle plugin 8.9.1 or higher`** | AGP floor understated as 8.9 | AGP **8.9.1**. |
|
|
14
|
+
| **`kotlin-stdlib … metadata is 2.2.0, expected version is 2.0.0` / `Internal compiler error`** | Kotlin floor understated as 2.0 | Kotlin **2.1+** (2.0.21 fails; the review harness builds on 2.1.20). |
|
|
15
|
+
| **Duplicate class / resource merge errors; or two kit majors in the tree** | version_conflict — both cohort artifacts installed, or a v5 `chat-uikit-android` alongside v6 `chatuikit-*` | STOP and reconcile: keep ONE cohort (`chatuikit-kotlin-android` OR `chatuikit-compose-android`) and ONE major; v5→v6 goes through `upgrading-from-v5`. See `setup-credentials.md` §3. |
|
|
16
|
+
| **Init `onError` / `init()` fails silently** | Wrong App ID or Region (or empty values written to the settings JSON) | Re-check Dashboard → Credentials; Region must match (`us`/`eu`/`in`) — an auth error on init is most commonly a Region mismatch. See `setup-credentials.md` §6. |
|
|
17
|
+
| **Init `onError: ERR_SETTINGS_FILE_NOT_FOUND`** | `app/src/main/assets/cometchat-settings.json` is missing (it's gitignored — fresh clones don't have it) | Re-create the settings JSON from the dashboard creds (`setup-credentials.md` §4/§5). |
|
|
18
|
+
| **Init `onError: ERR_SETTINGS_INVALID`** | `appId` or `region` missing/empty in `cometchat-settings.json` | Fill both required root keys; they are not secrets and must always be present. |
|
|
19
|
+
| **Login `onError: ERR_UID_NOT_FOUND` / "UID not found"** | The UID doesn't exist in this CometChat app (hardcoded/guessed sample) | Use a UID that EXISTS: Dashboard → Users (fresh apps seed `cometchat-uid-1…5`), create one there, or `CometChatUIKit.createUser` (dev). See `setup-credentials.md` §7. |
|
|
20
|
+
| **Login does nothing — no success, no error** | `login()` called before `init()` resolved — the docs Warning: it "will fail silently" | Call `login` only inside init's `onSuccess`; the init→login→render order is invariant. See `lifecycle.md`. |
|
|
21
|
+
| **Blank / stuck splash or gate screen** | The gate never unlocks: an `onError` was swallowed (wrong Region, missing settings file, bad UID), so neither navigation nor an error message fires | Surface every `onError` (`e.message`) on the gate UI; check logcat for the CometChatException. See `lifecycle.md` "Surfacing CometChatException". |
|
|
22
|
+
| **Blank screen after login / component stuck on loading** | A `CometChat*` component rendered before init+login resolved, or (message screen) no `User`/`Group` was set on it | Gate rendering on both callbacks; pass the selected `conversationWith` entity to header/list/composer — the list shows only its loading indicator without one (docs Warning). See `component-props.md`. |
|
|
23
|
+
| **Conversations list renders but is EMPTY** | Fresh app with no conversations yet — or credentials point at a different app than expected | Seed data: log in as another seeded user (`cometchat-uid-2`) on a second device/emulator and send a message; or verify the App ID matches the dashboard app you're looking at. An `onEmpty` fire with valid creds is data, not a bug. |
|
|
24
|
+
| **Composer hidden under the keyboard** | Window doesn't resize for the IME | Views: `android:windowSoftInputMode="adjustResize"` on the chat Activity; Compose: `imePadding()` on the message column. See `layout.md` invariant 3. |
|
|
25
|
+
| **Header/composer under the status/nav bars** | `enableEdgeToEdge()` without inset handling | `Scaffold(contentWindowInsets = WindowInsets.statusBars)` + `navigationBarsPadding()` (Compose) / inset padding on the root (Views). See `layout.md` invariant 2. |
|
|
26
|
+
| **Chat surface is a ~0dp sliver or grows into place** | `wrap_content`/unbounded height on a list-shaped component | `match_parent`/`fillMaxSize()`; message list `0dp`+`layout_weight="1"` / `weight(1f)`. See `layout.md` invariants 1/5. |
|
|
27
|
+
| **Messages don't arrive in real time** (only on refresh/reopen) | Your own SDK listener never registered or removed too early (drop-ins manage their own) — or no network connection so the socket is down | Register `CometChat.addMessageListener(listenerId, ...)` in the screen's active lifecycle and remove it in the matching teardown — not before; verify connectivity (the SDK reconnects automatically). See `anti-patterns.md` #6. |
|
|
28
|
+
| **Tapping "Reply in thread" does nothing** | `onThreadRepliesClick` not wired (navigation is the host's job) | Wire it to a thread screen (`CometChatThreadHeader` + parent-scoped list + composer via `parentMessageId`), or hide the option. See `component-props.md`. |
|
|
29
|
+
| **Network/"cleartext" errors; init callback never fires** | `android.permission.INTERNET` missing from the manifest (or network blocked) | Add `<uses-permission android:name="android.permission.INTERNET" />` (+ `ACCESS_NETWORK_STATE`) to `AndroidManifest.xml` — the docs guide requires both; then re-check Region. |
|
|
30
|
+
| **`setOnItemClick` not firing** | Selection mode set to `MULTIPLE` consumes item clicks | Set selection mode `NONE` for standard click behavior (docs troubleshooting row). |
|
|
31
|
+
| **Release build crashes / kit classes missing** | R8/ProGuard stripped CometChat classes | Add `-keep class com.cometchat.** { *; }` to `proguard-rules.pro` (docs troubleshooting row). |
|
|
32
|
+
|
|
33
|
+
## When it's NOT in the table
|
|
34
|
+
- **Any param/signature question** → fetch the component's `.md` twin via `docs-map.md`; never answer from memory.
|
|
35
|
+
- **A feature renders empty** (stickers/polls/AI) → the extension likely isn't enabled in the Dashboard (see `cometchat-android-v6-features`).
|
|
36
|
+
- **Still stuck** → logcat first: a `CometChatException` code beats guessing (4xx = auth/plan/config, not a code bug); confirm the settings JSON values, the cohort artifact, and that the docs' `minSdk`/`jvmTarget` prerequisites hold; then the docs troubleshooting page for the long tail (theming, calling, localization, sound).
|
|
@@ -1,215 +1,77 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cometchat-android-v6-events
|
|
3
|
-
description: "CometChat Android
|
|
3
|
+
description: "React to what the CometChat Android v6 UI Kit is doing — the CometChatEvents SharedFlow bus (message, call, conversation, group, user and UI events), how to collect it in Compose vs XML Views with correct lifecycle scoping, and when to use UI-Kit events versus Chat SDK listeners. Triggers: 'listen for message sent android cometchat', 'cometchat events android', 'know when a call is accepted', 'react when a group is created', 'sdk listener vs uikit event'."
|
|
4
4
|
license: "MIT"
|
|
5
|
-
compatibility: "Android
|
|
5
|
+
compatibility: "Android minSdk >=28; compileSdk >=36; Kotlin >=2.1; AGP >=8.9.1; JVM target 11; com.cometchat:chatuikit-kotlin-android ^6 OR com.cometchat:chatuikit-compose-android ^6 (6.0.x, verified 6.0.5); com.cometchat:chat-sdk-android ^5"
|
|
6
6
|
metadata:
|
|
7
7
|
author: "CometChat"
|
|
8
|
-
version: "
|
|
9
|
-
tags: "cometchat
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
tags: "cometchat android events v6 sharedflow lifecycle compose views"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
> **Ground truth:** `
|
|
12
|
+
> **Ground truth:** catalog `android-v6.json` + the live pages `events` (the API reference) and `customization-events`. `CometChatEvents` lives in `chatuikit-core-android` (`com.cometchat.uikit.core.events.CometChatEvents`). Verify symbols against the catalog; fetch the exact sealed-class members from the docs page — the event lists below are a MAP, the page is the manual.
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
Subscribe to and emit CometChat events using the v6 Kotlin SharedFlow-based event bus. This replaces the v5 Java listener interface pattern with a reactive, type-safe system built on `kotlinx.coroutines.flow.SharedFlow`.
|
|
14
|
+
## Companion skills (read first)
|
|
15
|
+
- `cometchat-android-v6-core` — install, credentials, `initFromSettings → login → render`, the fetch map. Assumed here, never repeated.
|
|
16
|
+
- `cometchat-android-v6-{kotlin,compose}-customization` — click/selection callbacks on a single component (usually the simpler answer than the global bus).
|
|
19
17
|
|
|
20
18
|
## Use this skill when
|
|
19
|
+
"tell me when a message is sent/edited/deleted", "run code when a call is accepted", "update my own badge when a conversation changes", "hook into group/member changes", "what's the difference between an SDK listener and a UI Kit event?".
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
- Listening for user or group membership changes
|
|
25
|
-
- Listening for conversation updates
|
|
26
|
-
- Listening for UI events (custom UI position events)
|
|
27
|
-
- Emitting custom events to trigger UI updates
|
|
28
|
-
|
|
29
|
-
## Do not use this skill when
|
|
30
|
-
|
|
31
|
-
- Setting up the SDK (use `cometchat-android-v6-core`)
|
|
32
|
-
- Working with CometChat SDK-level listeners (`CometChat.addMessageListener`) — those are separate from UIKit events
|
|
33
|
-
|
|
34
|
-
## 1. Event Bus Architecture
|
|
35
|
-
|
|
36
|
-
`CometChatEvents` is a singleton object in `com.cometchat.uikit.core.events` that manages 6 event flows:
|
|
37
|
-
|
|
38
|
-
```kotlin
|
|
39
|
-
import com.cometchat.uikit.core.events.CometChatEvents
|
|
40
|
-
|
|
41
|
-
// 6 event flows — all are SharedFlow<T>
|
|
42
|
-
CometChatEvents.messageEvents // SharedFlow<CometChatMessageEvent>
|
|
43
|
-
CometChatEvents.callEvents // SharedFlow<CometChatCallEvent>
|
|
44
|
-
CometChatEvents.userEvents // SharedFlow<CometChatUserEvent>
|
|
45
|
-
CometChatEvents.groupEvents // SharedFlow<CometChatGroupEvent>
|
|
46
|
-
CometChatEvents.conversationEvents // SharedFlow<CometChatConversationEvent>
|
|
47
|
-
CometChatEvents.uiEvents // SharedFlow<CometChatUIEvent>
|
|
48
|
-
```
|
|
21
|
+
## Prerequisites & install
|
|
22
|
+
Same kit + init as `core`. `CometChatEvents` ships in `chatuikit-core-android` (already a transitive dependency of both cohort artifacts) — nothing to add.
|
|
49
23
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
- `BufferOverflow.DROP_OLDEST` — drops oldest events when buffer is full
|
|
53
|
-
- Buffer capacities: messages=64, groups=32, users/conversations/ui=16, calls=8
|
|
24
|
+
## The event bus (BAKED map — fetch the page for each sealed class's members)
|
|
25
|
+
All events come from the **`CometChatEvents` singleton**; each domain exposes a **`SharedFlow`** of a sealed class:
|
|
54
26
|
|
|
55
|
-
|
|
27
|
+
| Flow | Sealed class | What it covers |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| `CometChatEvents.messageEvents` | `CometChatMessageEvent` | sent · edited · deleted · read · live reaction · interactive/card/form/scheduler received |
|
|
30
|
+
| `CometChatEvents.callEvents` | `CometChatCallEvent` | call initiated · accepted · rejected · ended |
|
|
31
|
+
| `CometChatEvents.conversationEvents` | `CometChatConversationEvent` | conversation deleted · updated |
|
|
32
|
+
| `CometChatEvents.groupEvents` | `CometChatGroupEvent` | group created/deleted · member changes |
|
|
33
|
+
| `CometChatEvents.userEvents` | `CometChatUserEvent` | user blocked · unblocked |
|
|
34
|
+
| `CometChatEvents.uiEvents` | `CometChatUIEvent` | panel visibility · active-chat changes |
|
|
56
35
|
|
|
57
|
-
|
|
36
|
+
Member shapes are **prefixed too** and the message ones repeat the domain: `CometChatMessageEvent.MessageSent(message, status)` (status `IN_PROGRESS`/`SUCCESS`/`ERROR`) · `MessageEdited` · `MessageDeleted` · `MessageRead` · `TextMessageReceived` · `TypingStarted` · `ReactionAdded`. There is no `.Sent` — it is `.MessageSent`. Import the sealed class from `com.cometchat.uikit.core.events`. Full list: fetch `/ui-kit/android/customization-events.md` (NOT `events.md`, which still teaches the old un-prefixed shape).
|
|
58
37
|
|
|
38
|
+
## Subscribing per cohort (lifecycle is the whole point)
|
|
39
|
+
**Kotlin XML Views** — collect in `lifecycleScope`; the coroutine is cancelled when the lifecycle owner is destroyed:
|
|
59
40
|
```kotlin
|
|
60
|
-
import
|
|
41
|
+
import androidx.lifecycle.lifecycleScope // in an Activity/Fragment
|
|
61
42
|
import kotlinx.coroutines.launch
|
|
43
|
+
import com.cometchat.uikit.core.events.CometChatEvents
|
|
44
|
+
import com.cometchat.uikit.core.events.CometChatMessageEvent
|
|
62
45
|
|
|
63
|
-
|
|
64
|
-
viewModelScope.launch {
|
|
46
|
+
lifecycleScope.launch {
|
|
65
47
|
CometChatEvents.messageEvents.collect { event ->
|
|
66
48
|
when (event) {
|
|
67
|
-
is CometChatMessageEvent.MessageSent -> {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
is CometChatMessageEvent.MessageEdited -> {
|
|
72
|
-
val editedMessage = event.message
|
|
73
|
-
}
|
|
74
|
-
is CometChatMessageEvent.MessageDeleted -> {
|
|
75
|
-
val deletedMessage = event.message
|
|
76
|
-
}
|
|
77
|
-
// handle other message events...
|
|
78
|
-
else -> {}
|
|
49
|
+
is CometChatMessageEvent.MessageSent -> { /* event.message, event.status */ }
|
|
50
|
+
is CometChatMessageEvent.MessageDeleted -> { /* event.message */ }
|
|
51
|
+
else -> Unit
|
|
79
52
|
}
|
|
80
53
|
}
|
|
81
54
|
}
|
|
82
55
|
```
|
|
83
|
-
|
|
84
|
-
### 2.2 In Jetpack Compose
|
|
85
|
-
|
|
56
|
+
**Jetpack Compose** — collect in `LaunchedEffect`; cancelled when the composable leaves composition:
|
|
86
57
|
```kotlin
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
@Composable
|
|
91
|
-
fun ChatScreen() {
|
|
92
|
-
LaunchedEffect(Unit) {
|
|
93
|
-
CometChatEvents.callEvents.collect { event ->
|
|
94
|
-
when (event) {
|
|
95
|
-
is CometChatCallEvent.CallAccepted -> {
|
|
96
|
-
// Navigate to ongoing call screen
|
|
97
|
-
}
|
|
98
|
-
is CometChatCallEvent.CallRejected -> {
|
|
99
|
-
// Dismiss call UI
|
|
100
|
-
}
|
|
101
|
-
else -> {}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### 2.3 In an Activity or Application class
|
|
109
|
-
|
|
110
|
-
```kotlin
|
|
111
|
-
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Main)
|
|
112
|
-
|
|
113
|
-
override fun onCreate(savedInstanceState: Bundle?) {
|
|
114
|
-
super.onCreate(savedInstanceState)
|
|
115
|
-
|
|
116
|
-
scope.launch {
|
|
117
|
-
CometChatEvents.callEvents.collect { event ->
|
|
118
|
-
when (event) {
|
|
119
|
-
is CometChatCallEvent.CallAccepted -> { /* ... */ }
|
|
120
|
-
is CometChatCallEvent.CallRejected -> { /* ... */ }
|
|
121
|
-
else -> {}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
override fun onDestroy() {
|
|
128
|
-
super.onDestroy()
|
|
129
|
-
scope.cancel() // Always cancel to avoid leaks
|
|
58
|
+
LaunchedEffect(Unit) {
|
|
59
|
+
CometChatEvents.messageEvents.collect { event -> /* when (event) { … } */ }
|
|
130
60
|
}
|
|
131
61
|
```
|
|
62
|
+
> **No manual removal needed.** Unlike the old static-listener pattern, `SharedFlow` collection is scoped — do NOT invent an `addListener`/`removeListener` pair for `CometChatEvents`. Just don't collect outside a lifecycle-aware scope (a bare `GlobalScope.launch` IS a leak).
|
|
132
63
|
|
|
133
|
-
##
|
|
134
|
-
|
|
135
|
-
```kotlin
|
|
136
|
-
// Emit a message event
|
|
137
|
-
CometChatEvents.emitMessageEvent(
|
|
138
|
-
CometChatMessageEvent.MessageSent(message, MessageStatus.SUCCESS)
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
// Emit a call event
|
|
142
|
-
CometChatEvents.emitCallEvent(
|
|
143
|
-
CometChatCallEvent.CallRejected(call)
|
|
144
|
-
)
|
|
145
|
-
|
|
146
|
-
// Emit a user event
|
|
147
|
-
CometChatEvents.emitUserEvent(event)
|
|
148
|
-
|
|
149
|
-
// Emit a group event
|
|
150
|
-
CometChatEvents.emitGroupEvent(event)
|
|
151
|
-
|
|
152
|
-
// Emit a conversation event
|
|
153
|
-
CometChatEvents.emitConversationEvent(event)
|
|
154
|
-
|
|
155
|
-
// Emit a UI event
|
|
156
|
-
CometChatEvents.emitUIEvent(event)
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
All emit functions are thread-safe — they launch on `Dispatchers.Default` internally.
|
|
160
|
-
|
|
161
|
-
## 4. Event Types Reference
|
|
162
|
-
|
|
163
|
-
### 4.1 CometChatMessageEvent (sealed class)
|
|
164
|
-
|
|
165
|
-
| Event | Properties | When emitted |
|
|
64
|
+
## UI-Kit events vs Chat SDK listeners (pick the right bus)
|
|
65
|
+
| | **UI-Kit events** (`CometChatEvents.*`) | **Chat SDK listeners** (`CometChat.add*Listener`) |
|
|
166
66
|
|---|---|---|
|
|
167
|
-
|
|
|
168
|
-
|
|
|
169
|
-
| `
|
|
170
|
-
|
|
171
|
-
`
|
|
172
|
-
|
|
173
|
-
### 4.2 CometChatCallEvent (sealed class)
|
|
174
|
-
|
|
175
|
-
| Event | Properties | When emitted |
|
|
176
|
-
|---|---|---|
|
|
177
|
-
| `CallAccepted` | `call: Call` | Incoming call accepted |
|
|
178
|
-
| `CallRejected` | `call: Call` | Call rejected |
|
|
179
|
-
| `CallEnded` | `call: Call` | Call ended |
|
|
180
|
-
| `OutgoingCall` | `call: Call` | Outgoing call initiated |
|
|
181
|
-
|
|
182
|
-
### 4.3 CometChatUserEvent (sealed class)
|
|
183
|
-
|
|
184
|
-
User-related events (block, unblock, etc.)
|
|
185
|
-
|
|
186
|
-
### 4.4 CometChatGroupEvent (sealed class)
|
|
187
|
-
|
|
188
|
-
Group membership events (member added, removed, scope changed, etc.)
|
|
189
|
-
|
|
190
|
-
### 4.5 CometChatConversationEvent (sealed class)
|
|
191
|
-
|
|
192
|
-
Conversation-level events (conversation deleted, etc.)
|
|
193
|
-
|
|
194
|
-
### 4.6 CometChatUIEvent (sealed class)
|
|
195
|
-
|
|
196
|
-
UI-level events including `CustomUIPosition` for custom view positioning.
|
|
197
|
-
|
|
198
|
-
## 5. Migration from v5
|
|
199
|
-
|
|
200
|
-
| v5 Pattern | v6 Pattern |
|
|
201
|
-
|---|---|
|
|
202
|
-
| `CometChatMessageEvents.addListener(id, listener)` | `CometChatEvents.messageEvents.collect { }` |
|
|
203
|
-
| `CometChatCallEvents.addListener(id, listener)` | `CometChatEvents.callEvents.collect { }` |
|
|
204
|
-
| `listener.onTextMessageSent(message)` | `is CometChatMessageEvent.MessageSent` |
|
|
205
|
-
| `removeListener(id)` | Cancel the coroutine scope |
|
|
206
|
-
| Java interface callbacks | Kotlin sealed class + when expression |
|
|
67
|
+
| Source | UI Kit components (what the UI just did) | the CometChat server (what arrived) |
|
|
68
|
+
| Direction | component → component | server → client |
|
|
69
|
+
| Registration | `.collect {}` in a lifecycle scope | `add*Listener(ID, …)` + **`remove*Listener(ID)` on teardown** |
|
|
70
|
+
| Use for | "the user sent/edited a message", "a call was accepted", panel/active-chat changes | incoming messages, presence, typing, connection status, incoming calls |
|
|
71
|
+
**Both are needed for a full app.** If you're reacting to something the server pushed while your UI didn't do it, that's an SDK listener (→ `core/references/docs-map.md` SDK section, or `cometchat-android-v5-sdk`) — and SDK listeners DO require explicit removal in `onDestroy`/`onDispose`/`onCleared`.
|
|
207
72
|
|
|
208
|
-
##
|
|
73
|
+
## Common pitfalls
|
|
74
|
+
Collecting on a non-lifecycle scope (leak) · inventing `CometChatEvents.addListener`/`removeListener` (doesn't exist — it's a flow) · using a UI-Kit event to detect *incoming* messages (use an SDK message listener) · registering an SDK listener and never removing it · a `when` without an `else` branch breaking on a new sealed member · re-collecting the same flow in several places and double-handling · guessing a sealed-class case name instead of fetching the events page.
|
|
209
75
|
|
|
210
|
-
|
|
211
|
-
-
|
|
212
|
-
- Events are emitted on `Dispatchers.Default` — the subscriber is responsible for thread switching
|
|
213
|
-
- Buffer overflow uses `DROP_OLDEST` — high-frequency events may be dropped if the subscriber is slow
|
|
214
|
-
- Do NOT confuse UIKit events (`CometChatEvents`) with SDK-level listeners (`CometChat.addMessageListener`) — they are separate systems
|
|
215
|
-
- `CometChatUIKit.sendTextMessage()` / `sendMediaMessage()` / `sendCustomMessage()` automatically emit message events — do not double-emit
|
|
76
|
+
## Verify it works
|
|
77
|
+
Compile against the pinned kit (`./gradlew :app:assembleDebug # in YOUR app (npm run verify:fences:android-v6 is a pack-repo gate)`). On device: trigger the action (send/edit/delete a message, accept a call) and confirm your handler runs exactly once; rotate the screen / navigate away and back — no duplicate handling and no crash (proves the scope is right); for any SDK listener you added, confirm the matching remove runs on teardown.
|