@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,296 +0,0 @@
|
|
|
1
|
-
# Group calls (meetings) on React Native
|
|
2
|
-
|
|
3
|
-
1:1 calls are most of what apps need. Group calls — multi-party meetings with 3-N participants — have a different set of failure modes: capacity limits, network bandwidth scaling, active-speaker UI, roster management, moderation (mute-all, kick), and capacity warnings. This reference covers them.
|
|
4
|
-
|
|
5
|
-
The Calls SDK supports group calls natively; the kit's `CometChatOngoingCall` component handles up to ~10 participants well. Beyond that, custom UI (`references/custom-ui.md`) becomes necessary.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Signaling architecture — meeting-message broadcast, NOT call ringing
|
|
10
|
-
|
|
11
|
-
**Critical to read first.** Group calls do NOT use the Ringing channel (`CometChat.initiateCall` → `onIncomingCallReceived`). That channel is **1:1 user calls only**. The kit broadcasts a **custom message of type `"meeting"`** to the group; receivers see a "Join meeting" card in their `<CometChatMessageList />` (kit) or need an explicit `onCustomMessageReceived` listener (custom UI).
|
|
12
|
-
|
|
13
|
-
Confirmed against kit source 2026-05-15: `node_modules/@cometchat/chat-uikit-react-native/src/calls/CometChatCallButtons/CometChatCallButtons.tsx:138-201`.
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
Caller (uid-A, member of group-X) CometChat Receivers (members of group-X)
|
|
17
|
-
│ │ │
|
|
18
|
-
│ <CometChatCallButtons group={x}> │ │
|
|
19
|
-
│ → CometChatUIKit.sendCustomMessage( │ │
|
|
20
|
-
│ CustomMessage(GUID, GROUP, │ │
|
|
21
|
-
│ "meeting", │ │
|
|
22
|
-
│ { callType, sessionId })) │ │
|
|
23
|
-
├─────────────────────────────────────────>│ │
|
|
24
|
-
│ │ onCustomMessageReceived │
|
|
25
|
-
│ ├─────────────────────────────>│ (each receiver's
|
|
26
|
-
│ │ │ MessageListener)
|
|
27
|
-
│ │ │
|
|
28
|
-
│ caller mounts <CometChatOngoingCall │ receiver taps "Join" │
|
|
29
|
-
│ sessionID={GUID} /> │ → joinSession(GUID) │
|
|
30
|
-
│ │ <─────────────────────────── │
|
|
31
|
-
│ ───── WebRTC session active (sessionId = group GUID) ───── │
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
| Channel | 1:1 user calls | Group calls |
|
|
35
|
-
|---|---|---|
|
|
36
|
-
| Signaling API | `CometChat.initiateCall(call)` | `CometChat.sendCustomMessage(meetingMessage)` |
|
|
37
|
-
| Receiver event | `CallListener.onIncomingCallReceived` | `MessageListener.onCustomMessageReceived` (category=CATEGORY_CUSTOM + type="meeting") |
|
|
38
|
-
| Session ID | server-generated unique per call | the group's GUID (persistent) |
|
|
39
|
-
| Ring/decline | yes — `acceptCall` / `rejectCall` | no — receivers join or ignore |
|
|
40
|
-
| Auto-cancel timeout | yes (45s default) | no — meeting persists in chat history |
|
|
41
|
-
|
|
42
|
-
**Implication for custom-UI receivers:** if your app doesn't render `<CometChatMessageList group={g}>` (the kit auto-renders meeting cards there), you must register your OWN `MessageListener`:
|
|
43
|
-
|
|
44
|
-
```ts
|
|
45
|
-
import { CometChat } from "@cometchat/chat-sdk-react-native";
|
|
46
|
-
|
|
47
|
-
CometChat.addMessageListener(
|
|
48
|
-
"APP_ROOT_GROUP_MEETING_LISTENER",
|
|
49
|
-
new CometChat.MessageListener({
|
|
50
|
-
onCustomMessageReceived: (msg: CometChat.CustomMessage) => {
|
|
51
|
-
if (msg.getCategory() !== CometChat.CATEGORY_CUSTOM) return;
|
|
52
|
-
if (msg.getType() !== "meeting") return;
|
|
53
|
-
const customData = msg.getCustomData() as { callType?: "audio" | "video"; sessionId?: string };
|
|
54
|
-
const sessionId = customData.sessionId ?? msg.getReceiverId();
|
|
55
|
-
const callType = customData.callType ?? "video";
|
|
56
|
-
// Show YOUR custom incoming-meeting UI (toast, badge, or full screen)
|
|
57
|
-
},
|
|
58
|
-
}),
|
|
59
|
-
);
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
**Implication for the `<CometChatIncomingCall />` overlay:** it does NOT fire for group meetings. It only listens on the 1:1 call channel. Custom UI for "incoming group meeting" must be built on top of `onCustomMessageReceived`.
|
|
63
|
-
|
|
64
|
-
This semantic surfaced on 2026-05-15 when Pixel 3 (kit-based RN) → Angular (custom UI) was tested; Angular received nothing because it only registered `addCallListener`. By design, not a bug.
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Initiating a group call
|
|
69
|
-
|
|
70
|
-
Group calls are tied to a CometChat group — the SDK uses the group's GUID as the session ID:
|
|
71
|
-
|
|
72
|
-
```ts
|
|
73
|
-
import { CometChat } from "@cometchat/chat-sdk-react-native";
|
|
74
|
-
|
|
75
|
-
const group = await CometChat.getGroup(guid);
|
|
76
|
-
|
|
77
|
-
// initiate a video call to the group
|
|
78
|
-
const call = new CometChat.Call(group.getGuid(), CometChat.CALL_TYPE.VIDEO, CometChat.RECEIVER_TYPE.GROUP);
|
|
79
|
-
const initiated = await CometChat.initiateCall(call);
|
|
80
|
-
|
|
81
|
-
// All currently-online group members receive an incoming-call notification
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
Different from 1:1: the receiver is the GROUP, not a single user. Anyone in the group can join via `acceptCall` until the call ends.
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## Capacity limits
|
|
89
|
-
|
|
90
|
-
CometChat plan-driven. Common ceilings:
|
|
91
|
-
|
|
92
|
-
| Plan | Max participants per call |
|
|
93
|
-
|---|---|
|
|
94
|
-
| Free | 5 |
|
|
95
|
-
| Developer | 10 |
|
|
96
|
-
| Production | 25 |
|
|
97
|
-
| Enterprise | configurable up to 100 |
|
|
98
|
-
|
|
99
|
-
The SDK doesn't reject calls at capacity — it just stops admitting new joiners. In v5, observe the roster via `addEventListener('onParticipantListChanged', ...)` (returns the full list, not a delta — clone `skills/event-listeners`) and surface the ceiling to the user:
|
|
100
|
-
|
|
101
|
-
```ts
|
|
102
|
-
const MAX_PARTICIPANTS = 25; // your plan's ceiling
|
|
103
|
-
const off = CometChatCalls.addEventListener(
|
|
104
|
-
"onParticipantListChanged",
|
|
105
|
-
(participants: Array<{ uid: string; name: string }>) => {
|
|
106
|
-
if (participants.length >= MAX_PARTICIPANTS) {
|
|
107
|
-
Alert.alert("Call is full", "This meeting has reached its participant limit.");
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
);
|
|
111
|
-
// cleanup: off();
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
|
|
116
|
-
## Roster — who's in the call
|
|
117
|
-
|
|
118
|
-
```ts
|
|
119
|
-
// v5: addEventListener('onParticipantListChanged', ...) — the v4 OngoingCallListener.onUserListUpdated
|
|
120
|
-
// is deprecated (clone skills/event-listeners + skills/migration-v4-to-v5 mapping).
|
|
121
|
-
const off = CometChatCalls.addEventListener(
|
|
122
|
-
"onParticipantListChanged",
|
|
123
|
-
(users: Array<{ uid: string; name: string; avatar?: string }>) => {
|
|
124
|
-
// Re-render the participant strip
|
|
125
|
-
setParticipants(users);
|
|
126
|
-
},
|
|
127
|
-
);
|
|
128
|
-
// cleanup: off();
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Fires whenever a participant joins or leaves. The roster includes the local user — filter them out of the "remote participants" UI:
|
|
132
|
-
|
|
133
|
-
```ts
|
|
134
|
-
const localUid = CometChat.getLoggedinUser()?.getUid();
|
|
135
|
-
const remoteParticipants = users.filter((u) => u.uid !== localUid);
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Active speaker detection
|
|
141
|
-
|
|
142
|
-
The SDK fires `onDominantSpeakerChanged` when the dominant audio source changes (there is no `onActiveSpeakerUpdated` event). Prefer `addEventListener` (returns an unsubscribe fn); `OngoingCallListener` is the @deprecated v4 path:
|
|
143
|
-
|
|
144
|
-
```ts
|
|
145
|
-
const off = CometChatCalls.addEventListener("onDominantSpeakerChanged", (uid: string) => {
|
|
146
|
-
setActiveSpeakerUid(uid);
|
|
147
|
-
});
|
|
148
|
-
// cleanup: off();
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
Use this to drive a "spotlight" layout — large tile for the active speaker, small thumbnails for the rest:
|
|
152
|
-
|
|
153
|
-
```tsx
|
|
154
|
-
function SpotlightLayout({ participants, activeSpeakerUid }: Props) {
|
|
155
|
-
const speaker = participants.find((p) => p.uid === activeSpeakerUid) ?? participants[0];
|
|
156
|
-
const others = participants.filter((p) => p.uid !== speaker?.uid);
|
|
157
|
-
|
|
158
|
-
return (
|
|
159
|
-
<View style={styles.spotlight}>
|
|
160
|
-
<ParticipantTile participant={speaker} large />
|
|
161
|
-
<ScrollView horizontal>
|
|
162
|
-
{others.map((p) => (
|
|
163
|
-
<ParticipantTile key={p.uid} participant={p} small />
|
|
164
|
-
))}
|
|
165
|
-
</ScrollView>
|
|
166
|
-
</View>
|
|
167
|
-
);
|
|
168
|
-
}
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
**Throttle re-layout** — `onDominantSpeakerChanged` can fire multiple times per second in a noisy room. Debounce the layout swap to ~500ms minimum, otherwise tiles jitter.
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
## Mute-all / kick / raise hand — moderator actions
|
|
176
|
-
|
|
177
|
-
These require the local user to be a group **owner** or **moderator** (CometChat group scopes):
|
|
178
|
-
|
|
179
|
-
```ts
|
|
180
|
-
import { CometChatCalls } from "@cometchat/calls-sdk-react-native";
|
|
181
|
-
|
|
182
|
-
// Mute a specific participant. The method is muteParticipant(participantId) — synchronous,
|
|
183
|
-
// returns void. There is NO muteUser()/removeUser() on the RN SDK.
|
|
184
|
-
function muteParticipant(participantId: string) {
|
|
185
|
-
CometChatCalls.muteParticipant(participantId);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// Mute everyone except local user
|
|
189
|
-
function muteAll() {
|
|
190
|
-
for (const p of participants) {
|
|
191
|
-
if (p.uid === localUid) continue;
|
|
192
|
-
CometChatCalls.muteParticipant(p.uid);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
// NOTE: there is NO "kick / remove participant" API on the RN Calls SDK.
|
|
197
|
-
// Removal must be done via the Chat SDK group management (e.g. CometChat.kickGroupMember),
|
|
198
|
-
// which removes them from the group — not a per-call eject.
|
|
199
|
-
|
|
200
|
-
// Local user "raises hand" — signals to moderator (synchronous, returns void)
|
|
201
|
-
function raiseHand() {
|
|
202
|
-
CometChatCalls.raiseHand();
|
|
203
|
-
}
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
**Permission check** — call these only if the local user has moderator scope:
|
|
207
|
-
|
|
208
|
-
```ts
|
|
209
|
-
const localScope = group.getScope(); // "admin" | "moderator" | "participant"
|
|
210
|
-
const canModerate = localScope === "admin" || localScope === "moderator";
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
Don't render mute-all/kick buttons for non-moderators.
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
## Bandwidth scaling — quality vs participant count
|
|
218
|
-
|
|
219
|
-
WebRTC mesh topology (every peer connects to every other peer) doesn't scale. CometChat uses an SFU (Selective Forwarding Unit) for group calls — your client uploads one stream, downloads N streams.
|
|
220
|
-
|
|
221
|
-
Practical bandwidth (per local user, video on):
|
|
222
|
-
|
|
223
|
-
| Participants | Upload | Download |
|
|
224
|
-
|---|---|---|
|
|
225
|
-
| 2 | 1 Mbps | 1 Mbps |
|
|
226
|
-
| 5 | 1 Mbps | 5 Mbps |
|
|
227
|
-
| 10 | 1 Mbps | 10 Mbps |
|
|
228
|
-
| 25 | 1 Mbps | 25 Mbps |
|
|
229
|
-
|
|
230
|
-
Mobile networks struggle past 10. The skill recommends:
|
|
231
|
-
|
|
232
|
-
- Cap default participant count at 10 for mobile-only audiences
|
|
233
|
-
- Auto-disable video for participants beyond the spotlight + 4 most-recent speakers (custom UI)
|
|
234
|
-
- Switch to audio-only mode if the device's battery drops below 20% (`expo-battery` or custom native module)
|
|
235
|
-
|
|
236
|
-
```ts
|
|
237
|
-
// auto-downgrade to audio-only on low battery
|
|
238
|
-
import * as Battery from "expo-battery";
|
|
239
|
-
|
|
240
|
-
const level = await Battery.getBatteryLevelAsync();
|
|
241
|
-
if (level < 0.2) {
|
|
242
|
-
CometChatCalls.pauseVideo(); // no-arg; resumeVideo() to resume (synchronous, returns void)
|
|
243
|
-
Alert.alert("Battery saver", "Video paused to save battery.");
|
|
244
|
-
}
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## Joining a group call already in progress
|
|
250
|
-
|
|
251
|
-
If User A starts the call and the group has 5 members, the other 4 receive an incoming-call notification. But what about User B who logs in DURING the call?
|
|
252
|
-
|
|
253
|
-
The CometChat backend stores active call state. A joining user can query:
|
|
254
|
-
|
|
255
|
-
```ts
|
|
256
|
-
const ongoing = await CometChat.getActiveCall();
|
|
257
|
-
if (ongoing && ongoing.getReceiverType() === CometChat.RECEIVER_TYPE.GROUP) {
|
|
258
|
-
// Show "Join meeting" button — call is in progress
|
|
259
|
-
}
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
Use this to render a "Join meeting" button on the group screen during an active call. The kit's `CometChatMessageHeader` does this automatically when the group has an active call.
|
|
263
|
-
|
|
264
|
-
---
|
|
265
|
-
|
|
266
|
-
## Anti-patterns
|
|
267
|
-
|
|
268
|
-
1. **Rendering tiles for every participant.** At 25 people, you have 25 `<RTCView />` instances; that's where RN's bridge starts choking. Render the active speaker + max 6 thumbnails.
|
|
269
|
-
2. **Updating layout on every `onDominantSpeakerChanged`.** Debounce to 500ms minimum.
|
|
270
|
-
3. **Allowing non-moderators to call `muteParticipant`.** Only owners/moderators should see the button. (Per-call "kick" doesn't exist on the RN SDK — see above.)
|
|
271
|
-
4. **No bandwidth warning.** A user on cellular joining a 10-person call burns their data plan in minutes. Show a "Switch to audio-only" prompt at the threshold.
|
|
272
|
-
5. **Forgetting to filter local user from the roster.** "Speaking with myself" tile.
|
|
273
|
-
6. **Initiating group calls without group membership check.** Non-members get "ERR_NOT_GROUP_MEMBER" silently.
|
|
274
|
-
|
|
275
|
-
---
|
|
276
|
-
|
|
277
|
-
## Verification checklist
|
|
278
|
-
|
|
279
|
-
- [ ] Active-speaker handler debounced (≥500ms)
|
|
280
|
-
- [ ] Roster filters out local user
|
|
281
|
-
- [ ] Moderator buttons hidden for non-moderator scopes
|
|
282
|
-
- [ ] Capacity error surfaces in UI when join fails
|
|
283
|
-
- [ ] Bandwidth warning at participant count threshold (configurable)
|
|
284
|
-
- [ ] Battery-saver downgrade hook (optional, recommended)
|
|
285
|
-
- [ ] `getActiveCall()` checked on group screen mount
|
|
286
|
-
- [ ] Maximum N tiles rendered (clamp + overflow indicator: "+5 more")
|
|
287
|
-
- [ ] Real-device smoke: 5+ participants on real cellular network for 5+ minutes
|
|
288
|
-
|
|
289
|
-
---
|
|
290
|
-
|
|
291
|
-
## Pointers
|
|
292
|
-
|
|
293
|
-
- `references/custom-ui.md` — building custom multi-tile layouts on the SDK
|
|
294
|
-
- `references/recording-screen-share.md` — recording group calls (server-side composition handles the layout)
|
|
295
|
-
- `references/voip-push-end-to-end.md` — push for group call invitations
|
|
296
|
-
- `cometchat-native-calls` SKILL.md — base hard rules
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
# Idle timeout on React Native
|
|
2
|
-
|
|
3
|
-
Same SDK API as web — `idleTimeoutPeriodBeforePrompt` + `idleTimeoutPeriodAfterPrompt` are SessionSettings **object fields** (ms), `onSessionTimedOut` event. RN-specific deltas are background-handling integration (call doesn't time out while the app is foregrounded; needs special handling in background) and the alert UI surface.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:** https://www.cometchat.com/docs/calls/react-native/idle-timeout
|
|
6
|
-
**Read first:** `cometchat-react-calls/references/idle-timeout.md` — settings shape + recommended timeouts per archetype + custom prompt pattern.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## SDK API
|
|
11
|
-
|
|
12
|
-
```ts
|
|
13
|
-
import { CometChatCalls } from "@cometchat/calls-sdk-react-native";
|
|
14
|
-
|
|
15
|
-
// SessionSettings OBJECT fields (ms) — NOT builder methods:
|
|
16
|
-
const settings = {
|
|
17
|
-
idleTimeoutPeriodBeforePrompt: 60_000,
|
|
18
|
-
idleTimeoutPeriodAfterPrompt: 120_000,
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
CometChatCalls.addEventListener("onSessionTimedOut", () => {
|
|
22
|
-
navigation.navigate("Home");
|
|
23
|
-
Alert.alert("Call ended", "You were inactive for too long");
|
|
24
|
-
});
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## RN-specific: app state + idle interaction
|
|
30
|
-
|
|
31
|
-
**Background gotcha:** when the user backgrounds your app while the call is active, the idle timer keeps running. From the user's perspective, they backgrounded for 30s and came back to a "you've been timed out" screen. Bad UX.
|
|
32
|
-
|
|
33
|
-
Pause the timer when the app backgrounds:
|
|
34
|
-
|
|
35
|
-
```ts
|
|
36
|
-
import { AppState } from "react-native";
|
|
37
|
-
|
|
38
|
-
useEffect(() => {
|
|
39
|
-
const sub = AppState.addEventListener("change", (state) => {
|
|
40
|
-
if (state === "active") {
|
|
41
|
-
// App came back to foreground — reset alone-since timer
|
|
42
|
-
// (Without SDK API to pause; reconfigure call settings is the workaround)
|
|
43
|
-
} else if (state === "background") {
|
|
44
|
-
// Pause your custom timer (Pattern A in the web ref)
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
return () => sub.remove();
|
|
48
|
-
}, []);
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
If you're using the kit's default idle prompt UI, this is harder — kit doesn't expose a "pause timer" API. Use Pattern B from the web ref (long SDK timeouts + custom prompt + custom timer that respects AppState).
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## Custom prompt — Alert vs Modal
|
|
56
|
-
|
|
57
|
-
`Alert.alert` is OS-native but blocks the call UI fully:
|
|
58
|
-
|
|
59
|
-
```ts
|
|
60
|
-
useEffect(() => {
|
|
61
|
-
if (!showPrompt) return;
|
|
62
|
-
const subscription = Alert.alert(
|
|
63
|
-
"Still there?",
|
|
64
|
-
"You're alone in this call. It'll end in 60 seconds.",
|
|
65
|
-
[
|
|
66
|
-
{ text: "Stay", onPress: dismiss, style: "cancel" },
|
|
67
|
-
{ text: "End now", onPress: () => CometChatCalls.leaveSession(), style: "destructive" },
|
|
68
|
-
],
|
|
69
|
-
{ cancelable: false },
|
|
70
|
-
);
|
|
71
|
-
}, [showPrompt]);
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
`Modal` lets you keep the call surface visible:
|
|
75
|
-
|
|
76
|
-
```tsx
|
|
77
|
-
<Modal
|
|
78
|
-
visible={showPrompt}
|
|
79
|
-
transparent
|
|
80
|
-
animationType="fade"
|
|
81
|
-
onRequestClose={dismiss}
|
|
82
|
-
>
|
|
83
|
-
<View style={styles.overlay}>
|
|
84
|
-
<View style={styles.dialog} accessible accessibilityRole="alert">
|
|
85
|
-
<Text style={styles.title}>Still there?</Text>
|
|
86
|
-
<Text>You're alone in this call. It'll end in 60 seconds.</Text>
|
|
87
|
-
<View style={styles.row}>
|
|
88
|
-
<TouchableOpacity onPress={dismiss}><Text>Stay</Text></TouchableOpacity>
|
|
89
|
-
<TouchableOpacity onPress={() => CometChatCalls.leaveSession()}>
|
|
90
|
-
<Text style={{ color: "red" }}>End now</Text>
|
|
91
|
-
</TouchableOpacity>
|
|
92
|
-
</View>
|
|
93
|
-
</View>
|
|
94
|
-
</View>
|
|
95
|
-
</Modal>
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
`accessibilityRole="alert"` is the RN equivalent of web's `role="alertdialog"`. TalkBack / VoiceOver pause to announce.
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## Anti-patterns
|
|
103
|
-
|
|
104
|
-
Web sister reference rules apply, plus RN-specific:
|
|
105
|
-
|
|
106
|
-
1. **Idle timer running during background.** User backgrounds, comes back to "timed out." Pause via AppState listener.
|
|
107
|
-
2. **Using `Alert.alert` inside `useEffect`.** Blocks the call surface; can stack multiple alerts on rapid state changes. Use `Modal` for in-call UI.
|
|
108
|
-
3. **Forgetting `Modal` `accessible accessibilityRole="alert"`.** Screen readers miss the announcement.
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## Verification checklist
|
|
113
|
-
|
|
114
|
-
- [ ] CallSettings sets both idle periods
|
|
115
|
-
- [ ] `onSessionTimedOut` navigates user away cleanly
|
|
116
|
-
- [ ] Custom prompt uses `Modal` with `accessibilityRole="alert"`, OR `Alert.alert` for OS-native
|
|
117
|
-
- [ ] AppState listener pauses custom timer on `background`
|
|
118
|
-
- [ ] Real-device smoke: backgroound app for 30s, return → call still active (timer paused correctly)
|
|
119
|
-
- [ ] Real-device smoke: 2 devices, hangup from one → timer fires on the other after configured delay
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## Pointers
|
|
124
|
-
|
|
125
|
-
- `cometchat-react-calls/references/idle-timeout.md` — sister reference (settings, archetype timeouts, custom prompt pattern)
|
|
126
|
-
- `cometchat-native-calls` SKILL.md
|
|
127
|
-
- `references/voip-push-end-to-end.md` — interaction with VoIP push (background-mode call activation)
|
|
128
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/react-native/idle-timeout
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
# In-call chat on React Native
|
|
2
|
-
|
|
3
|
-
Same SDK API as web. RN-specific: BottomSheet panel UX (matches mobile patterns) + `Keyboard.dismiss()` lifecycle awareness when entering call.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:** https://www.cometchat.com/docs/calls/react-native/in-call-chat
|
|
6
|
-
**Read first:** `cometchat-react-calls/references/in-call-chat.md` — group-as-session architecture + UX patterns + the four anti-patterns.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## SDK API
|
|
11
|
-
|
|
12
|
-
```ts
|
|
13
|
-
import { CometChatCalls } from "@cometchat/calls-sdk-react-native";
|
|
14
|
-
|
|
15
|
-
// SessionSettings OBJECT field, not a builder method:
|
|
16
|
-
const settings = {
|
|
17
|
-
hideChatButton: false,
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
// addEventListener returns the unsubscribe fn — call it on cleanup.
|
|
21
|
-
const off = CometChatCalls.addEventListener("onChatButtonClicked", () => setOpen(true));
|
|
22
|
-
// later: off();
|
|
23
|
-
CometChatCalls.setChatButtonUnreadCount(5);
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Same as web. The group-as-session pattern (using a group with GUID == sessionID) carries over.
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## BottomSheet panel — RN canonical UX
|
|
31
|
-
|
|
32
|
-
```tsx
|
|
33
|
-
import BottomSheet, { BottomSheetView } from "@gorhom/bottom-sheet";
|
|
34
|
-
import { useRef, useEffect, useState } from "react";
|
|
35
|
-
import { View, TextInput, TouchableOpacity, Text } from "react-native";
|
|
36
|
-
import { CometChat } from "@cometchat/chat-sdk-react-native";
|
|
37
|
-
import { CometChatCalls } from "@cometchat/calls-sdk-react-native";
|
|
38
|
-
import {
|
|
39
|
-
CometChatMessageList,
|
|
40
|
-
CometChatMessageComposer,
|
|
41
|
-
} from "@cometchat/chat-uikit-react-native";
|
|
42
|
-
|
|
43
|
-
interface Props { sessionId: string; }
|
|
44
|
-
|
|
45
|
-
function InCallChatSheet({ sessionId }: Props) {
|
|
46
|
-
const sheetRef = useRef<BottomSheet>(null);
|
|
47
|
-
const [group, setGroup] = useState<CometChat.Group>();
|
|
48
|
-
const [unread, setUnread] = useState(0);
|
|
49
|
-
|
|
50
|
-
useEffect(() => {
|
|
51
|
-
const handler = () => sheetRef.current?.snapToIndex(1);
|
|
52
|
-
const off = CometChatCalls.addEventListener("onChatButtonClicked", handler);
|
|
53
|
-
return () => off();
|
|
54
|
-
}, []);
|
|
55
|
-
|
|
56
|
-
useEffect(() => {
|
|
57
|
-
CometChat.getGroup(sessionId).then(setGroup).catch(() => {});
|
|
58
|
-
}, [sessionId]);
|
|
59
|
-
|
|
60
|
-
// Track unread + clear on open (same logic as web; cite sister)
|
|
61
|
-
// ...
|
|
62
|
-
|
|
63
|
-
if (!group) return null;
|
|
64
|
-
|
|
65
|
-
return (
|
|
66
|
-
<BottomSheet
|
|
67
|
-
ref={sheetRef}
|
|
68
|
-
snapPoints={["10%", "75%"]}
|
|
69
|
-
index={-1} // start closed
|
|
70
|
-
onChange={(i) => {
|
|
71
|
-
if (i >= 1) {
|
|
72
|
-
setUnread(0);
|
|
73
|
-
CometChatCalls.setChatButtonUnreadCount(0);
|
|
74
|
-
}
|
|
75
|
-
}}
|
|
76
|
-
>
|
|
77
|
-
<BottomSheetView style={{ flex: 1 }}>
|
|
78
|
-
{/* flex-1 + minHeight:0 wrap pattern still applies on RN */}
|
|
79
|
-
<View style={{ flex: 1, minHeight: 0 }}>
|
|
80
|
-
<CometChatMessageList group={group} hideReplyInThreadOption />
|
|
81
|
-
</View>
|
|
82
|
-
<CometChatMessageComposer group={group} />
|
|
83
|
-
</BottomSheetView>
|
|
84
|
-
</BottomSheet>
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
`@gorhom/bottom-sheet` is already a peer dep of the kit when RN calls are integrated (via `react-native-gesture-handler` + `react-native-reanimated`).
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## Keyboard handling
|
|
94
|
-
|
|
95
|
-
When the chat sheet opens, the user types — keyboard appears, pushes call surface up. Two options:
|
|
96
|
-
|
|
97
|
-
### A — Use `KeyboardAvoidingView`
|
|
98
|
-
|
|
99
|
-
```tsx
|
|
100
|
-
<KeyboardAvoidingView
|
|
101
|
-
behavior={Platform.OS === "ios" ? "padding" : "height"}
|
|
102
|
-
style={{ flex: 1 }}
|
|
103
|
-
>
|
|
104
|
-
<BottomSheet ...>
|
|
105
|
-
{/* ... */}
|
|
106
|
-
</BottomSheet>
|
|
107
|
-
</KeyboardAvoidingView>
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
### B — Use `keyboardVerticalOffset` from BottomSheet
|
|
111
|
-
|
|
112
|
-
Most BottomSheet libs have explicit keyboard handling. `@gorhom/bottom-sheet` v4+ ships `keyboardBehavior` and `keyboardBlurBehavior` options.
|
|
113
|
-
|
|
114
|
-
Critical: ensure the call's WebRTC video doesn't reflow when keyboard opens (already covered by `resizeToAvoidBottomInset: false` rule for iOS; on Android use `android:windowSoftInputMode="adjustNothing"` in the manifest for the call activity).
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## Anti-patterns
|
|
119
|
-
|
|
120
|
-
Web sister rules apply, plus RN-specific:
|
|
121
|
-
|
|
122
|
-
1. **Default `windowSoftInputMode="adjustResize"`** on Android. Keyboard appears, the entire screen resizes — call's WebRTC view squishes, looks broken.
|
|
123
|
-
2. **`@gorhom/bottom-sheet` outside `GestureHandlerRootView`.** Sheet doesn't respond to drag gestures. Wrap your app's root in `GestureHandlerRootView` (also a kit requirement; see `cometchat-native-calls` SKILL.md).
|
|
124
|
-
3. **Chat sheet fullscreen by default.** Hides the call view; participants can't see who's talking. Default to ~30% snap, expand on demand.
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## Verification checklist
|
|
129
|
-
|
|
130
|
-
- [ ] `@gorhom/bottom-sheet` in deps
|
|
131
|
-
- [ ] `GestureHandlerRootView` wraps the app
|
|
132
|
-
- [ ] BottomSheet has 2+ snap points (peek + expanded)
|
|
133
|
-
- [ ] AndroidManifest: call activity has `windowSoftInputMode="adjustNothing"` or `"adjustPan"`
|
|
134
|
-
- [ ] iOS Scaffold: `resizeToAvoidBottomInset: false` (RN's equivalent: KeyboardAvoidingView with right behavior)
|
|
135
|
-
- [ ] Real-device smoke: keyboard opens during chat, call view doesn't reflow
|
|
136
|
-
- [ ] Real-device smoke: 2 devices in call, send message from one → badge appears in other
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Pointers
|
|
141
|
-
|
|
142
|
-
- `cometchat-react-calls/references/in-call-chat.md` — sister web reference (group-as-session pattern)
|
|
143
|
-
- `cometchat-native-calls` SKILL.md — the seven hard rules
|
|
144
|
-
- `cometchat-android-v5-calls/references/in-call-chat.md` — Android V5 sibling
|
|
145
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/react-native/in-call-chat
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
# Calls SDK v4 → v5 migration (React Native)
|
|
2
|
-
|
|
3
|
-
`@cometchat/calls-sdk-react-native@5` is a drop-in replacement for v4. Same migration shape as web; RN deltas focus on the native modules that calls SDK depends on.
|
|
4
|
-
|
|
5
|
-
**Read first:** `cometchat-react-calls/references/migration-v4-to-v5.md` — canonical step-by-step (init, login, settings, events, methods).
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Step 1 — Bump the package + native modules
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npm install @cometchat/calls-sdk-react-native@5
|
|
13
|
-
cd ios && pod install
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
If you upgraded `react-native-webrtc` along with the calls SDK, run:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
# iOS
|
|
20
|
-
cd ios && rm -rf Pods Podfile.lock && pod install
|
|
21
|
-
# Android (Gradle handles it on next build)
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Step 2 — Verify native dependencies are still valid
|
|
27
|
-
|
|
28
|
-
Calls SDK v5 doesn't change the native module list, but versions matter. Check `package.json`:
|
|
29
|
-
|
|
30
|
-
```json
|
|
31
|
-
{
|
|
32
|
-
"dependencies": {
|
|
33
|
-
"@cometchat/calls-sdk-react-native": "^5.0.0",
|
|
34
|
-
"react-native-webrtc": ">=124",
|
|
35
|
-
"react-native-incall-manager": ">=4",
|
|
36
|
-
"react-native-callstats": ">=3",
|
|
37
|
-
"@react-native-community/netinfo": "*"
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
If any of these are stale, calls may fail silently with WebRTC negotiation errors.
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## Migration steps (same as web)
|
|
47
|
-
|
|
48
|
-
1. Migrate init to plain object
|
|
49
|
-
2. Add `CometChatCalls.login(uid, authKey)` after `CometChat.login` (UID-based; the auth-token form is `CometChatCalls.loginWithAuthToken(authToken)` — verified against calls-sdk-react-native `skills/setup` + `skills/migration-v4-to-v5`)
|
|
50
|
-
3. Replace `CallSettingsBuilder` with plain `sessionSettings` object — **watch inverted booleans** (`show*` → `hide*`)
|
|
51
|
-
4. Replace `OngoingCallListener` with `addEventListener` calls
|
|
52
|
-
5. Rename methods: `endSession` → `leaveSession`; `setMode('DEFAULT')` → the `sessionSettings.layout: 'SIDEBAR'` prop (DEFAULT maps to SIDEBAR). An imperative `CometChatCalls.setLayout('TILE' | 'SIDEBAR' | 'SPOTLIGHT')` does exist for runtime layout changes (calls-sdk-react-native `skills/custom-ui`). **RN has no imperative `joinSession`/`startSession`** — on RN the session is the declarative `<CometChatCalls.Component callToken={...} />` primitive (mint the token with `CometChatCalls.generateToken(sessionId)` and render the Component). There is no start/join method to call.
|
|
53
|
-
6. Cleanup: `addEventListener` returns an unsubscribe — call it on unmount
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Verification checklist
|
|
58
|
-
|
|
59
|
-
- [ ] All canonical steps from `cometchat-react-calls/references/migration-v4-to-v5.md`
|
|
60
|
-
- [ ] `pod install` re-run after upgrade
|
|
61
|
-
- [ ] Native modules at compatible versions
|
|
62
|
-
- [ ] Real-device test: 2 phones (iOS + Android), incoming call, mute, screen-share, end
|
|
63
|
-
- [ ] CallKeep + VoipPushNotification still register tokens correctly
|
|
64
|
-
- [ ] Background incoming call (recipient app killed) still rings
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Pointers
|
|
69
|
-
|
|
70
|
-
- Canonical migration: `cometchat-react-calls/references/migration-v4-to-v5.md`
|
|
71
|
-
- `cometchat-native-calls/SKILL.md` — RN seven hard rules
|
|
72
|
-
- https://www.cometchat.com/docs/calls/react-native/migration-guide-v5
|