@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
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
# Ringing — call signaling with custom UI (Android V6 / Compose)
|
|
2
|
-
|
|
3
|
-
V5 has the canonical Android ringing reference. V6 keeps the same SDK API; only the UI layer changes (Compose vs XML Views).
|
|
4
|
-
|
|
5
|
-
**Read first:**
|
|
6
|
-
- `cometchat-android-v5-calls/references/ringing-integration.md` — canonical Android (full SDK flow)
|
|
7
|
-
- `cometchat-react-calls/references/ringing-integration.md` — architecture + hard rules
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## ViewModel
|
|
12
|
-
|
|
13
|
-
```kotlin
|
|
14
|
-
data class CallSignalingState(
|
|
15
|
-
val incoming: Call? = null,
|
|
16
|
-
val outgoing: Call? = null,
|
|
17
|
-
val activeSessionId: String? = null,
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
class CallSignalingViewModel : ViewModel(), CometChat.CallListener {
|
|
21
|
-
private val _state = MutableStateFlow(CallSignalingState())
|
|
22
|
-
val state: StateFlow<CallSignalingState> = _state
|
|
23
|
-
|
|
24
|
-
init {
|
|
25
|
-
CometChat.addCallListener("app", this)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
override fun onIncomingCallReceived(call: Call) {
|
|
29
|
-
Handler(Looper.getMainLooper()).post {
|
|
30
|
-
_state.update { it.copy(incoming = call) }
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
override fun onOutgoingCallAccepted(call: Call) {
|
|
35
|
-
Handler(Looper.getMainLooper()).post {
|
|
36
|
-
_state.update { it.copy(outgoing = null, activeSessionId = call.sessionId) }
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
override fun onOutgoingCallRejected(call: Call) {
|
|
41
|
-
Handler(Looper.getMainLooper()).post {
|
|
42
|
-
_state.update { it.copy(outgoing = null) }
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
override fun onIncomingCallCancelled(call: Call) {
|
|
47
|
-
Handler(Looper.getMainLooper()).post {
|
|
48
|
-
_state.update { it.copy(incoming = null) }
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
override fun onCallEndedMessageReceived(call: Call) {
|
|
53
|
-
Handler(Looper.getMainLooper()).post {
|
|
54
|
-
_state.update { CallSignalingState() }
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
fun initiate(receiverUid: String, type: String) {
|
|
59
|
-
val call = Call(receiverUid, type, CometChatConstants.RECEIVER_TYPE_USER)
|
|
60
|
-
CometChat.initiateCall(call, object : CometChat.CallbackListener<Call>() {
|
|
61
|
-
override fun onSuccess(outgoing: Call) {
|
|
62
|
-
_state.update { it.copy(outgoing = outgoing) }
|
|
63
|
-
}
|
|
64
|
-
override fun onError(e: CometChatException) { Log.e("App", "Initiate failed", e) }
|
|
65
|
-
})
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
fun accept(call: Call) {
|
|
69
|
-
CometChat.acceptCall(call.sessionId, object : CometChat.CallbackListener<Call>() {
|
|
70
|
-
override fun onSuccess(accepted: Call) {
|
|
71
|
-
_state.update { it.copy(incoming = null, activeSessionId = accepted.sessionId) }
|
|
72
|
-
}
|
|
73
|
-
override fun onError(e: CometChatException) {}
|
|
74
|
-
})
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
fun reject(call: Call) {
|
|
78
|
-
CometChat.rejectCall(call.sessionId, CometChatConstants.CALL_STATUS_REJECTED, null)
|
|
79
|
-
_state.update { it.copy(incoming = null) }
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
override fun onCleared() {
|
|
83
|
-
CometChat.removeCallListener("app")
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Compose incoming-call overlay
|
|
91
|
-
|
|
92
|
-
```kotlin
|
|
93
|
-
@Composable
|
|
94
|
-
fun CallSignalingOverlay(viewModel: CallSignalingViewModel = viewModel()) {
|
|
95
|
-
val state by viewModel.state.collectAsStateWithLifecycle()
|
|
96
|
-
|
|
97
|
-
state.incoming?.let { call ->
|
|
98
|
-
Dialog(onDismissRequest = { viewModel.reject(call) }) {
|
|
99
|
-
Surface(
|
|
100
|
-
modifier = Modifier.fillMaxSize(),
|
|
101
|
-
color = Color.Black.copy(alpha = 0.85f),
|
|
102
|
-
) {
|
|
103
|
-
Column(
|
|
104
|
-
modifier = Modifier.fillMaxSize(),
|
|
105
|
-
horizontalAlignment = Alignment.CenterHorizontally,
|
|
106
|
-
verticalArrangement = Arrangement.Center,
|
|
107
|
-
) {
|
|
108
|
-
AsyncImage(
|
|
109
|
-
model = call.callInitiator?.avatar,
|
|
110
|
-
contentDescription = null,
|
|
111
|
-
modifier = Modifier.size(120.dp).clip(CircleShape),
|
|
112
|
-
)
|
|
113
|
-
Spacer(Modifier.height(16.dp))
|
|
114
|
-
Text(
|
|
115
|
-
call.callInitiator?.name ?: "Unknown",
|
|
116
|
-
style = MaterialTheme.typography.titleLarge,
|
|
117
|
-
color = Color.White,
|
|
118
|
-
)
|
|
119
|
-
Text("Incoming ${call.type} call", color = Color.White.copy(alpha = 0.7f))
|
|
120
|
-
Spacer(Modifier.height(32.dp))
|
|
121
|
-
Row(horizontalArrangement = Arrangement.spacedBy(32.dp)) {
|
|
122
|
-
FloatingActionButton(
|
|
123
|
-
onClick = { viewModel.reject(call) },
|
|
124
|
-
containerColor = Color.Red,
|
|
125
|
-
modifier = Modifier.semantics { contentDescription = "Decline call" },
|
|
126
|
-
) { Icon(Icons.Default.CallEnd, contentDescription = null, tint = Color.White) }
|
|
127
|
-
FloatingActionButton(
|
|
128
|
-
onClick = { viewModel.accept(call) },
|
|
129
|
-
containerColor = Color.Green,
|
|
130
|
-
modifier = Modifier.semantics { contentDescription = "Accept call" },
|
|
131
|
-
) { Icon(Icons.Default.Call, contentDescription = null, tint = Color.White) }
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
Mount above your nav graph in `MainActivity.setContent` so it surfaces over any screen.
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## Backgrounded ring — ConnectionService + FCM (mandatory)
|
|
145
|
-
|
|
146
|
-
The Compose overlay only fires when the app is foreground. For backgrounded/killed-app ring delivery, FCM data-message → ConnectionService → OS-level UI. See `cometchat-android-v6-calls/references/server-fcm-voip.md`.
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## Anti-patterns
|
|
151
|
-
|
|
152
|
-
V5 sister rules apply, plus V6-specific:
|
|
153
|
-
|
|
154
|
-
1. **`collectAsState()` instead of `collectAsStateWithLifecycle()`.** State updates while paused.
|
|
155
|
-
2. **Listener registered in a Composable.** Disposes on recomposition; use a ViewModel or Application-scoped class.
|
|
156
|
-
3. **Forgetting `Handler(Looper.getMainLooper()).post`.** SDK fires off main thread; StateFlow updates from background are fine but Compose recompositions need main.
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## Verification checklist
|
|
161
|
-
|
|
162
|
-
- [ ] ViewModel implements `CometChat.CallListener` and registers in init
|
|
163
|
-
- [ ] `onCleared` calls `removeCallListener`
|
|
164
|
-
- [ ] All state updates dispatched to main thread
|
|
165
|
-
- [ ] `Dialog`-based overlay mounts above nav graph in MainActivity
|
|
166
|
-
- [ ] FCM + ConnectionService handles backgrounded ring (V5 sister)
|
|
167
|
-
- [ ] Real-device smoke: foreground + backgrounded + killed-app ring
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## Pointers
|
|
172
|
-
|
|
173
|
-
- `cometchat-android-v5-calls/references/ringing-integration.md` — canonical Android (V5 Views patterns)
|
|
174
|
-
- `cometchat-android-v6-calls/SKILL.md` — V6 architecture
|
|
175
|
-
- `cometchat-android-v6-calls/references/server-fcm-voip.md` — Compose IncomingCallActivity for backgrounded ring
|
|
176
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/android/ringing
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
# Server-side FCM HTTP v1 for Android V6 VoIP push
|
|
2
|
-
|
|
3
|
-
V5 has the canonical server template; V6 adds Compose-specific receiver patterns. The FCM payload + HTTP v1 API are unchanged from V5.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:** https://firebase.google.com/docs/cloud-messaging/migrate-v1
|
|
6
|
-
**Read first:** `cometchat-android-v5-calls/references/server-fcm-voip.md` — full Node + Python templates, hard rules, webhook shape.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## V6 receiver-side delta
|
|
11
|
-
|
|
12
|
-
V5 patterns work on V6 (Compose calls bundle into chatuikit-{compose,kotlin}-android, but the FCM data-message reception is in a regular Service so Compose doesn't change anything there). One V6 nicety: surface the incoming-call UI through a Compose Activity that's launched in the foreground.
|
|
13
|
-
|
|
14
|
-
```kotlin
|
|
15
|
-
class VoipMessagingService : FirebaseMessagingService() {
|
|
16
|
-
override fun onMessageReceived(message: RemoteMessage) {
|
|
17
|
-
val data = message.data
|
|
18
|
-
if (data["type"] != "incoming_call") return
|
|
19
|
-
|
|
20
|
-
// V6: launch IncomingCallActivity (a Compose Activity) directly when the
|
|
21
|
-
// app is in the foreground; otherwise route through ConnectionService
|
|
22
|
-
// for the OS-level UI.
|
|
23
|
-
val isAppInForeground = ProcessLifecycleOwner.get().lifecycle.currentState
|
|
24
|
-
.isAtLeast(Lifecycle.State.STARTED)
|
|
25
|
-
|
|
26
|
-
if (isAppInForeground) {
|
|
27
|
-
val intent = Intent(this, IncomingCallActivity::class.java).apply {
|
|
28
|
-
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
|
29
|
-
putExtra("sessionId", data["sessionId"])
|
|
30
|
-
putExtra("callerName", data["callerName"])
|
|
31
|
-
putExtra("callType", data["callType"])
|
|
32
|
-
}
|
|
33
|
-
startActivity(intent)
|
|
34
|
-
} else {
|
|
35
|
-
// V5 ConnectionService path — see V5 sister doc
|
|
36
|
-
val telecom = getSystemService(Context.TELECOM_SERVICE) as TelecomManager
|
|
37
|
-
// ... addNewIncomingCall flow
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Compose IncomingCallActivity (V6 specific)
|
|
46
|
-
|
|
47
|
-
```kotlin
|
|
48
|
-
class IncomingCallActivity : ComponentActivity() {
|
|
49
|
-
override fun onCreate(savedInstanceState: Bundle?) {
|
|
50
|
-
super.onCreate(savedInstanceState)
|
|
51
|
-
|
|
52
|
-
// Allow showing over lock screen
|
|
53
|
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
|
54
|
-
setShowWhenLocked(true)
|
|
55
|
-
setTurnScreenOn(true)
|
|
56
|
-
val keyguard = getSystemService(KEYGUARD_SERVICE) as KeyguardManager
|
|
57
|
-
keyguard.requestDismissKeyguard(this, null)
|
|
58
|
-
} else {
|
|
59
|
-
window.addFlags(
|
|
60
|
-
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
|
|
61
|
-
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or
|
|
62
|
-
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
|
|
63
|
-
)
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
val sessionId = intent.getStringExtra("sessionId") ?: return finish()
|
|
67
|
-
val callerName = intent.getStringExtra("callerName") ?: ""
|
|
68
|
-
val callType = intent.getStringExtra("callType") ?: "audio"
|
|
69
|
-
|
|
70
|
-
setContent {
|
|
71
|
-
AppTheme {
|
|
72
|
-
IncomingCallScreen(
|
|
73
|
-
callerName = callerName,
|
|
74
|
-
callType = callType,
|
|
75
|
-
onAccept = {
|
|
76
|
-
// Hand off to the kit's call surface
|
|
77
|
-
val callIntent = Intent(this, ActiveCallActivity::class.java).apply {
|
|
78
|
-
putExtra("sessionId", sessionId)
|
|
79
|
-
}
|
|
80
|
-
startActivity(callIntent)
|
|
81
|
-
finish()
|
|
82
|
-
},
|
|
83
|
-
onReject = {
|
|
84
|
-
// Notify CometChat backend
|
|
85
|
-
CometChat.rejectCall(sessionId, ...)
|
|
86
|
-
finish()
|
|
87
|
-
},
|
|
88
|
-
)
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Key V6 deltas vs V5:
|
|
96
|
-
- `setShowWhenLocked(true)` instead of `FLAG_SHOW_WHEN_LOCKED` (V5 uses the deprecated flag)
|
|
97
|
-
- `setContent { ... }` for Compose UI vs XML layout
|
|
98
|
-
- Compose Activity transitions are smoother — no XML inflation lag
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## Anti-patterns
|
|
103
|
-
|
|
104
|
-
V5 sister rules apply, plus V6-specific:
|
|
105
|
-
|
|
106
|
-
1. **Calling `setContent` before `setShowWhenLocked`.** UI flashes briefly before the keyguard layer applies.
|
|
107
|
-
2. **Forgetting `requestDismissKeyguard`.** Lock screen still shows behind your call UI.
|
|
108
|
-
3. **Mixing `IncomingCallActivity` (foreground path) and `ConnectionService` (background path).** Pick the right one based on app state — V6 still benefits from V5's ConnectionService path for true background.
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## Verification checklist
|
|
113
|
-
|
|
114
|
-
- [ ] V5 server template (Node/Python) — see V5 sister
|
|
115
|
-
- [ ] FCM data message lands at `VoipMessagingService.onMessageReceived` regardless of app state
|
|
116
|
-
- [ ] Foreground: `IncomingCallActivity` launches with show-when-locked
|
|
117
|
-
- [ ] Background/killed: ConnectionService path surfaces OS-level UI
|
|
118
|
-
- [ ] Real-device smoke: 3 cohorts (foreground, backgrounded, killed) all ring
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
## Pointers
|
|
123
|
-
|
|
124
|
-
- `cometchat-android-v5-calls/references/server-fcm-voip.md` — V5 sister (canonical server template)
|
|
125
|
-
- `cometchat-android-v6-calls/SKILL.md` — V6 architecture
|
|
126
|
-
- `cometchat-android-v6-calls/references/incoming-call-overlay.md` — Compose overlay patterns
|
|
127
|
-
- FCM HTTP v1: https://firebase.google.com/docs/cloud-messaging/migrate-v1
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# Share invite on Android V6 (Compose)
|
|
2
|
-
|
|
3
|
-
Same SDK + Intent pattern as V5; Compose adds an idiomatic LocalContext-based share trigger and ViewModel state for in-flight indication.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:** https://www.cometchat.com/docs/calls/android/share-invite
|
|
6
|
-
**Read first:** `cometchat-android-v5-calls/references/share-invite.md` — App Links setup + Intent.createChooser pattern.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## ViewModel
|
|
11
|
-
|
|
12
|
-
```kotlin
|
|
13
|
-
class ShareInviteViewModel : ViewModel() {
|
|
14
|
-
private val _sharing = MutableStateFlow(false)
|
|
15
|
-
val sharing: StateFlow<Boolean> = _sharing
|
|
16
|
-
|
|
17
|
-
fun share(context: Context, sessionId: String) {
|
|
18
|
-
if (_sharing.value) return
|
|
19
|
-
_sharing.value = true
|
|
20
|
-
try {
|
|
21
|
-
val url = "https://yourapp.com/call/$sessionId"
|
|
22
|
-
val intent = Intent(Intent.ACTION_SEND).apply {
|
|
23
|
-
type = "text/plain"
|
|
24
|
-
putExtra(Intent.EXTRA_SUBJECT, "Join my call")
|
|
25
|
-
putExtra(Intent.EXTRA_TEXT, "I'm on a call — tap to join.\n$url")
|
|
26
|
-
}
|
|
27
|
-
context.startActivity(Intent.createChooser(intent, "Share call invite"))
|
|
28
|
-
} finally {
|
|
29
|
-
_sharing.value = false
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
`Context` is short-lived per call — pass via composable arg, don't keep in the ViewModel field.
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Compose share button
|
|
40
|
-
|
|
41
|
-
```kotlin
|
|
42
|
-
@Composable
|
|
43
|
-
fun ShareInviteButton(
|
|
44
|
-
sessionId: String,
|
|
45
|
-
viewModel: ShareInviteViewModel = viewModel(),
|
|
46
|
-
) {
|
|
47
|
-
val context = LocalContext.current
|
|
48
|
-
val sharing by viewModel.sharing.collectAsStateWithLifecycle()
|
|
49
|
-
|
|
50
|
-
IconButton(
|
|
51
|
-
onClick = { viewModel.share(context, sessionId) },
|
|
52
|
-
enabled = !sharing,
|
|
53
|
-
) {
|
|
54
|
-
if (sharing) {
|
|
55
|
-
CircularProgressIndicator(modifier = Modifier.size(24.dp), strokeWidth = 2.dp)
|
|
56
|
-
} else {
|
|
57
|
-
Icon(Icons.Default.Share, contentDescription = "Share invite")
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Bridge from SDK event
|
|
66
|
-
|
|
67
|
-
```kotlin
|
|
68
|
-
override fun onShareInviteButtonClicked() {
|
|
69
|
-
val ctx = activityRef.get() ?: return
|
|
70
|
-
Handler(Looper.getMainLooper()).post {
|
|
71
|
-
shareInviteViewModel.share(ctx, sessionId)
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
`activityRef` should be a `WeakReference<Activity>` set when the call starts and cleared in onPause/onDestroy.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Anti-patterns
|
|
81
|
-
|
|
82
|
-
V5 sister rules apply, plus Compose-specific:
|
|
83
|
-
|
|
84
|
-
1. **Storing `Context` in ViewModel field.** Leak after rotation; ViewModels survive config changes but Activities don't.
|
|
85
|
-
2. **`collectAsState()` instead of `collectAsStateWithLifecycle()`.** Wasted work while paused.
|
|
86
|
-
3. **Strong activity reference in CallsEventsListener.** Use `WeakReference` or pass via `LocalContext.current` from the composable.
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Verification checklist
|
|
91
|
-
|
|
92
|
-
- [ ] `Context` passed via composable arg, not stored in ViewModel
|
|
93
|
-
- [ ] `WeakReference<Activity>` for SDK callback bridge
|
|
94
|
-
- [ ] `collectAsStateWithLifecycle` for sharing state
|
|
95
|
-
- [ ] `Intent.createChooser` (not raw ACTION_SEND)
|
|
96
|
-
- [ ] App URL via `BuildConfig.APP_URL`
|
|
97
|
-
- [ ] Real-device smoke: same as V5
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## Pointers
|
|
102
|
-
|
|
103
|
-
- `cometchat-android-v5-calls/references/share-invite.md` — V5 sister (Views patterns)
|
|
104
|
-
- `cometchat-android-v6-calls` SKILL.md
|
|
105
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/android/share-invite
|
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cometchat-android-v6-compose-theming
|
|
3
|
-
description: "CometChat Android UIKit v6 Jetpack Compose theming — CometChatTheme, CompositionLocal color schemes, typography, shapes, and dark mode"
|
|
4
|
-
license: "MIT"
|
|
5
|
-
compatibility: "Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-compose-android:6.x"
|
|
6
|
-
metadata:
|
|
7
|
-
author: "CometChat"
|
|
8
|
-
version: "3.0.0"
|
|
9
|
-
tags: "cometchat, android, compose, theming, colors, typography, dark-mode"
|
|
10
|
-
---
|
|
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
|
-
|
|
14
|
-
> **Companion skills:** cometchat-android-v6-kotlin-theming (Views equivalent), cometchat-android-v6-compose-components, cometchat-android-v6-compose-customization
|
|
15
|
-
|
|
16
|
-
## Purpose
|
|
17
|
-
|
|
18
|
-
Apply and customize the CometChat theme in Jetpack Compose — color schemes, typography, shapes, dark mode, and per-component style overrides using the `CompositionLocal`-based theme system.
|
|
19
|
-
|
|
20
|
-
## Use this skill when
|
|
21
|
-
|
|
22
|
-
- Wrapping CometChat components in `CometChatTheme {}`
|
|
23
|
-
- Changing the primary color or color scheme
|
|
24
|
-
- Implementing dark mode support
|
|
25
|
-
- Customizing typography or shapes
|
|
26
|
-
- Accessing theme tokens in custom composables
|
|
27
|
-
|
|
28
|
-
## Do not use this skill when
|
|
29
|
-
|
|
30
|
-
- Working with Kotlin Views theming (use `cometchat-android-v6-kotlin-theming`)
|
|
31
|
-
- Customizing bubble rendering (use `cometchat-android-v6-compose-customization`)
|
|
32
|
-
|
|
33
|
-
## 1. CometChatTheme Wrapper
|
|
34
|
-
|
|
35
|
-
All CometChat Compose components must be wrapped in `CometChatTheme {}`:
|
|
36
|
-
|
|
37
|
-
```kotlin
|
|
38
|
-
import com.cometchat.uikit.compose.theme.CometChatTheme
|
|
39
|
-
|
|
40
|
-
setContent {
|
|
41
|
-
CometChatTheme {
|
|
42
|
-
// CometChat components go here
|
|
43
|
-
CometChatConversations()
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
`CometChatTheme` is a composable that provides theme values via `CompositionLocalProvider`:
|
|
49
|
-
- `LocalColorScheme` → `CometChatColorScheme`
|
|
50
|
-
- `LocalTypography` → `CometChatTypography`
|
|
51
|
-
- `LocalShapes` → `Shapes`
|
|
52
|
-
|
|
53
|
-
## 2. Color Scheme
|
|
54
|
-
|
|
55
|
-
### 2.1 Default Light/Dark Schemes
|
|
56
|
-
|
|
57
|
-
```kotlin
|
|
58
|
-
import com.cometchat.uikit.compose.theme.*
|
|
59
|
-
|
|
60
|
-
// Light mode (default)
|
|
61
|
-
CometChatTheme(colorScheme = lightColorScheme()) {
|
|
62
|
-
// ...
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Dark mode
|
|
66
|
-
CometChatTheme(colorScheme = darkColorScheme()) {
|
|
67
|
-
// ...
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Auto based on system setting
|
|
71
|
-
CometChatTheme(
|
|
72
|
-
colorScheme = if (isSystemInDarkTheme()) darkColorScheme() else lightColorScheme()
|
|
73
|
-
) {
|
|
74
|
-
// ...
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 2.2 Custom Primary Color
|
|
79
|
-
|
|
80
|
-
```kotlin
|
|
81
|
-
CometChatTheme(
|
|
82
|
-
colorScheme = lightColorScheme(primary = Color(0xFF6851D6))
|
|
83
|
-
) {
|
|
84
|
-
// All extended primary colors (50-900) auto-generate from the primary
|
|
85
|
-
}
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### 2.3 CometChatColorScheme Token Reference
|
|
89
|
-
|
|
90
|
-
The `CometChatColorScheme` class contains these token groups:
|
|
91
|
-
|
|
92
|
-
**Primary Colors:**
|
|
93
|
-
- `primary` — Main brand color
|
|
94
|
-
|
|
95
|
-
**Extended Primary (auto-generated from primary):**
|
|
96
|
-
- `extendedPrimaryColor50` through `extendedPrimaryColor900` — 10 shades blended with white (light) or black (dark)
|
|
97
|
-
|
|
98
|
-
**Neutral Colors:**
|
|
99
|
-
- `neutralColor50` through `neutralColor900` — 10 neutral shades
|
|
100
|
-
|
|
101
|
-
**Alert Colors:**
|
|
102
|
-
- `infoColor`, `successColor`, `warningColor`, `errorColor`, `messageReadColor`
|
|
103
|
-
|
|
104
|
-
**Background Colors:**
|
|
105
|
-
- `backgroundColor1` (lightest) through `backgroundColor4` (darkest)
|
|
106
|
-
|
|
107
|
-
**Stroke/Border Colors:**
|
|
108
|
-
- `strokeColorDefault`, `strokeColorLight`, `strokeColorDark`, `strokeColorHighlight`
|
|
109
|
-
- Aliases: `borderColorLight`, `borderColorDefault`, `borderColorDark`, `borderColorHighlight`
|
|
110
|
-
|
|
111
|
-
**Text Colors:**
|
|
112
|
-
- `textColorPrimary`, `textColorSecondary`, `textColorTertiary`, `textColorDisabled`, `textColorWhite`, `textColorHighlight`
|
|
113
|
-
|
|
114
|
-
**Icon Tint Colors:**
|
|
115
|
-
- `iconTintPrimary`, `iconTintSecondary`, `iconTintTertiary`, `iconTintWhite`, `iconTintHighlight`
|
|
116
|
-
|
|
117
|
-
**Button Colors:**
|
|
118
|
-
- `primaryButtonBackgroundColor`, `primaryButtonIconTint`, `primaryButtonTextColor`
|
|
119
|
-
- `secondaryButtonBackgroundColor`, `secondaryButtonIconTint`, `secondaryButtonTextColor`
|
|
120
|
-
- `linkButtonColor`, `fabButtonBackgroundColor`, `fabButtonIconTint`, `whiteButtonPressed`
|
|
121
|
-
|
|
122
|
-
**Static Colors:**
|
|
123
|
-
- `colorWhite`, `colorBlack`
|
|
124
|
-
|
|
125
|
-
### 2.4 Fully Custom Color Scheme
|
|
126
|
-
|
|
127
|
-
```kotlin
|
|
128
|
-
val customScheme = lightColorScheme(
|
|
129
|
-
primary = Color(0xFF6851D6),
|
|
130
|
-
neutralColor50 = Color(0xFFFAFAFA),
|
|
131
|
-
neutralColor900 = Color(0xFF141414),
|
|
132
|
-
errorColor = Color(0xFFFF3B30),
|
|
133
|
-
successColor = Color(0xFF34C759),
|
|
134
|
-
// ... override any token
|
|
135
|
-
)
|
|
136
|
-
|
|
137
|
-
CometChatTheme(colorScheme = customScheme) {
|
|
138
|
-
// ...
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
## 3. Typography
|
|
143
|
-
|
|
144
|
-
```kotlin
|
|
145
|
-
// Access typography in composables
|
|
146
|
-
val style: TextStyle = CometChatTheme.typography.heading1Bold
|
|
147
|
-
val bodyStyle: TextStyle = CometChatTheme.typography.bodyRegular
|
|
148
|
-
val titleStyle: TextStyle = CometChatTheme.typography.titleRegular
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
Custom typography:
|
|
152
|
-
|
|
153
|
-
```kotlin
|
|
154
|
-
CometChatTheme(
|
|
155
|
-
typography = CometChatTypography(/* custom TextStyles */)
|
|
156
|
-
) {
|
|
157
|
-
// ...
|
|
158
|
-
}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## 4. Shapes
|
|
162
|
-
|
|
163
|
-
```kotlin
|
|
164
|
-
// Access shapes
|
|
165
|
-
val shapes: Shapes = CometChatTheme.shapes
|
|
166
|
-
|
|
167
|
-
// Custom shapes
|
|
168
|
-
CometChatTheme(
|
|
169
|
-
shapes = Shapes(/* custom corner radii */)
|
|
170
|
-
) {
|
|
171
|
-
// ...
|
|
172
|
-
}
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## 5. Accessing Theme in Custom Composables
|
|
176
|
-
|
|
177
|
-
```kotlin
|
|
178
|
-
@Composable
|
|
179
|
-
fun MyCustomView() {
|
|
180
|
-
val colors = CometChatTheme.colorScheme
|
|
181
|
-
val typography = CometChatTheme.typography
|
|
182
|
-
|
|
183
|
-
Text(
|
|
184
|
-
text = "Hello",
|
|
185
|
-
color = colors.textColorPrimary,
|
|
186
|
-
style = typography.bodyRegular
|
|
187
|
-
)
|
|
188
|
-
|
|
189
|
-
Box(
|
|
190
|
-
modifier = Modifier.background(colors.backgroundColor1)
|
|
191
|
-
)
|
|
192
|
-
}
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
## 6. Extended Primary Color Generation
|
|
196
|
-
|
|
197
|
-
Extended primary colors are auto-generated by blending the primary color with white (light mode) or black (dark mode):
|
|
198
|
-
|
|
199
|
-
```kotlin
|
|
200
|
-
// Light mode: primary blended with white at various percentages
|
|
201
|
-
// extendedPrimaryColor50 = blend(primary, white, 0.96) // lightest
|
|
202
|
-
// extendedPrimaryColor500 = blend(primary, white, 0.44) // mid
|
|
203
|
-
// extendedPrimaryColor900 = blend(primary, black, 0.08) // darkest
|
|
204
|
-
|
|
205
|
-
// Dark mode: primary blended with black at various percentages
|
|
206
|
-
// extendedPrimaryColor50 = blend(primary, black, 0.80) // lightest
|
|
207
|
-
// extendedPrimaryColor900 = blend(primary, white, 0.11) // lightest in dark
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
You can override individual extended colors:
|
|
211
|
-
|
|
212
|
-
```kotlin
|
|
213
|
-
lightColorScheme(
|
|
214
|
-
primary = Color(0xFF6851D6),
|
|
215
|
-
extendedPrimaryColor500 = Color(0xFF9B8AE0) // manual override
|
|
216
|
-
)
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
## Localization
|
|
220
|
-
|
|
221
|
-
To translate the UI, switch the active language, or override individual strings, route to the dedicated **`cometchat-i18n`** skill — the canonical cross-family localization reference. Android uses `CometChatLocalize.setLocale(context, Language.Code.<lang>)` / `getLocale(context)` (a separate method, **not** an `init` object — unlike web/RN). `cometchat-i18n` covers bundled languages, custom translations, and RTL. Docs: https://www.cometchat.com/docs/ui-kit/android/localize
|
|
222
|
-
|
|
223
|
-
## Sound Manager — custom notification & call sounds
|
|
224
|
-
|
|
225
|
-
Sounds are a **behavioral** customization — driven by `CometChatSoundManager`, an **instance** class that needs a `Context`. The UI Kit plays the built-in cues automatically; use this to override a cue with your own raw resource. V6 package (NOT the V5 `com.cometchat.chatuikit.*` path):
|
|
226
|
-
|
|
227
|
-
```kotlin
|
|
228
|
-
import com.cometchat.uikit.core.resources.soundmanager.CometChatSoundManager
|
|
229
|
-
import com.cometchat.uikit.core.resources.soundmanager.Sound
|
|
230
|
-
|
|
231
|
-
val soundManager = CometChatSoundManager(context)
|
|
232
|
-
|
|
233
|
-
// Play a default cue — Sound enum is SCREAMING_SNAKE_CASE: INCOMING_CALL |
|
|
234
|
-
// OUTGOING_CALL | INCOMING_MESSAGE | INCOMING_MESSAGE_FROM_OTHER | OUTGOING_MESSAGE
|
|
235
|
-
soundManager.play(Sound.INCOMING_CALL)
|
|
236
|
-
|
|
237
|
-
// Override with your own raw resource (R.raw.*)
|
|
238
|
-
soundManager.play(Sound.INCOMING_MESSAGE, R.raw.my_ping)
|
|
239
|
-
|
|
240
|
-
// Stop whatever is playing
|
|
241
|
-
soundManager.pause()
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
## Hard rules
|
|
245
|
-
|
|
246
|
-
- ALWAYS wrap CometChat Compose components in `CometChatTheme {}` — components will crash or look wrong without it
|
|
247
|
-
- NEVER use Material `MaterialTheme` tokens inside CometChat components — use `CometChatTheme.colorScheme` / `.typography` / `.shapes`
|
|
248
|
-
- `CometChatTheme` does NOT extend `MaterialTheme` — they are separate theme systems
|
|
249
|
-
- When overriding just the primary color, extended primary colors auto-regenerate — you don't need to set all 10 shades
|
|
250
|
-
- `lightColorScheme()` and `darkColorScheme()` are factory functions, not data class constructors — use named parameters to override specific tokens
|