@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,446 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cometchat-flutter-v6
|
|
3
|
-
description: >
|
|
4
|
-
Use when building chat with CometChat Flutter UIKit v6 (cometchat_chat_uikit).
|
|
5
|
-
Triggers on CometChatUIKit, CometChatConversations, CometChatMessageList,
|
|
6
|
-
CometChatMessageComposer, CometChatMessageHeader, CometChatUsers, CometChatGroups,
|
|
7
|
-
UIKitSettings, CometChatThemeHelper, CometChatColorPalette, ConversationsBloc,
|
|
8
|
-
MessageListBloc, CometChatTextBubble, CometChatImageBubble, CometChatMessageBubble,
|
|
9
|
-
CometChatMentionsFormatter, SliverSpacing, ERR_ALREADY_LOGGED_IN, ERR_INVALID_REGION,
|
|
10
|
-
authentication null. Also for adding chat to Flutter, customizing bubbles, theming,
|
|
11
|
-
real-time messages. Use whenever user mentions CometChat or says "chat UI".
|
|
12
|
-
license: "MIT"
|
|
13
|
-
compatibility: "flutter >=2.5.0; dart >=2.17.0; cometchat_chat_uikit ^6.0.1 (GA on pub.dev; resolves 6.0.x — 6.0.1 fixed the BLoC transition bug)"
|
|
14
|
-
metadata:
|
|
15
|
-
author: "CometChat"
|
|
16
|
-
version: "3.0.0"
|
|
17
|
-
tags: "cometchat flutter chat uikit messaging conversations bloc clean-architecture"
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
> **Ground truth:** `cometchat_chat_uikit: ^6.0` — pub-cache source + `ui-kit/flutter`. **Official docs:** https://www.cometchat.com/docs/ui-kit/flutter/overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
|
|
21
|
-
|
|
22
|
-
# CometChat Flutter UIKit v6 — Orchestrator
|
|
23
|
-
|
|
24
|
-
Entry point skill for the `cometchat_chat_uikit` package. Routes to feature skills based on context.
|
|
25
|
-
|
|
26
|
-
## Project Detection
|
|
27
|
-
|
|
28
|
-
Confirm the project uses CometChat UIKit by checking `pubspec.yaml` for:
|
|
29
|
-
```yaml
|
|
30
|
-
dependencies:
|
|
31
|
-
cometchat_chat_uikit: ^6.0.1 # V6 GA — plain pub.dev (do NOT use a `hosted:` Cloudsmith stanza)
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
> **V6 GA lives on pub.dev, NOT Cloudsmith.** Cloudsmith (`dart.cloudsmith.io/cometchat/cometchat/`) only hosts the pre-GA `6.0.0-beta*` builds; a `--hosted-url`/`hosted:` Cloudsmith install of `^6.0.x` fails with "version solving failed". Use plain pub.dev. (Cloudsmith is only for the legacy **V5** packages — see `cometchat-flutter-v5`.) The GA range resolves `6.0.1`/`6.0.2`/`6.0.3`.
|
|
35
|
-
|
|
36
|
-
If missing, install via:
|
|
37
|
-
```bash
|
|
38
|
-
dart pub add cometchat_chat_uikit:^6.0.1
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Call functionality is built into `cometchat_chat_uikit` — no separate package needed. To use call-specific types, import the calls barrel:
|
|
42
|
-
```dart
|
|
43
|
-
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
|
|
44
|
-
import 'package:cometchat_chat_uikit/cometchat_calls_uikit.dart'; // For call types
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Skill Routing
|
|
48
|
-
|
|
49
|
-
| User mentions | Route to skill |
|
|
50
|
-
|---------------|---------------|
|
|
51
|
-
| init, login, logout, UIKitSettings, setup, credentials, appId, region | `cometchat-flutter-v6-core` |
|
|
52
|
-
| theme, colors, dark mode, styling, CometChatColorPalette, CometChatSpacing, typography, Style class | `cometchat-flutter-v6-theming` |
|
|
53
|
-
| conversations, conversation list, recent chats, ConversationsBloc | `cometchat-flutter-v6-conversations` |
|
|
54
|
-
| messages, message list, composer, header, keyboard, rich text, bubbles, send message | `cometchat-flutter-v6-messages` |
|
|
55
|
-
| users, groups, group members, contacts, user list | `cometchat-flutter-v6-users-groups` |
|
|
56
|
-
| events, listeners, real-time, typing indicator, online status, receipts, SDK listener | `cometchat-flutter-v6-events` |
|
|
57
|
-
|
|
58
|
-
## Architecture Overview
|
|
59
|
-
|
|
60
|
-
The UIKit follows Clean Architecture + BLoC:
|
|
61
|
-
```
|
|
62
|
-
{component}/
|
|
63
|
-
├── bloc/ # BLoC, Events, State (Equatable)
|
|
64
|
-
├── domain/ # Use Cases, Repository interfaces
|
|
65
|
-
├── data/ # Repository impl, DataSources
|
|
66
|
-
├── di/ # ServiceLocator (singleton)
|
|
67
|
-
├── widgets/ # UI components
|
|
68
|
-
└── {component}.dart # Barrel export
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
All components: conversations, message_list, message_composer, message_header, users, groups, group_members, search, threaded_header, message_information.
|
|
72
|
-
|
|
73
|
-
## Package Structure
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
chat_uikit/lib/
|
|
77
|
-
├── cometchat_chat_uikit.dart # Main barrel export (chat components)
|
|
78
|
-
├── cometchat_calls_uikit.dart # Calls barrel export
|
|
79
|
-
├── chat_ui/src/ # Chat components (conversations, messages, users, groups, etc.)
|
|
80
|
-
├── call_ui/src/ # Call components (incoming, outgoing, ongoing, call_logs)
|
|
81
|
-
└── shared_ui/ # Shared utilities (theme, events, formatters, models, views)
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Rule: AUTH_CHECK_AFTER_INIT
|
|
85
|
-
|
|
86
|
-
After `CometChatUIKit.init()` completes (in its `onSuccess`), the static field `CometChatUIKit.loggedInUser` is already populated if a cached session exists. Use this synchronous check — do NOT call `CometChat.getLoggedInUser()` separately.
|
|
87
|
-
|
|
88
|
-
```dart
|
|
89
|
-
// ✅ CORRECT — synchronous check after init completes
|
|
90
|
-
CometChatUIKit.init(
|
|
91
|
-
uiKitSettings: settings,
|
|
92
|
-
onSuccess: (_) {
|
|
93
|
-
final hasUser = CometChatUIKit.loggedInUser != null;
|
|
94
|
-
// Route to home or login based on hasUser
|
|
95
|
-
},
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
// ❌ WRONG — separate async getLoggedInUser call after init
|
|
99
|
-
CometChatUIKit.init(
|
|
100
|
-
uiKitSettings: settings,
|
|
101
|
-
onSuccess: (_) {
|
|
102
|
-
CometChat.getLoggedInUser(
|
|
103
|
-
onSuccess: (user) { ... }, // Unreliable when no session exists
|
|
104
|
-
onError: (e) { ... },
|
|
105
|
-
);
|
|
106
|
-
},
|
|
107
|
-
);
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
The `init()` method internally calls `getLoggedInUser()` and sets `CometChatUIKit.loggedInUser` before firing `onSuccess`. Calling it again is redundant and the callback-based version can silently fail when no session exists (the SDK logs "Please log in to CometChat before calling this method" and neither callback fires consistently).
|
|
111
|
-
|
|
112
|
-
This also applies to `login()` and `loginWithAuthToken()` — all three populate `CometChatUIKit.loggedInUser` before calling `onSuccess`.
|
|
113
|
-
|
|
114
|
-
```dart
|
|
115
|
-
// ❌ ALSO WRONG — async UIKit getLoggedInUser after init (redundant native bridge round-trip)
|
|
116
|
-
CometChatUIKit.init(
|
|
117
|
-
uiKitSettings: settings,
|
|
118
|
-
onSuccess: (_) async {
|
|
119
|
-
final user = await CometChatUIKit.getLoggedInUser(); // Unnecessary!
|
|
120
|
-
if (user != null) { ... }
|
|
121
|
-
},
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
// ❌ ALSO WRONG — raw SDK getLoggedInUser (bypasses UIKit, unreliable)
|
|
125
|
-
User? existingUser = await CometChat.getLoggedInUser();
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Golden Path — Minimal Chat App
|
|
129
|
-
|
|
130
|
-
```dart
|
|
131
|
-
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
|
|
132
|
-
|
|
133
|
-
// 1. Init (once, at app startup)
|
|
134
|
-
final settings = (UIKitSettingsBuilder()
|
|
135
|
-
..appId = 'YOUR_APP_ID'
|
|
136
|
-
..region = 'us'
|
|
137
|
-
..authKey = 'YOUR_AUTH_KEY'
|
|
138
|
-
..subscriptionType = CometChatSubscriptionType.allUsers)
|
|
139
|
-
.build();
|
|
140
|
-
await CometChatUIKit.init(uiKitSettings: settings);
|
|
141
|
-
|
|
142
|
-
// 2. Login
|
|
143
|
-
await CometChatUIKit.loginWithAuthToken('AUTH_TOKEN');
|
|
144
|
-
|
|
145
|
-
// 3. Show conversations
|
|
146
|
-
CometChatConversations(
|
|
147
|
-
onItemTap: (conversation) {
|
|
148
|
-
final user = conversation.conversationWith is User
|
|
149
|
-
? conversation.conversationWith as User : null;
|
|
150
|
-
final group = conversation.conversationWith is Group
|
|
151
|
-
? conversation.conversationWith as Group : null;
|
|
152
|
-
// Navigate to messages screen
|
|
153
|
-
},
|
|
154
|
-
)
|
|
155
|
-
|
|
156
|
-
// 4. Messages screen — on ^6.0.1 use resizeToAvoidBottomInset: true (or omit it)
|
|
157
|
-
Scaffold(
|
|
158
|
-
resizeToAvoidBottomInset: true, // ^6.0.1: composer clamps to viewInsets (ENG-34434); `false` is the pre-6.0.1 stopgap only. See cometchat-flutter-v6-core SCAFFOLD_NO_RESIZE.
|
|
159
|
-
appBar: CometChatMessageHeader(
|
|
160
|
-
user: user,
|
|
161
|
-
group: group,
|
|
162
|
-
onBack: () => Navigator.pop(context),
|
|
163
|
-
),
|
|
164
|
-
body: Column(
|
|
165
|
-
children: [
|
|
166
|
-
Expanded(child: CometChatMessageList(user: user, group: group)),
|
|
167
|
-
CometChatMessageComposer(user: user, group: group),
|
|
168
|
-
],
|
|
169
|
-
),
|
|
170
|
-
)
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
## Complete App Scaffold (main.dart)
|
|
174
|
-
|
|
175
|
-
Full working app with init → auth guard → login → home → logout. Copy-paste ready.
|
|
176
|
-
|
|
177
|
-
```dart
|
|
178
|
-
import 'package:flutter/material.dart';
|
|
179
|
-
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
|
|
180
|
-
|
|
181
|
-
const String appId = 'YOUR_APP_ID';
|
|
182
|
-
const String region = 'us';
|
|
183
|
-
const String authKey = 'YOUR_AUTH_KEY';
|
|
184
|
-
|
|
185
|
-
void main() => runApp(const MyApp());
|
|
186
|
-
|
|
187
|
-
class MyApp extends StatefulWidget {
|
|
188
|
-
const MyApp({super.key});
|
|
189
|
-
@override
|
|
190
|
-
State<MyApp> createState() => _MyAppState();
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
class _MyAppState extends State<MyApp> {
|
|
194
|
-
bool _initializing = true;
|
|
195
|
-
bool _loggedIn = false;
|
|
196
|
-
|
|
197
|
-
@override
|
|
198
|
-
void initState() {
|
|
199
|
-
super.initState();
|
|
200
|
-
_initCometChat();
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
void _initCometChat() {
|
|
204
|
-
final settings = (UIKitSettingsBuilder()
|
|
205
|
-
..appId = appId
|
|
206
|
-
..region = region
|
|
207
|
-
..authKey = authKey
|
|
208
|
-
..subscriptionType = CometChatSubscriptionType.allUsers)
|
|
209
|
-
.build();
|
|
210
|
-
|
|
211
|
-
CometChatUIKit.init(
|
|
212
|
-
uiKitSettings: settings,
|
|
213
|
-
onSuccess: (_) {
|
|
214
|
-
// CometChatUIKit.loggedInUser is already set if a cached session exists
|
|
215
|
-
setState(() {
|
|
216
|
-
_loggedIn = CometChatUIKit.loggedInUser != null;
|
|
217
|
-
_initializing = false;
|
|
218
|
-
});
|
|
219
|
-
},
|
|
220
|
-
onError: (e) {
|
|
221
|
-
debugPrint('Init failed: ${e.message}');
|
|
222
|
-
setState(() => _initializing = false);
|
|
223
|
-
},
|
|
224
|
-
);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
void _onLoginSuccess() => setState(() => _loggedIn = true);
|
|
228
|
-
|
|
229
|
-
void _onLogout() => setState(() => _loggedIn = false);
|
|
230
|
-
|
|
231
|
-
@override
|
|
232
|
-
Widget build(BuildContext context) {
|
|
233
|
-
return MaterialApp(
|
|
234
|
-
home: _initializing
|
|
235
|
-
? const Scaffold(body: Center(child: CircularProgressIndicator()))
|
|
236
|
-
: _loggedIn
|
|
237
|
-
? HomeScreen(onLogout: _onLogout)
|
|
238
|
-
: LoginScreen(onLoginSuccess: _onLoginSuccess),
|
|
239
|
-
);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
// --- Login Screen ---
|
|
244
|
-
class LoginScreen extends StatefulWidget {
|
|
245
|
-
final VoidCallback onLoginSuccess;
|
|
246
|
-
const LoginScreen({super.key, required this.onLoginSuccess});
|
|
247
|
-
@override
|
|
248
|
-
State<LoginScreen> createState() => _LoginScreenState();
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
class _LoginScreenState extends State<LoginScreen> {
|
|
252
|
-
final _uidController = TextEditingController();
|
|
253
|
-
bool _loggingIn = false;
|
|
254
|
-
String? _error;
|
|
255
|
-
|
|
256
|
-
void _login() {
|
|
257
|
-
final uid = _uidController.text.trim();
|
|
258
|
-
if (uid.isEmpty) return;
|
|
259
|
-
setState(() { _loggingIn = true; _error = null; });
|
|
260
|
-
|
|
261
|
-
CometChatUIKit.login(uid,
|
|
262
|
-
onSuccess: (_) {
|
|
263
|
-
if (mounted) { widget.onLoginSuccess(); }
|
|
264
|
-
},
|
|
265
|
-
onError: (e) {
|
|
266
|
-
if (mounted) { setState(() { _loggingIn = false; _error = e.message; }); }
|
|
267
|
-
},
|
|
268
|
-
);
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
@override
|
|
272
|
-
Widget build(BuildContext context) {
|
|
273
|
-
return Scaffold(
|
|
274
|
-
body: Padding(
|
|
275
|
-
padding: const EdgeInsets.all(24),
|
|
276
|
-
child: Column(
|
|
277
|
-
mainAxisAlignment: MainAxisAlignment.center,
|
|
278
|
-
children: [
|
|
279
|
-
TextField(
|
|
280
|
-
controller: _uidController,
|
|
281
|
-
decoration: const InputDecoration(labelText: 'User ID'),
|
|
282
|
-
),
|
|
283
|
-
const SizedBox(height: 16),
|
|
284
|
-
if (_error != null)
|
|
285
|
-
Text(_error!, style: const TextStyle(color: Colors.red)),
|
|
286
|
-
const SizedBox(height: 16),
|
|
287
|
-
ElevatedButton(
|
|
288
|
-
onPressed: _loggingIn ? null : _login,
|
|
289
|
-
child: _loggingIn
|
|
290
|
-
? const SizedBox(width: 20, height: 20, child: CircularProgressIndicator(strokeWidth: 2))
|
|
291
|
-
: const Text('Login'),
|
|
292
|
-
),
|
|
293
|
-
],
|
|
294
|
-
),
|
|
295
|
-
),
|
|
296
|
-
);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
// --- Home Screen (Conversations → Messages) ---
|
|
301
|
-
class HomeScreen extends StatelessWidget {
|
|
302
|
-
final VoidCallback onLogout;
|
|
303
|
-
const HomeScreen({super.key, required this.onLogout});
|
|
304
|
-
|
|
305
|
-
void _logout(BuildContext context) {
|
|
306
|
-
CometChatUIKit.logout(
|
|
307
|
-
onSuccess: (_) => onLogout(),
|
|
308
|
-
onError: (e) => debugPrint('Logout failed: ${e.message}'),
|
|
309
|
-
);
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
@override
|
|
313
|
-
Widget build(BuildContext context) {
|
|
314
|
-
return Scaffold(
|
|
315
|
-
appBar: AppBar(
|
|
316
|
-
title: const Text('Conversations'),
|
|
317
|
-
actions: [
|
|
318
|
-
IconButton(icon: const Icon(Icons.logout), onPressed: () => _logout(context)),
|
|
319
|
-
],
|
|
320
|
-
),
|
|
321
|
-
body: CometChatConversations(
|
|
322
|
-
onItemTap: (conversation) {
|
|
323
|
-
final user = conversation.conversationWith is User
|
|
324
|
-
? conversation.conversationWith as User : null;
|
|
325
|
-
final group = conversation.conversationWith is Group
|
|
326
|
-
? conversation.conversationWith as Group : null;
|
|
327
|
-
Navigator.push(context, MaterialPageRoute(
|
|
328
|
-
builder: (_) => MessagesScreen(user: user, group: group),
|
|
329
|
-
));
|
|
330
|
-
},
|
|
331
|
-
),
|
|
332
|
-
);
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
// --- Messages Screen ---
|
|
337
|
-
class MessagesScreen extends StatelessWidget {
|
|
338
|
-
final User? user;
|
|
339
|
-
final Group? group;
|
|
340
|
-
const MessagesScreen({super.key, this.user, this.group});
|
|
341
|
-
|
|
342
|
-
@override
|
|
343
|
-
Widget build(BuildContext context) {
|
|
344
|
-
return Scaffold(
|
|
345
|
-
resizeToAvoidBottomInset: true, // ^6.0.1: composer clamps to viewInsets (ENG-34434); `false` is the pre-6.0.1 stopgap only
|
|
346
|
-
appBar: CometChatMessageHeader(
|
|
347
|
-
user: user,
|
|
348
|
-
group: group,
|
|
349
|
-
onBack: () => Navigator.pop(context),
|
|
350
|
-
),
|
|
351
|
-
body: Column(
|
|
352
|
-
children: [
|
|
353
|
-
Expanded(child: CometChatMessageList(user: user, group: group)),
|
|
354
|
-
CometChatMessageComposer(user: user, group: group),
|
|
355
|
-
],
|
|
356
|
-
),
|
|
357
|
-
);
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
Key points in this scaffold:
|
|
363
|
-
- `CometChatUIKit.loggedInUser` is checked synchronously after `init()` — no separate `getLoggedInUser()` call
|
|
364
|
-
- State is managed at the `MyApp` level so login/logout transitions are clean
|
|
365
|
-
- `LoginScreen` uses `CometChatUIKit.login(uid)` with auth key (set in UIKitSettings)
|
|
366
|
-
- `MessagesScreen` has `resizeToAvoidBottomInset: true` (or omits it — `true` is the default; the composer clamps to `viewInsets` on ^6.0.1 per ENG-34434). `false` was the pre-6.0.1 stopgap only.
|
|
367
|
-
- Logout calls `CometChatUIKit.logout()` and resets state
|
|
368
|
-
|
|
369
|
-
## Common Error Debugging
|
|
370
|
-
|
|
371
|
-
| Symptom | Cause | Fix |
|
|
372
|
-
|---------|-------|-----|
|
|
373
|
-
| "Authentication null" | `CometChatUIKit.init()` not called | Call init before login/components |
|
|
374
|
-
| "APP ID null" | appId not set in UIKitSettingsBuilder | Set `..appId = 'YOUR_APP_ID'` |
|
|
375
|
-
| Double keyboard gap on `^6.0.1+` | Leftover pre-6.0.1 `resizeToAvoidBottomInset: false` workaround | Set it to `true` (or omit) — the composer clamps the keyboard internally on 6.0.1+ (ENG-34434); `false` is what now double-compensates. Upgrade the kit if you still see a gap with `true`. |
|
|
376
|
-
| No typing indicators / presence | `subscriptionType` not set | Set `..subscriptionType = CometChatSubscriptionType.allUsers` |
|
|
377
|
-
| Theme jank during keyboard | Theme looked up in `build()` | Cache in `didChangeDependencies()` with `_themeInitialized` flag |
|
|
378
|
-
| Listener leak / duplicate events | Listener not removed in `dispose()` | Always remove with same ID used to register |
|
|
379
|
-
| "ERR_ALREADY_LOGGED_IN" | Calling login when session exists | Check `CometChatUIKit.loggedInUser != null` first (synchronous static field — aligns with §85 rule) |
|
|
380
|
-
| Messages not updating in real-time | SDK listener not registered | BLoC registers automatically; check component is mounted |
|
|
381
|
-
| Stale user/group data | Passing widget params instead of mutable state | Keep mutable `_user`/`_group` in State, update from listeners |
|
|
382
|
-
| Region error | Uppercase region string | Use lowercase: 'us', 'eu', 'in' |
|
|
383
|
-
| `Android internal error` on login | SDK internal failure — often auth key issue, beta SDK bug, or network | Verify credentials are correct. Try `CometChat.login(uid, authKey)` directly instead of `CometChatUIKit.login(uid)`. Check CometChat dashboard for UID existence. If using beta SDK, try stable release. |
|
|
384
|
-
| Guard screen stuck on spinner | Using `CometChat.getLoggedInUser()` callback API after init | Use `CometChatUIKit.loggedInUser` synchronously after `init()` completes — see AUTH_CHECK_AFTER_INIT rule |
|
|
385
|
-
| Release build crash (ClassNotFoundException) | Missing ProGuard keep rules | Add `-keep class com.cometchat.** { *; }` to `proguard-rules.pro` |
|
|
386
|
-
| Android build fails (minSdk) | minSdk too low | Set `minSdk = 26` in `android/app/build.gradle` |
|
|
387
|
-
| Android build fails (support library) | Missing Jetifier | Add `android.enableJetifier=true` to `gradle.properties` |
|
|
388
|
-
|
|
389
|
-
## Autonomous Mode
|
|
390
|
-
|
|
391
|
-
- If `pubspec.yaml` has `cometchat_chat_uikit` → proceed without asking
|
|
392
|
-
- If credentials exist in code → reuse them, don't ask
|
|
393
|
-
- If user says "messages screen" → generate Scaffold + Header + List + Composer with `resizeToAvoidBottomInset: true` (or omit it — `true` is correct on ^6.0.1+)
|
|
394
|
-
- Always add `subscriptionType` to UIKitSettingsBuilder
|
|
395
|
-
- Always use `CometChatThemeHelper` for colors, never hardcode
|
|
396
|
-
|
|
397
|
-
## Android Build Requirements
|
|
398
|
-
|
|
399
|
-
These are required in your Android project or the build/release will fail:
|
|
400
|
-
|
|
401
|
-
### gradle.properties
|
|
402
|
-
```properties
|
|
403
|
-
android.useAndroidX=true
|
|
404
|
-
android.enableJetifier=true
|
|
405
|
-
```
|
|
406
|
-
`enableJetifier` resolves old Android Support Library conflicts from transitive dependencies.
|
|
407
|
-
|
|
408
|
-
### minSdk 26
|
|
409
|
-
In `android/app/build.gradle` (or `.kts`):
|
|
410
|
-
```kotlin
|
|
411
|
-
defaultConfig {
|
|
412
|
-
minSdk = 26 // Required by cometchat_calls_sdk
|
|
413
|
-
}
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
### ProGuard / R8 Keep Rules
|
|
417
|
-
Create `android/app/proguard-rules.pro`:
|
|
418
|
-
```
|
|
419
|
-
# CometChat — prevent R8 from stripping SDK classes
|
|
420
|
-
-keep class com.cometchat.** { *; }
|
|
421
|
-
-keep interface com.cometchat.** { *; }
|
|
422
|
-
|
|
423
|
-
# Suppress warnings for Calls SDK classes referenced cross-module
|
|
424
|
-
-dontwarn com.cometchat.calls.CometChatRTCView$CometChatRTCViewBuilder
|
|
425
|
-
-dontwarn com.cometchat.calls.CometChatRTCView
|
|
426
|
-
-dontwarn com.cometchat.calls.CometChatRTCViewListener
|
|
427
|
-
-dontwarn com.cometchat.calls.model.AnalyticsSettings
|
|
428
|
-
-dontwarn com.cometchat.calls.model.RTCCallback
|
|
429
|
-
-dontwarn com.cometchat.calls.model.RTCReceiver
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
Reference it in `build.gradle`:
|
|
433
|
-
```kotlin
|
|
434
|
-
buildTypes {
|
|
435
|
-
release {
|
|
436
|
-
isMinifyEnabled = true
|
|
437
|
-
isShrinkResources = true
|
|
438
|
-
proguardFiles(
|
|
439
|
-
getDefaultProguardFile("proguard-android-optimize.txt"),
|
|
440
|
-
"proguard-rules.pro"
|
|
441
|
-
)
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
Without these rules, release builds crash with `ClassNotFoundException` for CometChat classes.
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
# Adding calls to an existing chat integration (Flutter V6 / Bloc)
|
|
2
|
-
|
|
3
|
-
V6 calls are **bundled** into `cometchat_chat_uikit: ^6.0` — no separate calls package. Toggle on by enabling calling in the UIKit settings.
|
|
4
|
-
|
|
5
|
-
**Read first:** `cometchat-flutter-v6-calls/SKILL.md` — V6 architecture (Bloc).
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Step 1 — Verify chat-uikit cohort
|
|
10
|
-
|
|
11
|
-
```yaml
|
|
12
|
-
# pubspec.yaml
|
|
13
|
-
dependencies:
|
|
14
|
-
cometchat_chat_uikit: ^6.0 # V6 — calls bundled
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
If you see `cometchat_calls_uikit` separately listed, you're on V5 cohort — see `cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md`.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Step 2 — Enable calling on UIKit init
|
|
22
|
-
|
|
23
|
-
```dart
|
|
24
|
-
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
|
|
25
|
-
|
|
26
|
-
Future<void> main() async {
|
|
27
|
-
WidgetsFlutterBinding.ensureInitialized();
|
|
28
|
-
|
|
29
|
-
final settings = UIKitSettingsBuilder()
|
|
30
|
-
..setAppId(APP_ID)
|
|
31
|
-
..setRegion(REGION)
|
|
32
|
-
..enableCalls = true; // canonical V6 API — verified against cometchat_chat_uikit-6.0.1 // NEW
|
|
33
|
-
|
|
34
|
-
await CometChatUIKit.init(uiKitSettings: settings.build());
|
|
35
|
-
runApp(const MyApp());
|
|
36
|
-
}
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
That's the entire migration. Calls init internally when chat init succeeds.
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Step 3 — iOS + Android native config
|
|
44
|
-
|
|
45
|
-
Same as V5 (see V5 sister doc) — Info.plist + permissions + ConnectionService don't change between cohorts.
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Step 4 — Mount CometChatIncomingCall
|
|
50
|
-
|
|
51
|
-
```dart
|
|
52
|
-
class MyApp extends StatelessWidget {
|
|
53
|
-
@override
|
|
54
|
-
Widget build(BuildContext context) {
|
|
55
|
-
return MaterialApp(
|
|
56
|
-
home: Stack(
|
|
57
|
-
children: [
|
|
58
|
-
BlocProvider(
|
|
59
|
-
create: (_) => AuthBloc()..add(LoginRequested()),
|
|
60
|
-
child: const AppRoot(),
|
|
61
|
-
),
|
|
62
|
-
const CometChatIncomingCall(),
|
|
63
|
-
],
|
|
64
|
-
),
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## Step 5 — Bloc-wrapped login + push registration
|
|
73
|
-
|
|
74
|
-
```dart
|
|
75
|
-
class AuthBloc extends Bloc<AuthEvent, AuthState> {
|
|
76
|
-
AuthBloc({required this.api}) : super(const AuthState.initial()) {
|
|
77
|
-
on<LoginRequested>(_onLogin);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
Future<void> _onLogin(LoginRequested event, Emitter<AuthState> emit) async {
|
|
81
|
-
try {
|
|
82
|
-
final user = await CometChatUIKit.login(uid: event.uid, authKey: AUTH_KEY);
|
|
83
|
-
// No separate CometChatCalls.login in V6 — bundled
|
|
84
|
-
emit(AuthState.authenticated(user));
|
|
85
|
-
|
|
86
|
-
// Register VoIP push tokens after login
|
|
87
|
-
await context.read<CallPushBloc>().add(RegisterTokens(uid: user.uid));
|
|
88
|
-
} catch (e) {
|
|
89
|
-
emit(AuthState.failed(e.toString()));
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
(See `cometchat-flutter-v6-calls/references/server-push-bridge.md` for the CallPushBloc pattern.)
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## Step 6 — Hangup teardown via Bloc
|
|
100
|
-
|
|
101
|
-
```dart
|
|
102
|
-
class CallBloc extends Bloc<CallEvent, CallState> {
|
|
103
|
-
CallBloc() : super(const CallState.idle()) {
|
|
104
|
-
on<EndCall>(_onEndCall);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
Future<void> _onEndCall(EndCall event, Emitter<CallState> emit) async {
|
|
108
|
-
// leaveSession is an instance method on CallSession
|
|
109
|
-
// (cometchat_calls_sdk-5.0.2 src/call_session.dart:272), not static.
|
|
110
|
-
await CallSession.getInstance()?.leaveSession();
|
|
111
|
-
await CometChat.endCall(event.sessionId);
|
|
112
|
-
// V6's bundled flow: no additional FlutterCallkitIncoming step;
|
|
113
|
-
// the kit handles it
|
|
114
|
-
emit(const CallState.ended());
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## Verification checklist
|
|
122
|
-
|
|
123
|
-
- [ ] `cometchat_chat_uikit: ^6.0` (or higher V6) in pubspec
|
|
124
|
-
- [ ] `..enableCalls = true` chained in UIKitSettingsBuilder
|
|
125
|
-
- [ ] Native config (iOS + Android) same as V5
|
|
126
|
-
- [ ] `CometChatIncomingCall` sibling-overlay at root
|
|
127
|
-
- [ ] VoIP push registration via CallPushBloc post-login
|
|
128
|
-
- [ ] Run `cometchat verify --calls` — should pass
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## Pointers
|
|
133
|
-
|
|
134
|
-
- `cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md` — V5 sister (separate calls package)
|
|
135
|
-
- `cometchat-flutter-v6-calls/SKILL.md` — V6 Bloc patterns
|
|
136
|
-
- `cometchat-flutter-v6-calls/references/server-push-bridge.md`
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# Flutter V6 — advanced in-call features (Recording, Virtual Background, Audio Modes, PiP, Screen-share)
|
|
2
|
-
|
|
3
|
-
V6 folds calls into `cometchat_chat_uikit:^6.0` (depends transitively on `cometchat_calls_sdk >=5.0.2`). Every symbol below is verified against `cometchat_calls_sdk-5.0.2`'s `CallSession`. All controls hang off the active session singleton:
|
|
4
|
-
|
|
5
|
-
```dart
|
|
6
|
-
final session = CallSession.getInstance(); // active call session (after onSuccess)
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
State changes arrive on `MediaEventListeners` / `ParticipantEventListeners` (register the same way this skill already registers `SessionStatusListeners` — via the session after the join succeeds, and remove them in `dispose`).
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## 1. Recording
|
|
14
|
-
|
|
15
|
-
Server-gated — enable recording for the app in the CometChat dashboard first.
|
|
16
|
-
|
|
17
|
-
```dart
|
|
18
|
-
await CallSession.getInstance().startRecording();
|
|
19
|
-
await CallSession.getInstance().stopRecording();
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
React to state via `MediaEventListeners.onRecordingStarted()` / `onRecordingStopped()`.
|
|
23
|
-
|
|
24
|
-
Verified: `CallSession.startRecording()` / `stopRecording()`, `MediaEventListeners.onRecordingStarted()`.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## 2. Virtual Background
|
|
29
|
-
|
|
30
|
-
Flutter DOES support virtual background (unlike native iOS/Android). The SDK opens the kit's built-in settings panel (blur / image / clear); you don't build the picker:
|
|
31
|
-
|
|
32
|
-
```dart
|
|
33
|
-
await CallSession.getInstance().openVirtualBackgroundSettingsPanel();
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Verified: `CallSession.openVirtualBackgroundSettingsPanel()`.
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## 3. Audio modes
|
|
41
|
-
|
|
42
|
-
```dart
|
|
43
|
-
await CallSession.getInstance().setAudioModeType(AudioMode.speaker);
|
|
44
|
-
// AudioMode.speaker | AudioMode.earpiece | AudioMode.bluetooth (no .headphones on Flutter)
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
React via `MediaEventListeners.onAudioModeChanged(...)`.
|
|
48
|
-
|
|
49
|
-
Verified: `CallSession.setAudioModeType(AudioMode)`; `enum AudioMode { speaker, earpiece, bluetooth }`.
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## 4. Picture-in-Picture
|
|
54
|
-
|
|
55
|
-
- **In-call compact layout:** `enablePictureInPictureLayout()` / `disablePictureInPictureLayout()`.
|
|
56
|
-
- **System PiP** (OS floats the call when the user leaves the app): gate it on `isPipSupported()` then `enterPipMode()`.
|
|
57
|
-
|
|
58
|
-
```dart
|
|
59
|
-
final session = CallSession.getInstance();
|
|
60
|
-
await session.enablePictureInPictureLayout();
|
|
61
|
-
// system PiP
|
|
62
|
-
if (await session.isPipSupported()) {
|
|
63
|
-
await session.enterPipMode();
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Verified: `CallSession.enablePictureInPictureLayout()` / `disablePictureInPictureLayout()` / `enterPipMode()` / `isPipSupported()`.
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## 5. Screen sharing — receive only
|
|
72
|
-
|
|
73
|
-
Flutter (like iOS/Android) cannot locally INITIATE screen share — it renders a remote participant's shared screen inside the call grid automatically. Wire a listener only to react:
|
|
74
|
-
|
|
75
|
-
```dart
|
|
76
|
-
// ParticipantEventListeners
|
|
77
|
-
@override
|
|
78
|
-
void onParticipantStartedScreenShare(Participant participant) { /* e.g. switch layout */ }
|
|
79
|
-
@override
|
|
80
|
-
void onParticipantStoppedScreenShare(Participant participant) { }
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Verified: `ParticipantEventListeners.onParticipantStartedScreenShare(Participant)` / `onParticipantStoppedScreenShare(Participant)`. No local-initiation symbol exists — do not author one.
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Camera (cross-reference)
|
|
88
|
-
|
|
89
|
-
Front/back switch + on/off is in `references/device-management.md` (`CallSession.switchCamera()`). Custom Control Panel: the V6 kit owns the in-call control surface; per-button hiding is via the session/call settings, not a separate panel API.
|