@cometchat/skills 4.4.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +55 -0
- package/.claude-plugin/plugin.json +14 -0
- package/CHANGELOG.md +36 -0
- package/LICENSE +21 -0
- package/README.md +41 -163
- package/RULES.md +114 -0
- package/bin/cometchat-skills.mjs +1180 -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 +151 -74
- package/peers.yaml +312 -0
- package/registry/README.md +31 -0
- package/registry/android-calls-v5.json +54 -0
- package/registry/android-v6.json +137 -0
- package/registry/angular-v5.json +114 -0
- package/registry/flutter-calls-v5.json +54 -0
- package/registry/flutter-v6.json +119 -0
- package/registry/ios-calls-v5.json +59 -0
- package/registry/ios-v5.json +97 -0
- package/registry/rn-calls-v5.json +59 -0
- package/registry/rn-v5.json +129 -0
- package/registry/sdk-android-v5.json +53 -0
- package/registry/sdk-jsv4.json +53 -0
- package/registry/web-calls-v5.json +54 -0
- package/registry/web-v7.json +99 -0
- package/skills/cometchat/SKILL.md +42 -2096
- 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 +40 -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 +101 -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-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 +131 -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 +58 -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-ios-calls/SKILL.md +112 -563
- package/skills/cometchat-ios-components/SKILL.md +44 -834
- package/skills/cometchat-ios-core/SKILL.md +181 -1068
- package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
- package/skills/cometchat-ios-core/references/docs-map.md +123 -0
- package/skills/cometchat-ios-core/references/install.md +23 -0
- package/skills/cometchat-ios-core/references/layout.md +186 -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-push/SKILL.md +24 -602
- 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-onboarding/SKILL.md +89 -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 +90 -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 +313 -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 +126 -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 +78 -0
- package/skills/cometchat-react-native-push/SKILL.md +88 -0
- package/skills/cometchat-react-native-sdk/SKILL.md +126 -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 +116 -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/i18n-rtl-a11y.md +22 -0
- package/skills/cometchat-react-v7-core/references/layout.md +158 -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-core/references/troubleshooting.md +28 -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-push/SKILL.md +53 -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 +909 -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 +130 -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-a11y/SKILL.md +0 -477
- 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-i18n/SKILL.md +0 -419
- 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-production/SKILL.md +0 -738
- package/skills/cometchat-ios-testing/SKILL.md +0 -376
- package/skills/cometchat-ios-theming/SKILL.md +0 -667
- package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
- 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,274 +0,0 @@
|
|
|
1
|
-
# Call session — joinSession with no ringing (Android V5 / Views)
|
|
2
|
-
|
|
3
|
-
Server-generated sessionId, both parties enter it. Customer-validated against `calls-sdk-android-5/samples/sample-app/src/main/kotlin/com/cometchat/samplecalls/ui/activity/CallActivity.kt`.
|
|
4
|
-
|
|
5
|
-
**Read first:** `cometchat-react-calls/references/call-session.md` — cross-platform architecture (sessionId strategies, server-side authorization). Then come back here for the Android shape.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Hard rules (Android-specific overrides on top of the cross-platform rules)
|
|
10
|
-
|
|
11
|
-
1. **`CometChatCalls.joinSession(sessionId, sessionSettings, container, CallbackListener<CallSession>)`** takes the sessionId DIRECTLY — token generation happens internally. No separate `generateToken` call required. Matches the upstream sample.
|
|
12
|
-
2. **`CometChatCalls.SessionSettingsBuilder()` is the canonical settings shape** (nested class on `CometChatCalls`). Chained `.setTitle().startVideoPaused(false).startAudioMuted(false).build()`. NOT `SessionSettings(sessionType:, layout:)` — that constructor does not exist on Android.
|
|
13
|
-
3. **`SessionStatusListener` + `ButtonClickListener` are abstract classes registered on the `CallSession` instance** returned in `onSuccess`. NOT `CometChatCalls.addEventListener(CallEvent.SESSION_LEFT)` — that does not exist.
|
|
14
|
-
4. **`CometChatOngoingCallService.launch(this)` + `.abort(this)`** manage the platform foreground service. Call `launch()` in `onSessionJoined`; call `abort()` in EVERY termination path (`onSessionLeft`, `onConnectionClosed`, `onSessionTimedOut`, `onDestroy`, `endCall`). Service notification persists otherwise.
|
|
15
|
-
5. **For standalone session-only integrations, the Chat SDK is OPTIONAL.** The upstream Android sample only depends on `com.cometchat.calls-sdk-android`. Keep `CometChat.init` / `CometChat.login` only for additive (chat + calls) integrations.
|
|
16
|
-
6. **Runtime permission request** for `CAMERA` + `RECORD_AUDIO` (Android 6.0+). The manifest entries are necessary but not sufficient on modern Android.
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## CallActivity (canonical XML/Views shape)
|
|
21
|
-
|
|
22
|
-
```kotlin
|
|
23
|
-
package com.example.calls
|
|
24
|
-
|
|
25
|
-
import android.os.Bundle
|
|
26
|
-
import android.util.Log
|
|
27
|
-
import android.widget.RelativeLayout
|
|
28
|
-
import android.widget.Toast
|
|
29
|
-
import androidx.activity.OnBackPressedCallback
|
|
30
|
-
import androidx.appcompat.app.AppCompatActivity
|
|
31
|
-
import com.cometchat.calls.core.CallSession
|
|
32
|
-
import com.cometchat.calls.core.CometChatCalls
|
|
33
|
-
import com.cometchat.calls.exceptions.CometChatException
|
|
34
|
-
import com.cometchat.calls.listeners.ButtonClickListener
|
|
35
|
-
import com.cometchat.calls.listeners.SessionStatusListener
|
|
36
|
-
import com.cometchat.calls.services.CometChatOngoingCallService
|
|
37
|
-
|
|
38
|
-
class CallActivity : AppCompatActivity() {
|
|
39
|
-
|
|
40
|
-
companion object {
|
|
41
|
-
private const val TAG = "CallActivity"
|
|
42
|
-
const val EXTRA_SESSION_ID = "session_id"
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
private lateinit var callContainer: RelativeLayout
|
|
46
|
-
private lateinit var sessionId: String
|
|
47
|
-
|
|
48
|
-
override fun onCreate(savedInstanceState: Bundle?) {
|
|
49
|
-
super.onCreate(savedInstanceState)
|
|
50
|
-
setContentView(R.layout.activity_call)
|
|
51
|
-
|
|
52
|
-
sessionId = intent.getStringExtra(EXTRA_SESSION_ID) ?: run {
|
|
53
|
-
Toast.makeText(this, "Invalid session ID", Toast.LENGTH_SHORT).show()
|
|
54
|
-
finish()
|
|
55
|
-
return
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
callContainer = findViewById(R.id.call_container)
|
|
59
|
-
|
|
60
|
-
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
|
|
61
|
-
override fun handleOnBackPressed() = endCall()
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
joinSession()
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
private fun joinSession() {
|
|
68
|
-
val sessionSettings = CometChatCalls.SessionSettingsBuilder()
|
|
69
|
-
.setTitle("CometChat Meeting")
|
|
70
|
-
.startVideoPaused(false)
|
|
71
|
-
.startAudioMuted(false)
|
|
72
|
-
.build()
|
|
73
|
-
|
|
74
|
-
CometChatCalls.joinSession(
|
|
75
|
-
sessionId,
|
|
76
|
-
sessionSettings,
|
|
77
|
-
callContainer,
|
|
78
|
-
object : CometChatCalls.CallbackListener<CallSession>() {
|
|
79
|
-
override fun onSuccess(callSession: CallSession) {
|
|
80
|
-
Log.d(TAG, "Joined session: $sessionId")
|
|
81
|
-
setupCallListeners(callSession)
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
override fun onError(e: CometChatException) {
|
|
85
|
-
Log.e(TAG, "Failed to join session: ${e.message}")
|
|
86
|
-
runOnUiThread {
|
|
87
|
-
Toast.makeText(this@CallActivity, "Failed to join: ${e.message}", Toast.LENGTH_LONG).show()
|
|
88
|
-
finish()
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
)
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
private fun setupCallListeners(callSession: CallSession) {
|
|
96
|
-
callSession.addSessionStatusListener(this, object : SessionStatusListener() {
|
|
97
|
-
override fun onSessionJoined() {
|
|
98
|
-
CometChatOngoingCallService.launch(this@CallActivity)
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// All termination events funnel through ONE guarded handleTermination().
|
|
102
|
-
// The v5 Calls SDK fires onSessionLeft + onConnectionClosed in sequence
|
|
103
|
-
// on every hangup. Activity.finish() is idempotent (safe to call multiple
|
|
104
|
-
// times) but abort() isn't — multiple abort calls log warnings and waste
|
|
105
|
-
// foreground-service teardown work.
|
|
106
|
-
override fun onSessionLeft() = handleTermination()
|
|
107
|
-
override fun onConnectionClosed() = handleTermination()
|
|
108
|
-
override fun onSessionTimedOut() = handleTermination()
|
|
109
|
-
|
|
110
|
-
override fun onConnectionLost() {
|
|
111
|
-
runOnUiThread {
|
|
112
|
-
Toast.makeText(this@CallActivity, "Connection lost", Toast.LENGTH_SHORT).show()
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
override fun onConnectionRestored() {
|
|
117
|
-
runOnUiThread {
|
|
118
|
-
Toast.makeText(this@CallActivity, "Connection restored", Toast.LENGTH_SHORT).show()
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
})
|
|
122
|
-
|
|
123
|
-
callSession.addButtonClickListener(this, object : ButtonClickListener() {
|
|
124
|
-
override fun onLeaveSessionButtonClicked() = endCall()
|
|
125
|
-
})
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
private var isTerminating = false
|
|
129
|
-
|
|
130
|
-
private fun handleTermination() {
|
|
131
|
-
if (isTerminating) return
|
|
132
|
-
isTerminating = true
|
|
133
|
-
runOnUiThread {
|
|
134
|
-
CometChatOngoingCallService.abort(this)
|
|
135
|
-
if (!isFinishing) finish()
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
private fun endCall() {
|
|
140
|
-
val callSession = CallSession.getInstance()
|
|
141
|
-
if (callSession.isSessionActive) callSession.leaveSession()
|
|
142
|
-
handleTermination()
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
override fun onDestroy() {
|
|
146
|
-
super.onDestroy()
|
|
147
|
-
CometChatOngoingCallService.abort(this)
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
XML (`res/layout/activity_call.xml`):
|
|
153
|
-
|
|
154
|
-
```xml
|
|
155
|
-
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
156
|
-
android:id="@+id/call_container"
|
|
157
|
-
android:layout_width="match_parent"
|
|
158
|
-
android:layout_height="match_parent"
|
|
159
|
-
android:background="@android:color/black" />
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
**Why this shape:**
|
|
163
|
-
|
|
164
|
-
- **Single-call `joinSession(sessionId, settings, container, callback)`** — token generation is internal. Customers don't manage tokens; the SDK does.
|
|
165
|
-
- **`CometChatCalls.SessionSettingsBuilder()` (nested class)** — the outer namespacing matters; raw `SessionSettingsBuilder()` won't resolve.
|
|
166
|
-
- **Listener-on-`CallSession`-instance pattern** — register against the `CallSession` from `onSuccess`, NOT against the global `CometChatCalls` singleton. Each session has its own listener registry.
|
|
167
|
-
- **`onSessionLeft`, `onConnectionClosed`, `onSessionTimedOut` ALL terminate the activity.** All three are real termination paths.
|
|
168
|
-
- **`CometChatOngoingCallService.launch/abort`** — required for Android 14+ foreground-service compliance with `FOREGROUND_SERVICE_MICROPHONE`. Skipping `abort()` leaves the persistent notification.
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## Manifest requirements
|
|
173
|
-
|
|
174
|
-
```xml
|
|
175
|
-
<uses-permission android:name="android.permission.INTERNET" />
|
|
176
|
-
<uses-permission android:name="android.permission.CAMERA" />
|
|
177
|
-
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
|
178
|
-
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
|
|
179
|
-
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
180
|
-
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
|
|
181
|
-
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" />
|
|
182
|
-
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
|
183
|
-
|
|
184
|
-
<application>
|
|
185
|
-
<activity android:name=".CallActivity" />
|
|
186
|
-
<service
|
|
187
|
-
android:name="com.cometchat.calls.services.CometChatOngoingCallService"
|
|
188
|
-
android:foregroundServiceType="microphone|camera"
|
|
189
|
-
android:exported="false" />
|
|
190
|
-
</application>
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## Runtime permissions (Kotlin)
|
|
196
|
-
|
|
197
|
-
```kotlin
|
|
198
|
-
val permLauncher = registerForActivityResult(
|
|
199
|
-
ActivityResultContracts.RequestMultiplePermissions()
|
|
200
|
-
) { perms ->
|
|
201
|
-
val granted = perms[Manifest.permission.CAMERA] == true &&
|
|
202
|
-
perms[Manifest.permission.RECORD_AUDIO] == true
|
|
203
|
-
if (granted) {
|
|
204
|
-
// proceed to call
|
|
205
|
-
} else {
|
|
206
|
-
// show explanation + deep-link to app settings
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
permLauncher.launch(arrayOf(
|
|
211
|
-
Manifest.permission.CAMERA,
|
|
212
|
-
Manifest.permission.RECORD_AUDIO,
|
|
213
|
-
Manifest.permission.POST_NOTIFICATIONS, // Android 13+
|
|
214
|
-
))
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
---
|
|
218
|
-
|
|
219
|
-
## Deep-link routing (App Links)
|
|
220
|
-
|
|
221
|
-
```xml
|
|
222
|
-
<activity android:name=".CallActivity">
|
|
223
|
-
<intent-filter android:autoVerify="true">
|
|
224
|
-
<action android:name="android.intent.action.VIEW" />
|
|
225
|
-
<category android:name="android.intent.category.DEFAULT" />
|
|
226
|
-
<category android:name="android.intent.category.BROWSABLE" />
|
|
227
|
-
<data android:scheme="https" android:host="yourapp.com" android:pathPrefix="/meet/" />
|
|
228
|
-
</intent-filter>
|
|
229
|
-
</activity>
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
`MainActivity.onCreate` / `onNewIntent` routes to `CallActivity` extracting the sessionId from `intent.data.lastPathSegment`.
|
|
233
|
-
|
|
234
|
-
See `cometchat-android-v5-calls/references/share-invite.md` for full deep-link config.
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## Anti-patterns
|
|
239
|
-
|
|
240
|
-
1. **`CometChatCalls.generateToken(sessionId)` then `joinSession(callToken, ...)` two-step.** The Android API takes sessionId directly via `joinSession(sessionId, settings, container, callback)`. The two-step exists for advanced cases (custom auth tokens) but the canonical pattern is single-call.
|
|
241
|
-
2. **`SessionSettings(sessionType:, layout:)` data-class constructor.** Doesn't exist on Android. Use `CometChatCalls.SessionSettingsBuilder().build()`.
|
|
242
|
-
3. **`CometChatCalls.addEventListener(CallEvent.SESSION_LEFT)`.** Doesn't exist on Android. Register `SessionStatusListener()` on the `CallSession` instance from `onSuccess`.
|
|
243
|
-
4. **Skipping `CometChatOngoingCallService.abort()` in `onDestroy` / `onConnectionClosed` / `onSessionTimedOut`.** Foreground-service notification persists; user sees "Ongoing call" with no way to clear.
|
|
244
|
-
5. **`addSessionStatusListener` without the `lifecycleOwner` (this) argument.** The two-arg form `(lifecycleOwner, listener)` ties listener cleanup to the activity's lifecycle — required to avoid leaks.
|
|
245
|
-
6. **Calling `leaveSession()` without checking `callSession.isSessionActive`.** Throws on double-leave; can happen if back button + onSessionLeft fire concurrently.
|
|
246
|
-
7. **Initializing Chat SDK for a session-only integration.** Wastes time and adds two extra failure modes. Drop `CometChat.init` / `CometChat.login` entirely for standalone session apps.
|
|
247
|
-
|
|
248
|
-
---
|
|
249
|
-
|
|
250
|
-
## Verification checklist
|
|
251
|
-
|
|
252
|
-
- [ ] `CometChatCalls.joinSession(sessionId, settings, container, CallbackListener)` — single-call shape
|
|
253
|
-
- [ ] Settings built via `CometChatCalls.SessionSettingsBuilder()`, not constructor
|
|
254
|
-
- [ ] `SessionStatusListener()` registered on the `CallSession` from `onSuccess` (with lifecycle owner)
|
|
255
|
-
- [ ] `ButtonClickListener()` registered for the leave button
|
|
256
|
-
- [ ] `CometChatOngoingCallService.launch(this)` in `onSessionJoined`
|
|
257
|
-
- [ ] `CometChatOngoingCallService.abort(this)` in EVERY termination path
|
|
258
|
-
- [ ] Manifest has `FOREGROUND_SERVICE_MICROPHONE` + `FOREGROUND_SERVICE_CAMERA` (Android 14+)
|
|
259
|
-
- [ ] `<service android:name="com.cometchat.calls.services.CometChatOngoingCallService" android:foregroundServiceType="microphone|camera" />` in manifest
|
|
260
|
-
- [ ] Runtime permission request for `CAMERA`, `RECORD_AUDIO`, `POST_NOTIFICATIONS`
|
|
261
|
-
- [ ] App Links intent-filter for `/meet/*`
|
|
262
|
-
- [ ] **Standalone session-only:** no `com.cometchat:chat-sdk-android` dependency — Calls SDK alone
|
|
263
|
-
- [ ] **Additive (chat + calls):** dual-SDK contract preserved
|
|
264
|
-
- [ ] Real-device smoke: rotation doesn't double-join, leave clears the foreground notification
|
|
265
|
-
|
|
266
|
-
---
|
|
267
|
-
|
|
268
|
-
## Pointers
|
|
269
|
-
|
|
270
|
-
- `cometchat-react-calls/references/call-session.md` — cross-platform architecture
|
|
271
|
-
- `cometchat-android-v5-calls/SKILL.md` — Android V5 architecture
|
|
272
|
-
- `cometchat-android-v5-calls/references/share-invite.md` — App Links config
|
|
273
|
-
- Upstream Android sample — `calls-sdk-android-5/samples/sample-app/src/main/kotlin/com/cometchat/samplecalls/ui/activity/CallActivity.kt`
|
|
274
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/android/join-session
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: custom-ui
|
|
3
|
-
description: Build custom call UI — custom control panel, custom participant list, layout customization. Use when hiding default controls and building your own call interface. Triggers on "custom control panel", "custom participant list", "custom UI", "hideControlPanel", "custom call interface".
|
|
4
|
-
inclusion: manual
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# CometChat Calls SDK v5 — Custom UI
|
|
8
|
-
|
|
9
|
-
## Overview
|
|
10
|
-
|
|
11
|
-
Build fully custom call interfaces by hiding the default SDK controls and implementing your own using `CallSession` actions and event listeners.
|
|
12
|
-
|
|
13
|
-
## Key Imports
|
|
14
|
-
|
|
15
|
-
```kotlin
|
|
16
|
-
import com.cometchat.calls.core.CallSession
|
|
17
|
-
import com.cometchat.calls.core.CometChatCalls
|
|
18
|
-
import com.cometchat.calls.listeners.MediaEventsListener
|
|
19
|
-
import com.cometchat.calls.listeners.SessionStatusListener
|
|
20
|
-
import com.cometchat.calls.listeners.ParticipantEventListener
|
|
21
|
-
import com.cometchat.calls.model.*
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Implementation
|
|
25
|
-
|
|
26
|
-
### 1. Hide Default Controls
|
|
27
|
-
|
|
28
|
-
```kotlin
|
|
29
|
-
val sessionSettings = CometChatCalls.SessionSettingsBuilder()
|
|
30
|
-
.hideControlPanel(true) // hide entire bottom bar
|
|
31
|
-
.hideHeaderPanel(true) // hide top header
|
|
32
|
-
// Or hide individual buttons:
|
|
33
|
-
// .hideToggleAudioButton(true)
|
|
34
|
-
// .hideToggleVideoButton(true)
|
|
35
|
-
// .hideParticipantListButton(true)
|
|
36
|
-
.build()
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### 2. Custom Control Panel
|
|
40
|
-
|
|
41
|
-
Create your own buttons and wire them to `CallSession` actions:
|
|
42
|
-
|
|
43
|
-
```kotlin
|
|
44
|
-
val callSession = CallSession.getInstance()
|
|
45
|
-
var isAudioMuted = false
|
|
46
|
-
var isVideoPaused = false
|
|
47
|
-
|
|
48
|
-
btnMute.setOnClickListener {
|
|
49
|
-
if (isAudioMuted) callSession.unmuteAudio() else callSession.muteAudio()
|
|
50
|
-
}
|
|
51
|
-
btnVideo.setOnClickListener {
|
|
52
|
-
if (isVideoPaused) callSession.resumeVideo() else callSession.pauseVideo()
|
|
53
|
-
}
|
|
54
|
-
btnSwitchCamera.setOnClickListener { callSession.switchCamera() }
|
|
55
|
-
btnEndCall.setOnClickListener {
|
|
56
|
-
callSession.leaveSession()
|
|
57
|
-
finish()
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### 3. Sync UI with Media Events
|
|
62
|
-
|
|
63
|
-
```kotlin
|
|
64
|
-
callSession.addMediaEventsListener(this, object : MediaEventsListener() {
|
|
65
|
-
override fun onAudioMuted() {
|
|
66
|
-
runOnUiThread { isAudioMuted = true; btnMute.setImageResource(R.drawable.ic_mic_off) }
|
|
67
|
-
}
|
|
68
|
-
override fun onAudioUnMuted() {
|
|
69
|
-
runOnUiThread { isAudioMuted = false; btnMute.setImageResource(R.drawable.ic_mic_on) }
|
|
70
|
-
}
|
|
71
|
-
override fun onVideoPaused() {
|
|
72
|
-
runOnUiThread { isVideoPaused = true; btnVideo.setImageResource(R.drawable.ic_video_off) }
|
|
73
|
-
}
|
|
74
|
-
override fun onVideoResumed() {
|
|
75
|
-
runOnUiThread { isVideoPaused = false; btnVideo.setImageResource(R.drawable.ic_video_on) }
|
|
76
|
-
}
|
|
77
|
-
// ... other overrides
|
|
78
|
-
})
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### 4. Custom Participant List
|
|
82
|
-
|
|
83
|
-
Hide default and build with RecyclerView:
|
|
84
|
-
|
|
85
|
-
```kotlin
|
|
86
|
-
// Hide default
|
|
87
|
-
.hideParticipantListButton(true)
|
|
88
|
-
|
|
89
|
-
// Listen for participant updates
|
|
90
|
-
callSession.addParticipantEventListener(this, object : ParticipantEventListener() {
|
|
91
|
-
override fun onParticipantListChanged(participants: List<Participant>) {
|
|
92
|
-
runOnUiThread { adapter.updateParticipants(participants) }
|
|
93
|
-
}
|
|
94
|
-
// ... other overrides
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
// Participant actions from custom UI
|
|
98
|
-
adapter.onMuteClick = { participant -> callSession.muteParticipant(participant.uid) }
|
|
99
|
-
adapter.onPauseVideoClick = { participant -> callSession.pauseParticipantVideo(participant.uid) }
|
|
100
|
-
adapter.onPinClick = { participant ->
|
|
101
|
-
if (participant.isPinned) callSession.unpinParticipant()
|
|
102
|
-
else callSession.pinParticipant(participant.uid) // per official docs (calls/android/participant-management)
|
|
103
|
-
}
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### 5. Layout Control
|
|
107
|
-
|
|
108
|
-
```kotlin
|
|
109
|
-
// Change layout programmatically
|
|
110
|
-
callSession.setLayout(LayoutType.TILE)
|
|
111
|
-
callSession.setLayout(LayoutType.SPOTLIGHT)
|
|
112
|
-
|
|
113
|
-
// Listen for layout changes
|
|
114
|
-
callSession.addLayoutListener(this, object : LayoutListener() {
|
|
115
|
-
override fun onCallLayoutChanged(layoutType: LayoutType) { /* update UI */ }
|
|
116
|
-
override fun onParticipantListVisible() {}
|
|
117
|
-
override fun onParticipantListHidden() {}
|
|
118
|
-
override fun onPictureInPictureLayoutEnabled() {}
|
|
119
|
-
override fun onPictureInPictureLayoutDisabled() {}
|
|
120
|
-
})
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Available CallSession Actions
|
|
124
|
-
|
|
125
|
-
| Action | Method |
|
|
126
|
-
|--------|--------|
|
|
127
|
-
| Mute/unmute audio | `muteAudio()`, `unmuteAudio()` |
|
|
128
|
-
| Pause/resume video | `pauseVideo()`, `resumeVideo()` |
|
|
129
|
-
| Switch camera | `switchCamera()` |
|
|
130
|
-
| Change audio output | `setAudioMode(AudioMode)` |
|
|
131
|
-
| Change layout | `setLayout(LayoutType)` |
|
|
132
|
-
| Start/stop recording | `startRecording()`, `stopRecording()` |
|
|
133
|
-
| Pin/unpin participant | `pinParticipant(uid)`, `unpinParticipant()` |
|
|
134
|
-
| Mute participant | `muteParticipant(uid)` |
|
|
135
|
-
| Pause participant video | `pauseParticipantVideo(uid)` |
|
|
136
|
-
| Leave session | `leaveSession()` |
|
|
137
|
-
| Enable/disable PiP | `enablePictureInPictureLayout()`, `disablePictureInPictureLayout()` |
|
|
138
|
-
| Set chat badge count | `setChatButtonUnreadCount(count)` |
|
|
139
|
-
|
|
140
|
-
## Gotchas
|
|
141
|
-
|
|
142
|
-
- Always use `MediaEventsListener` to sync your custom UI with actual state
|
|
143
|
-
- `runOnUiThread {}` is required for UI updates from listener callbacks
|
|
144
|
-
- `hideControlPanel(true)` hides the entire bottom bar — individual hide methods are ignored
|
|
145
|
-
- The call view container still renders video tiles even with controls hidden
|
|
146
|
-
- Use `SessionStatusListener` to handle session end and navigate away
|
|
147
|
-
|
|
148
|
-
## Sample App Reference
|
|
149
|
-
|
|
150
|
-
- `CallActivity.kt` — Default UI with `SessionStatusListener` and `ButtonClickListener`
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: event-listeners
|
|
3
|
-
description: Register all five call event listeners — SessionStatusListener, ParticipantEventListener, MediaEventsListener, ButtonClickListener, LayoutListener. Use when handling call events, session status, participant changes, media state, button clicks, or layout changes. Triggers on "event listener", "session listener", "participant listener", "media listener", "button click", "layout listener".
|
|
4
|
-
inclusion: manual
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# CometChat Calls SDK v5 — Event Listeners
|
|
8
|
-
|
|
9
|
-
## Overview
|
|
10
|
-
|
|
11
|
-
Five lifecycle-aware listeners monitor call events. All are registered on `CallSession.getInstance()` and auto-removed when the `LifecycleOwner` (Activity/Fragment) is destroyed.
|
|
12
|
-
|
|
13
|
-
## Key Imports
|
|
14
|
-
|
|
15
|
-
```kotlin
|
|
16
|
-
import com.cometchat.calls.core.CallSession
|
|
17
|
-
import com.cometchat.calls.listeners.SessionStatusListener
|
|
18
|
-
import com.cometchat.calls.listeners.ParticipantEventListener
|
|
19
|
-
import com.cometchat.calls.listeners.MediaEventsListener
|
|
20
|
-
import com.cometchat.calls.listeners.ButtonClickListener
|
|
21
|
-
import com.cometchat.calls.listeners.LayoutListener
|
|
22
|
-
import com.cometchat.calls.model.Participant
|
|
23
|
-
import com.cometchat.calls.model.AudioMode
|
|
24
|
-
import com.cometchat.calls.model.CameraFacing
|
|
25
|
-
import com.cometchat.calls.model.LayoutType
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Implementation
|
|
29
|
-
|
|
30
|
-
### 1. SessionStatusListener
|
|
31
|
-
|
|
32
|
-
```kotlin
|
|
33
|
-
val callSession = CallSession.getInstance()
|
|
34
|
-
|
|
35
|
-
callSession.addSessionStatusListener(this, object : SessionStatusListener() {
|
|
36
|
-
override fun onSessionJoined() { /* connected */ }
|
|
37
|
-
override fun onSessionLeft() { finish() }
|
|
38
|
-
override fun onSessionTimedOut() { finish() }
|
|
39
|
-
override fun onConnectionLost() { /* show reconnecting UI */ }
|
|
40
|
-
override fun onConnectionRestored() { /* hide reconnecting UI */ }
|
|
41
|
-
override fun onConnectionClosed() { finish() }
|
|
42
|
-
})
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### 2. ParticipantEventListener
|
|
46
|
-
|
|
47
|
-
```kotlin
|
|
48
|
-
callSession.addParticipantEventListener(this, object : ParticipantEventListener() {
|
|
49
|
-
override fun onParticipantJoined(participant: Participant) {}
|
|
50
|
-
override fun onParticipantLeft(participant: Participant) {}
|
|
51
|
-
override fun onParticipantListChanged(participants: List<Participant>) {}
|
|
52
|
-
override fun onParticipantAudioMuted(participant: Participant) {}
|
|
53
|
-
override fun onParticipantAudioUnmuted(participant: Participant) {}
|
|
54
|
-
override fun onParticipantVideoPaused(participant: Participant) {}
|
|
55
|
-
override fun onParticipantVideoResumed(participant: Participant) {}
|
|
56
|
-
override fun onParticipantHandRaised(participant: Participant) {}
|
|
57
|
-
override fun onParticipantHandLowered(participant: Participant) {}
|
|
58
|
-
override fun onParticipantStartedScreenShare(participant: Participant) {}
|
|
59
|
-
override fun onParticipantStoppedScreenShare(participant: Participant) {}
|
|
60
|
-
override fun onParticipantStartedRecording(participant: Participant) {}
|
|
61
|
-
override fun onParticipantStoppedRecording(participant: Participant) {}
|
|
62
|
-
override fun onDominantSpeakerChanged(participant: Participant) {}
|
|
63
|
-
})
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### 3. MediaEventsListener
|
|
67
|
-
|
|
68
|
-
```kotlin
|
|
69
|
-
callSession.addMediaEventsListener(this, object : MediaEventsListener() {
|
|
70
|
-
override fun onAudioMuted() {}
|
|
71
|
-
override fun onAudioUnMuted() {}
|
|
72
|
-
override fun onVideoPaused() {}
|
|
73
|
-
override fun onVideoResumed() {}
|
|
74
|
-
override fun onRecordingStarted() {}
|
|
75
|
-
override fun onRecordingStopped() {}
|
|
76
|
-
override fun onAudioModeChanged(audioMode: AudioMode) {}
|
|
77
|
-
override fun onCameraFacingChanged(facing: CameraFacing) {}
|
|
78
|
-
})
|
|
79
|
-
// Screen-share is observed on ParticipantEventListener (onParticipantStartedScreenShare /
|
|
80
|
-
// onParticipantStoppedScreenShare above) — NOT MediaEventsListener.
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### 4. ButtonClickListener
|
|
84
|
-
|
|
85
|
-
```kotlin
|
|
86
|
-
callSession.addButtonClickListener(this, object : ButtonClickListener() {
|
|
87
|
-
override fun onLeaveSessionButtonClicked() {}
|
|
88
|
-
override fun onToggleAudioButtonClicked() {}
|
|
89
|
-
override fun onToggleVideoButtonClicked() {}
|
|
90
|
-
override fun onSwitchCameraButtonClicked() {}
|
|
91
|
-
override fun onRaiseHandButtonClicked() {}
|
|
92
|
-
override fun onShareInviteButtonClicked() {}
|
|
93
|
-
override fun onChangeLayoutButtonClicked() {}
|
|
94
|
-
override fun onParticipantListButtonClicked() {}
|
|
95
|
-
override fun onChatButtonClicked() {}
|
|
96
|
-
override fun onRecordingToggleButtonClicked() {}
|
|
97
|
-
})
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### 5. LayoutListener
|
|
101
|
-
|
|
102
|
-
```kotlin
|
|
103
|
-
callSession.addLayoutListener(this, object : LayoutListener() {
|
|
104
|
-
override fun onCallLayoutChanged(layoutType: LayoutType) {}
|
|
105
|
-
override fun onParticipantListVisible() {}
|
|
106
|
-
override fun onParticipantListHidden() {}
|
|
107
|
-
override fun onPictureInPictureLayoutEnabled() {}
|
|
108
|
-
override fun onPictureInPictureLayoutDisabled() {}
|
|
109
|
-
})
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## Gotchas
|
|
113
|
-
|
|
114
|
-
- All listeners are **lifecycle-aware** — no manual removal needed
|
|
115
|
-
- Pass `this` (Activity/Fragment) as the first argument for lifecycle binding
|
|
116
|
-
- Register listeners **after** `joinSession()` succeeds (in the `onSuccess` callback)
|
|
117
|
-
- Button click events fire **before** the SDK's default action
|
|
118
|
-
- `Participant` object has: `uid`, `name`, `avatar`, `isAudioMuted`, `isVideoPaused`, `isPresenting`, `isPinned`, `raisedHandTimestamp`
|
|
119
|
-
- Use `runOnUiThread {}` for UI updates inside listener callbacks
|
|
120
|
-
|
|
121
|
-
## Sample App Reference
|
|
122
|
-
|
|
123
|
-
- `CallActivity.kt` — `setupCallListeners()` registers `SessionStatusListener` and `ButtonClickListener`
|