@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,124 +0,0 @@
|
|
|
1
|
-
# Device management on Flutter V5 (GetX)
|
|
2
|
-
|
|
3
|
-
The Calls SDK exposes basic camera switching (`switchCamera()`); audio device management goes through platform-channel bridges to native AVAudioSession (iOS) / AudioManager (Android). For most apps, the kit's default control panel handles this; custom UI uses `flutter_callkit_incoming` or platform channels.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:** https://www.cometchat.com/docs/calls/flutter/device-management
|
|
6
|
-
**Read first:** `cometchat-react-calls/references/device-management.md` — UX patterns; the SDK conceptual model carries over.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## SDK API
|
|
11
|
-
|
|
12
|
-
Camera switching and audio-output selection are **instance methods on the `CallSession` singleton** (`cometchat_calls_sdk-5.0.2` `src/call_session.dart`). There is no `setSpeakerEnabled` in 5.x — audio output is chosen via `setAudioModeType(AudioMode)` where `AudioMode { speaker, earpiece, bluetooth }` (`src/enums/audio_mode.dart`).
|
|
13
|
-
|
|
14
|
-
```dart
|
|
15
|
-
import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';
|
|
16
|
-
|
|
17
|
-
// Camera flip
|
|
18
|
-
CallSession.getInstance()?.switchCamera(); // call_session.dart:205
|
|
19
|
-
|
|
20
|
-
// Audio output (speaker / earpiece / bluetooth)
|
|
21
|
-
CallSession.getInstance()?.setAudioModeType(AudioMode.speaker); // call_session.dart:381
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Audio routing — flutter_callkit_incoming
|
|
27
|
-
|
|
28
|
-
For Bluetooth / AirPods routing, integrate `flutter_callkit_incoming` which wraps native CallKit on iOS and ConnectionService on Android. It exposes the audio route picker:
|
|
29
|
-
|
|
30
|
-
```dart
|
|
31
|
-
import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart';
|
|
32
|
-
|
|
33
|
-
// Toggle speaker
|
|
34
|
-
await FlutterCallkitIncoming.setAudioRoute(AudioRoute.speaker);
|
|
35
|
-
await FlutterCallkitIncoming.setAudioRoute(AudioRoute.earpiece);
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
For deep AirPods / Bluetooth control, the recommended pattern is letting the OS handle it via the system audio picker (CallKit on iOS, ConnectionService on Android both expose audio route control natively).
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Camera flip button
|
|
43
|
-
|
|
44
|
-
```dart
|
|
45
|
-
class CameraFlipButton extends StatelessWidget {
|
|
46
|
-
const CameraFlipButton({super.key});
|
|
47
|
-
|
|
48
|
-
@override
|
|
49
|
-
Widget build(BuildContext context) {
|
|
50
|
-
return IconButton(
|
|
51
|
-
icon: const Icon(Icons.flip_camera_ios),
|
|
52
|
-
onPressed: () {
|
|
53
|
-
CallSession.getInstance()?.switchCamera();
|
|
54
|
-
SemanticsService.announce('Camera flipped', TextDirection.ltr);
|
|
55
|
-
},
|
|
56
|
-
tooltip: 'Flip camera',
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## Speaker toggle
|
|
65
|
-
|
|
66
|
-
```dart
|
|
67
|
-
class SpeakerToggle extends GetView<CallController> {
|
|
68
|
-
const SpeakerToggle({super.key});
|
|
69
|
-
|
|
70
|
-
@override
|
|
71
|
-
Widget build(BuildContext context) {
|
|
72
|
-
return Obx(() => IconButton(
|
|
73
|
-
icon: Icon(controller.speakerOn.value
|
|
74
|
-
? Icons.volume_up
|
|
75
|
-
: Icons.hearing),
|
|
76
|
-
onPressed: () {
|
|
77
|
-
controller.toggleSpeaker();
|
|
78
|
-
},
|
|
79
|
-
tooltip: controller.speakerOn.value ? 'Switch to earpiece' : 'Switch to speaker',
|
|
80
|
-
));
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
class CallController extends GetxController {
|
|
85
|
-
final speakerOn = false.obs;
|
|
86
|
-
|
|
87
|
-
void toggleSpeaker() {
|
|
88
|
-
speakerOn.value = !speakerOn.value;
|
|
89
|
-
CallSession.getInstance()?.setAudioModeType(
|
|
90
|
-
speakerOn.value ? AudioMode.speaker : AudioMode.earpiece,
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Anti-patterns
|
|
99
|
-
|
|
100
|
-
Web sister rules apply, plus Flutter-specific:
|
|
101
|
-
|
|
102
|
-
1. **Custom UI for audio device selection** instead of letting CallKit / ConnectionService handle it. System picker is what users expect.
|
|
103
|
-
2. **Calling `switchCamera` inline without await on the SDK promise.** Some platforms queue the switch; back-to-back calls drop.
|
|
104
|
-
3. **Forgetting `flutter_callkit_incoming.setAudioRoute` doesn't work without an active call session.** Call must be live.
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
## Verification checklist
|
|
109
|
-
|
|
110
|
-
- [ ] Camera flip wired to `CallSession.getInstance()?.switchCamera()`
|
|
111
|
-
- [ ] Speaker toggle uses `CallSession.getInstance()?.setAudioModeType(AudioMode.speaker | .earpiece)`
|
|
112
|
-
- [ ] System audio route picker (CallKit / ConnectionService) preferred for Bluetooth
|
|
113
|
-
- [ ] Real-device smoke: speaker toggle works
|
|
114
|
-
- [ ] Real-device smoke: camera flip works
|
|
115
|
-
- [ ] AirPods smoke: connecting AirPods routes audio (CallKit/ConnectionService handles)
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
## Pointers
|
|
120
|
-
|
|
121
|
-
- `cometchat-react-calls/references/device-management.md` — sister web reference (UX shape)
|
|
122
|
-
- `cometchat-flutter-v5-calls` SKILL.md — V5 hard rules
|
|
123
|
-
- `references/voip-push-end-to-end.md` (if you have it) — flutter_callkit_incoming setup
|
|
124
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/flutter/device-management
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
# Group calls — broadcast meeting pattern (Flutter V5)
|
|
2
|
-
|
|
3
|
-
Group calls use a **different signaling channel than 1:1 user calls**. The Ringing flow (`CometChat.initiateCall` → `onIncomingCallReceived` on peer) is **1:1 user only**. For groups, broadcast a **custom message of type `"meeting"`** to the group; receivers handle it via `MessageListener.onCustomMessageReceived` and join the WebRTC session whose `sessionId = group GUID`.
|
|
4
|
-
|
|
5
|
-
By-design signaling semantic — same across all CometChat kits.
|
|
6
|
-
|
|
7
|
-
**Canonical docs:** https://www.cometchat.com/docs/calls/flutter/group-calls
|
|
8
|
-
|
|
9
|
-
V5 specifics: Flutter V5 uses `cometchat_chat_uikit ^5.2` (GetX chat kit) + the **raw `cometchat_calls_sdk ^5.0.2`** (direct dependency) — you build a custom meeting/ongoing-call surface. The signaling semantic below is identical to Flutter V6.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Architecture
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
Caller (uidA, member of groupX) CometChat Receivers (members of groupX)
|
|
17
|
-
│ │ │
|
|
18
|
-
│ sendCustomMessage(GUID, GROUP, │ │
|
|
19
|
-
│ "meeting", { callType, sessionId }) │ │
|
|
20
|
-
├──────────────────────────────────────>│ │
|
|
21
|
-
│ │ onCustomMessageReceived │
|
|
22
|
-
│ ├─────────────────────────────>│
|
|
23
|
-
│ caller pushes OngoingCallScreen │ receiver taps Join │
|
|
24
|
-
│ with sessionID = groupGuid │ → CometChatCalls │
|
|
25
|
-
│ │ .joinSession(...) │
|
|
26
|
-
├──────────────────────────────────────>│ <─────────────────────────── │
|
|
27
|
-
│ ───── WebRTC session active (sessionId = group GUID) ─────│
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
| Channel | 1:1 user calls | Group calls |
|
|
31
|
-
|---|---|---|
|
|
32
|
-
| Signaling | `CometChat.initiateCall(call, callback)` | `CometChat.sendCustomMessage(message, callback)` (type="meeting") |
|
|
33
|
-
| Receiver event | `CallListener.onIncomingCallReceived` | `MessageListener.onCustomMessageReceived` |
|
|
34
|
-
| Session ID | server-generated unique | group's GUID (persistent) |
|
|
35
|
-
| Ring/decline | yes — `acceptCall` / `rejectCall` | no — receivers join or ignore |
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Hard rules
|
|
40
|
-
|
|
41
|
-
1. **Group calls broadcast a custom message; they do NOT use the call listener.** Add a `MessageListener`.
|
|
42
|
-
2. **Session ID = group GUID.** Persistent.
|
|
43
|
-
3. **`CometChatCalls.init()` must complete AFTER `CometChatUIKit.init()`** (CALLS_INIT_AFTER_CHAT_INIT rule from SKILL.md) — same as 1:1.
|
|
44
|
-
4. **No `CometChat.endCall` for groups.** Use `CallSession.getInstance()?.leaveSession()` only.
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Caller side — custom UI
|
|
49
|
-
|
|
50
|
-
```dart
|
|
51
|
-
import 'package:flutter_chat_sdk/flutter_chat_sdk.dart';
|
|
52
|
-
|
|
53
|
-
Future<void> startGroupCall(String groupGuid, String callType) async {
|
|
54
|
-
final sessionId = groupGuid;
|
|
55
|
-
final customData = {'callType': callType, 'sessionId': sessionId};
|
|
56
|
-
|
|
57
|
-
final meetingMessage = CustomMessage(
|
|
58
|
-
receiverUid: groupGuid,
|
|
59
|
-
receiverType: CometChatReceiverType.group,
|
|
60
|
-
customData: customData,
|
|
61
|
-
type: 'meeting',
|
|
62
|
-
)
|
|
63
|
-
..category = MessageCategoryConstants.custom
|
|
64
|
-
..metadata = {
|
|
65
|
-
'incrementUnreadCount': true,
|
|
66
|
-
'pushNotification': 'meeting',
|
|
67
|
-
...customData,
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
await CometChat.sendCustomMessage(
|
|
71
|
-
meetingMessage,
|
|
72
|
-
onSuccess: (msg) {
|
|
73
|
-
// Navigate to OngoingCall screen with sessionId
|
|
74
|
-
Navigator.of(context).pushNamed('/ongoing-call', arguments: {
|
|
75
|
-
'sessionId': sessionId,
|
|
76
|
-
'callType': callType,
|
|
77
|
-
});
|
|
78
|
-
},
|
|
79
|
-
onError: (e) {/* surface error */},
|
|
80
|
-
);
|
|
81
|
-
}
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Receiver side — custom UI
|
|
87
|
-
|
|
88
|
-
```dart
|
|
89
|
-
import 'package:flutter_chat_sdk/flutter_chat_sdk.dart';
|
|
90
|
-
|
|
91
|
-
const groupMeetingListenerId = 'APP_ROOT_GROUP_MEETING_LISTENER';
|
|
92
|
-
|
|
93
|
-
void registerGroupMeetingListener() {
|
|
94
|
-
CometChat.addMessageListener(
|
|
95
|
-
groupMeetingListenerId,
|
|
96
|
-
MessageListener(
|
|
97
|
-
onCustomMessageReceived: (msg) {
|
|
98
|
-
if (msg.category != MessageCategoryConstants.custom) return;
|
|
99
|
-
if (msg.type != 'meeting') return;
|
|
100
|
-
|
|
101
|
-
final customData = msg.customData ?? {};
|
|
102
|
-
final sessionId = customData['sessionId'] as String? ?? msg.receiverUid;
|
|
103
|
-
final callType = customData['callType'] as String? ?? 'video';
|
|
104
|
-
final fromUid = msg.sender?.uid;
|
|
105
|
-
final groupGuid = msg.receiverUid;
|
|
106
|
-
|
|
107
|
-
// Update your state (GetX controller, Provider, Riverpod):
|
|
108
|
-
// Get.find<CallController>().receiveIncomingMeeting(
|
|
109
|
-
// sessionId: sessionId, callType: callType, fromUid: fromUid, groupGuid: groupGuid,
|
|
110
|
-
// );
|
|
111
|
-
},
|
|
112
|
-
),
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
void unregisterGroupMeetingListener() {
|
|
117
|
-
CometChat.removeMessageListener(groupMeetingListenerId);
|
|
118
|
-
}
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
Wire register in `initState` / GetX controller `onInit`, unregister in `dispose` / `onClose`. Register AFTER `CometChatUIKit.login()` succeeds.
|
|
122
|
-
|
|
123
|
-
On Join tap, join the WebRTC session with the group GUID as the sessionId (5.x raw SDK):
|
|
124
|
-
|
|
125
|
-
```dart
|
|
126
|
-
CometChatCalls.joinSession( // cometchatcalls.dart:735
|
|
127
|
-
sessionId: groupGuid, // sessionId == group GUID
|
|
128
|
-
sessionSettings: (SessionSettingsBuilder()..setTitle('Meeting')).build(),
|
|
129
|
-
onSuccess: (Widget? widget) { /* render via SizedBox.expand */ },
|
|
130
|
-
onError: (CometChatCallsException e) { /* surface */ },
|
|
131
|
-
);
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
> **Legacy 4.x-kit alternative (incompatible with the 5.x calls SDK).** The old `cometchat_calls_uikit` path used `CometChatCallButtons(group: group)` for the caller, auto-rendered the meeting card in `CometChatMessageList(group: group)`, and joined via `CometChatUIKitCalls.startSession`. Those widgets are 4.x-bound and cannot run against `cometchat_calls_sdk ^5.0.2` — replicate with the custom-message + `joinSession` flow above.
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## Edge cases
|
|
139
|
-
|
|
140
|
-
### Late joining
|
|
141
|
-
|
|
142
|
-
Meeting persists in chat. Tap any time to join the live session.
|
|
143
|
-
|
|
144
|
-
### Push notifications (FCM Android, APNs / VoIP iOS)
|
|
145
|
-
|
|
146
|
-
Meeting `CustomMessage.metadata.pushNotification = "meeting"` — delivered as regular FCM/APNs notification. To get CallKit (iOS) or ConnectionService (Android) ringing for meetings, intercept the push payload and route to `flutter_callkit_incoming` manually. Not auto-wired.
|
|
147
|
-
|
|
148
|
-
### `navigatorKey` requirement (V5 too)
|
|
149
|
-
|
|
150
|
-
Set `MaterialApp.navigatorKey` to a plain `GlobalKey<NavigatorState>` so the meeting flow can navigate from anywhere — same requirement as 1:1 (rule 1.7 in SKILL.md). (Do NOT use `CallNavigationContext.navigatorKey` — that is a 4.x-kit symbol.)
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## Anti-patterns
|
|
155
|
-
|
|
156
|
-
1. **Only `CometChat.addCallListener` registered, expecting group calls to ring.** Add `addMessageListener` too.
|
|
157
|
-
2. **`CometChat.endCall(sessionId)` after a group hangup.** No call entity exists.
|
|
158
|
-
3. **Treating sessionId as ephemeral.** It IS the group's GUID.
|
|
159
|
-
4. **Registering `MessageListener` before login.** Listeners registered pre-login are silently dropped. Wire AFTER `CometChatUIKit.login` completes.
|
|
160
|
-
5. **Skipping the `navigatorKey` for the meeting flow.** Same context-navigation requirement as 1:1.
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## Verification checklist
|
|
165
|
-
|
|
166
|
-
- [ ] Caller: `CometChat.sendCustomMessage` called with `type: 'meeting'`, `category: MessageCategoryConstants.custom`, `customData: {callType, sessionId}`, `metadata: { pushNotification: 'meeting' }`
|
|
167
|
-
- [ ] Receiver: `CometChat.addMessageListener` registered with category+type filter, AFTER login
|
|
168
|
-
- [ ] Join action calls `CometChatCalls.joinSession(sessionId: groupGuid, ...)`
|
|
169
|
-
- [ ] `MaterialApp.navigatorKey` is a `GlobalKey<NavigatorState>`
|
|
170
|
-
- [ ] On hangup: `CallSession.getInstance()?.leaveSession()` only (no `CometChat.endCall`)
|
|
171
|
-
- [ ] Late-joining tested
|
|
172
|
-
- [ ] Push notifications fire for offline members
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## Pointers
|
|
177
|
-
|
|
178
|
-
- `ringing-integration.md` — 1:1 user calls (different signaling channel)
|
|
179
|
-
- `cometchat-flutter-v5-calls/SKILL.md` — V5 hard rules (raw `cometchat_calls_sdk ^5.0.2`, Jetifier, etc.)
|
|
180
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/flutter/group-calls
|
|
181
|
-
- Cross-platform reference (semantic ground-truth): `cometchat-react-calls/references/group-calls.md`
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# Idle timeout on Flutter V5 (GetX-based, 5.x Calls SDK)
|
|
2
|
-
|
|
3
|
-
Flutter-specific: `SessionSettingsBuilder` setter API + `showDialog` / overlay for the prompt.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:** https://www.cometchat.com/docs/calls/flutter/idle-timeout
|
|
6
|
-
**Read first:** `cometchat-react-calls/references/idle-timeout.md` — settings + archetype timeouts.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## SDK API
|
|
11
|
-
|
|
12
|
-
In 5.x the idle period is a single value (in **seconds**) on `SessionSettingsBuilder` — `setIdleTimeoutPeriod(int timeoutSeconds)` (`cometchat_calls_sdk-5.0.2` `src/builder/session_settings.dart:185`). There is no separate before/after-prompt split.
|
|
13
|
-
|
|
14
|
-
```dart
|
|
15
|
-
import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';
|
|
16
|
-
|
|
17
|
-
final settings = (SessionSettingsBuilder()
|
|
18
|
-
..setIdleTimeoutPeriod(180)) // seconds — session_settings.dart:185
|
|
19
|
-
.build();
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Listener — implement `SessionStatusListeners` on the GetX controller (cf. `references/raise-hand.md`); `onSessionTimedOut` is `src/listener/session_status_listeners.dart:22`:
|
|
23
|
-
|
|
24
|
-
```dart
|
|
25
|
-
class CallController extends GetxController implements SessionStatusListeners {
|
|
26
|
-
@override
|
|
27
|
-
void onSessionTimedOut() {
|
|
28
|
-
Get.snackbar('Call ended', 'You were inactive for too long');
|
|
29
|
-
Get.until((route) => route.isFirst); // pop to home
|
|
30
|
-
}
|
|
31
|
-
// ... other SessionStatusListeners handlers (no-ops or pass-through)
|
|
32
|
-
}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## Custom prompt — showDialog
|
|
38
|
-
|
|
39
|
-
```dart
|
|
40
|
-
Future<void> showIdleTimeoutPrompt(BuildContext context) async {
|
|
41
|
-
final result = await showDialog<String>(
|
|
42
|
-
context: context,
|
|
43
|
-
barrierDismissible: false, // prevent tap-outside dismiss
|
|
44
|
-
builder: (ctx) => AlertDialog(
|
|
45
|
-
title: const Text('Still there?'),
|
|
46
|
-
content: const Text("You're alone in this call. It'll end in 60 seconds."),
|
|
47
|
-
actions: [
|
|
48
|
-
TextButton(
|
|
49
|
-
onPressed: () => Navigator.pop(ctx, 'end'),
|
|
50
|
-
child: const Text('End now', style: TextStyle(color: Colors.red)),
|
|
51
|
-
),
|
|
52
|
-
FilledButton(
|
|
53
|
-
onPressed: () => Navigator.pop(ctx, 'stay'),
|
|
54
|
-
child: const Text('Stay'),
|
|
55
|
-
),
|
|
56
|
-
],
|
|
57
|
-
),
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
if (result == 'end') {
|
|
61
|
-
// 5.x teardown: the CallSession INSTANCE leaveSession() (call_session.dart:272).
|
|
62
|
-
// The static CometChatCalls.endSession exists but is @Deprecated.
|
|
63
|
-
await CallSession.getInstance()?.leaveSession();
|
|
64
|
-
} else {
|
|
65
|
-
// 'stay' or null — reset custom timer
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
`barrierDismissible: false` prevents accidental dismiss; user must explicitly pick.
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Anti-patterns
|
|
75
|
-
|
|
76
|
-
Web sister rules apply, plus Flutter-specific:
|
|
77
|
-
|
|
78
|
-
1. **`Get.dialog` from inside a non-context method** without a captured BuildContext. Dialog opens but has no theme/context — looks broken.
|
|
79
|
-
2. **`Navigator.pop` with no result.** Subsequent code can't differentiate stay vs end. Always pass result.
|
|
80
|
-
3. **Showing prompt while ongoing-call view is being disposed.** Race condition. Check `mounted` before showing.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Verification checklist
|
|
85
|
-
|
|
86
|
-
- [ ] `SessionSettingsBuilder()..setIdleTimeoutPeriod(seconds)` (single value, in seconds)
|
|
87
|
-
- [ ] `onSessionTimedOut` snackbar + nav cleanup
|
|
88
|
-
- [ ] Dialog `barrierDismissible: false`
|
|
89
|
-
- [ ] `mounted` check before showing prompt
|
|
90
|
-
- [ ] Real-device smoke: 2 devices, hangup one → prompt fires + nav home after timeout
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## Pointers
|
|
95
|
-
|
|
96
|
-
- `cometchat-react-calls/references/idle-timeout.md` — sister reference
|
|
97
|
-
- `cometchat-flutter-v5-calls` SKILL.md
|
|
98
|
-
- `cometchat-flutter-v5-calls/references/raise-hand.md` — sibling V5 GetX pattern
|
|
99
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/flutter/idle-timeout
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
# In-call chat on Flutter V5 (GetX)
|
|
2
|
-
|
|
3
|
-
Same SDK shape. Flutter-specific: `showModalBottomSheet` with `isScrollControlled: true` for the panel + `MediaQuery.viewInsets` for keyboard handling.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:** https://www.cometchat.com/docs/calls/flutter/in-call-chat
|
|
6
|
-
**Read first:** `cometchat-react-calls/references/in-call-chat.md` — group-as-session architecture.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## SDK API
|
|
11
|
-
|
|
12
|
-
```dart
|
|
13
|
-
import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';
|
|
14
|
-
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
|
|
15
|
-
|
|
16
|
-
// Wire chat button visibility via the (non-deprecated) SessionSettingsBuilder
|
|
17
|
-
final settings = (SessionSettingsBuilder()
|
|
18
|
-
..hideChatButton(false)) // session_settings.dart:299
|
|
19
|
-
.build();
|
|
20
|
-
|
|
21
|
-
// The chat-button tap arrives on ButtonClickListeners (src/listener/button_click_listeners.dart:34),
|
|
22
|
-
// registered via CallSession.getInstance()?.addButtonClickListener(...) (call_session.dart:90):
|
|
23
|
-
@override
|
|
24
|
-
void onChatButtonClicked() {
|
|
25
|
-
Get.find<CallController>().openChat();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Unread badge — INSTANCE method on the session singleton (call_session.dart:489):
|
|
29
|
-
CallSession.getInstance()?.setChatButtonUnreadCount(5);
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Group-as-session helper
|
|
35
|
-
|
|
36
|
-
```dart
|
|
37
|
-
Future<Group> ensureCallGroup(String sessionId) async {
|
|
38
|
-
try {
|
|
39
|
-
return await CometChatGroups.getGroup(sessionId);
|
|
40
|
-
} catch (_) {
|
|
41
|
-
final group = Group(
|
|
42
|
-
guid: sessionId,
|
|
43
|
-
name: 'Call $sessionId',
|
|
44
|
-
type: GroupTypeConstants.public,
|
|
45
|
-
);
|
|
46
|
-
return await CometChatGroups.createGroup(group);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Modal bottom sheet panel
|
|
54
|
-
|
|
55
|
-
```dart
|
|
56
|
-
class CallController extends GetxController {
|
|
57
|
-
final unread = 0.obs;
|
|
58
|
-
Group? group;
|
|
59
|
-
|
|
60
|
-
Future<void> initChat(String sessionId) async {
|
|
61
|
-
group = await ensureCallGroup(sessionId);
|
|
62
|
-
// Track unread...
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
void openChat() {
|
|
66
|
-
if (group == null) return;
|
|
67
|
-
Get.bottomSheet(
|
|
68
|
-
InCallChatPanel(group: group!),
|
|
69
|
-
isScrollControlled: true, // allow full-height
|
|
70
|
-
barrierColor: Colors.transparent, // call view stays visible
|
|
71
|
-
enableDrag: true,
|
|
72
|
-
);
|
|
73
|
-
unread.value = 0;
|
|
74
|
-
CallSession.getInstance()?.setChatButtonUnreadCount(0);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
class InCallChatPanel extends StatelessWidget {
|
|
79
|
-
final Group group;
|
|
80
|
-
const InCallChatPanel({super.key, required this.group});
|
|
81
|
-
|
|
82
|
-
@override
|
|
83
|
-
Widget build(BuildContext context) {
|
|
84
|
-
final keyboardHeight = MediaQuery.of(context).viewInsets.bottom;
|
|
85
|
-
return Padding(
|
|
86
|
-
padding: EdgeInsets.only(bottom: keyboardHeight),
|
|
87
|
-
child: Container(
|
|
88
|
-
height: MediaQuery.of(context).size.height * 0.7,
|
|
89
|
-
decoration: const BoxDecoration(
|
|
90
|
-
color: Colors.white,
|
|
91
|
-
borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
|
|
92
|
-
),
|
|
93
|
-
child: Column(
|
|
94
|
-
children: [
|
|
95
|
-
const ListTile(title: Text('Chat')),
|
|
96
|
-
Expanded(child: CometChatMessageList(group: group)),
|
|
97
|
-
CometChatMessageComposer(group: group),
|
|
98
|
-
],
|
|
99
|
-
),
|
|
100
|
-
),
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
`MediaQuery.viewInsets.bottom` accounts for keyboard height; the sheet pushes up correctly when typing.
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Anti-patterns
|
|
111
|
-
|
|
112
|
-
Web sister rules apply, plus Flutter-specific:
|
|
113
|
-
|
|
114
|
-
1. **`Get.bottomSheet` without `isScrollControlled: true`.** Sheet capped at half-screen, can't expand for full chat.
|
|
115
|
-
2. **`barrierColor: Colors.black54`.** Default dim; call view obscured. Use `Colors.transparent` for in-call.
|
|
116
|
-
3. **`Expanded` direct children of `Column` without considering composer height.** Padding via `MediaQuery.viewInsets` handles it cleanly.
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
## Verification checklist
|
|
121
|
-
|
|
122
|
-
- [ ] `SessionSettingsBuilder()..hideChatButton(false)`
|
|
123
|
-
- [ ] `onChatButtonClicked` (ButtonClickListeners, registered on `CallSession.getInstance()`) opens bottom sheet
|
|
124
|
-
- [ ] `Get.bottomSheet` uses `isScrollControlled: true` + transparent barrier
|
|
125
|
-
- [ ] `MediaQuery.viewInsets.bottom` padding for keyboard
|
|
126
|
-
- [ ] Group resolved before opening sheet
|
|
127
|
-
- [ ] Real-device smoke: keyboard opens during chat, sheet adjusts
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
## Pointers
|
|
132
|
-
|
|
133
|
-
- `cometchat-react-calls/references/in-call-chat.md` — sister
|
|
134
|
-
- `cometchat-flutter-v5-calls` SKILL.md
|
|
135
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/flutter/in-call-chat
|