@cometchat/skills 4.4.2 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +55 -0
- package/.claude-plugin/plugin.json +14 -0
- package/CHANGELOG.md +44 -0
- package/LICENSE +21 -0
- package/MIGRATING.md +187 -0
- package/README.md +52 -156
- package/RULES.md +125 -0
- package/bin/cometchat-skills.mjs +1280 -0
- package/bin/legacy-skills.json +95 -0
- package/catalogs/android-v6.json +1646 -0
- package/catalogs/flutter-v6.json +651 -0
- package/catalogs/ios-v5.json +1383 -0
- package/catalogs/rn-calls-v5.json +134 -0
- package/catalogs/rn-calls-v5.symbols.txt +58 -0
- package/catalogs/rn-sdk-v4.json +672 -0
- package/catalogs/rn-v5.json +449 -0
- package/catalogs/rn-v5.symbols.txt +216 -0
- package/catalogs/sdk-android-v5.json +514 -0
- package/contracts.android-calls-v5.json +122 -0
- package/contracts.android-v6.json +135 -0
- package/contracts.angular-v5.json +694 -0
- package/contracts.flutter-calls-v5.json +77 -0
- package/contracts.flutter-v6.json +126 -0
- package/contracts.ios-calls-v5.json +67 -0
- package/contracts.ios-v5.json +436 -0
- package/contracts.json +82 -0
- package/contracts.rn-calls-v5.json +77 -0
- package/contracts.rn-v5.json +727 -0
- package/contracts.sdk-android-v5.json +15 -0
- package/contracts.web-calls-v5.json +45 -0
- package/features.android-calls-v5.json +246 -0
- package/features.android-v6.json +65 -0
- package/features.angular-v5.json +521 -0
- package/features.flutter-calls-v5.json +286 -0
- package/features.flutter-v6.json +484 -0
- package/features.ios-calls-v5.json +236 -0
- package/features.ios-v5.json +573 -0
- package/features.json +61 -0
- package/features.rn-calls-v5.json +187 -0
- package/features.rn-v5.json +614 -0
- package/features.sdk-android-v5.json +40 -0
- package/features.sdk-jsv4.json +24 -0
- package/features.web-calls-v5.json +108 -0
- package/package.json +156 -74
- package/peers.yaml +355 -0
- package/registry/README.md +31 -0
- package/registry/android-calls-v5.json +94 -0
- package/registry/android-v6.json +177 -0
- package/registry/angular-v5.json +154 -0
- package/registry/flutter-calls-v5.json +94 -0
- package/registry/flutter-v6.json +159 -0
- package/registry/ios-calls-v5.json +99 -0
- package/registry/ios-v5.json +152 -0
- package/registry/rn-calls-v5.json +99 -0
- package/registry/rn-v5.json +169 -0
- package/registry/sdk-android-v5.json +93 -0
- package/registry/sdk-jsv4.json +93 -0
- package/registry/web-calls-v5.json +94 -0
- package/registry/web-v7.json +154 -0
- package/skills/cometchat/SKILL.md +47 -2096
- package/skills/cometchat-a11y/SKILL.md +44 -472
- package/skills/cometchat-analytics/SKILL.md +61 -0
- package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
- package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
- package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
- package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
- package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
- package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
- package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
- package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
- package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
- package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
- package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
- package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
- package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
- package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
- package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
- package/skills/cometchat-android-v6-core/SKILL.md +236 -672
- package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
- package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
- package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
- package/skills/cometchat-android-v6-core/references/layout.md +112 -0
- package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
- package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
- package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
- package/skills/cometchat-android-v6-events/SKILL.md +46 -184
- package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
- package/skills/cometchat-android-v6-features/SKILL.md +74 -143
- package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
- package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
- package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
- package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
- package/skills/cometchat-android-v6-production/SKILL.md +41 -179
- package/skills/cometchat-android-v6-push/SKILL.md +39 -289
- package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
- package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
- package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
- package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
- package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
- package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
- package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
- package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
- package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
- package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
- package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
- package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
- package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
- package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
- package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
- package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
- package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
- package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
- package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
- package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
- package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
- package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
- package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
- package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
- package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
- package/skills/cometchat-angular-v5-production/SKILL.md +102 -0
- package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
- package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
- package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
- package/skills/cometchat-audit/SKILL.md +61 -0
- package/skills/cometchat-compliance/SKILL.md +63 -0
- package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
- package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
- package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
- package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
- package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
- package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
- package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
- package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
- package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
- package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
- package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
- package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
- package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
- package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
- package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
- package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
- package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
- package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
- package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +132 -0
- package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
- package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
- package/skills/cometchat-flutter-v6-production/SKILL.md +59 -615
- package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
- package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
- package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
- package/skills/cometchat-i18n/SKILL.md +35 -404
- package/skills/cometchat-ios-calls/SKILL.md +112 -563
- package/skills/cometchat-ios-components/SKILL.md +44 -834
- package/skills/cometchat-ios-core/SKILL.md +182 -1068
- package/skills/cometchat-ios-core/references/anti-patterns.md +113 -0
- package/skills/cometchat-ios-core/references/docs-map.md +124 -0
- package/skills/cometchat-ios-core/references/install.md +23 -0
- package/skills/cometchat-ios-core/references/layout.md +219 -0
- package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
- package/skills/cometchat-ios-core/references/swiftui.md +91 -0
- package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
- package/skills/cometchat-ios-customization/SKILL.md +33 -968
- package/skills/cometchat-ios-features/SKILL.md +29 -738
- package/skills/cometchat-ios-migration/SKILL.md +39 -0
- package/skills/cometchat-ios-placement/SKILL.md +51 -729
- package/skills/cometchat-ios-production/SKILL.md +67 -723
- package/skills/cometchat-ios-push/SKILL.md +24 -602
- package/skills/cometchat-ios-testing/SKILL.md +36 -355
- package/skills/cometchat-ios-troubleshooting/SKILL.md +31 -989
- package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
- package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
- package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
- package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
- package/skills/cometchat-migrate-from-getstream/SKILL.md +65 -0
- package/skills/cometchat-migrate-from-getstream/references/concept-map.md +98 -0
- package/skills/cometchat-migrate-from-getstream/references/data-migration.md +74 -0
- package/skills/cometchat-migrate-from-getstream/references/feature-map.md +108 -0
- package/skills/cometchat-migrate-from-getstream/references/inventory.md +82 -0
- package/skills/cometchat-migrate-from-getstream/references/native-build.md +9 -0
- package/skills/cometchat-migrate-from-getstream/references/report-template.md +59 -0
- package/skills/cometchat-migrate-from-sendbird/SKILL.md +64 -0
- package/skills/cometchat-migrate-from-sendbird/references/concept-map.md +99 -0
- package/skills/cometchat-migrate-from-sendbird/references/data-migration.md +74 -0
- package/skills/cometchat-migrate-from-sendbird/references/feature-map.md +104 -0
- package/skills/cometchat-migrate-from-sendbird/references/inventory.md +86 -0
- package/skills/cometchat-migrate-from-sendbird/references/native-build.md +10 -0
- package/skills/cometchat-migrate-from-sendbird/references/report-template.md +59 -0
- package/skills/cometchat-migrate-from-twilio/SKILL.md +52 -0
- package/skills/cometchat-migrate-from-twilio/references/concept-map.md +49 -0
- package/skills/cometchat-migrate-from-twilio/references/data-migration.md +50 -0
- package/skills/cometchat-migrate-from-twilio/references/feature-map.md +27 -0
- package/skills/cometchat-migrate-from-twilio/references/inventory.md +53 -0
- package/skills/cometchat-migrate-from-twilio/references/report-template.md +52 -0
- package/skills/cometchat-moderation/SKILL.md +58 -0
- package/skills/cometchat-onboarding/SKILL.md +92 -0
- package/skills/cometchat-onboarding/references/archetypes.md +51 -0
- package/skills/cometchat-onboarding/references/calling-first.md +77 -0
- package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
- package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
- package/skills/cometchat-onboarding/references/platforms.md +105 -0
- package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
- package/skills/cometchat-react-native-calls/SKILL.md +200 -0
- package/skills/cometchat-react-native-components/SKILL.md +142 -0
- package/skills/cometchat-react-native-core/SKILL.md +335 -0
- package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
- package/skills/cometchat-react-native-core/references/component-props.md +105 -0
- package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
- package/skills/cometchat-react-native-core/references/docs-map.md +127 -0
- package/skills/cometchat-react-native-core/references/layout.md +61 -0
- package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
- package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
- package/skills/cometchat-react-native-customization/SKILL.md +198 -0
- package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
- package/skills/cometchat-react-native-features/SKILL.md +122 -0
- package/skills/cometchat-react-native-migration/SKILL.md +103 -0
- package/skills/cometchat-react-native-placement/SKILL.md +158 -0
- package/skills/cometchat-react-native-production/SKILL.md +79 -0
- package/skills/cometchat-react-native-push/SKILL.md +88 -0
- package/skills/cometchat-react-native-sdk/SKILL.md +133 -0
- package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
- package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
- package/skills/cometchat-react-native-testing/SKILL.md +94 -0
- package/skills/cometchat-react-native-troubleshooting/SKILL.md +174 -0
- package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
- package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
- package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
- package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
- package/skills/cometchat-react-v7-components/SKILL.md +72 -0
- package/skills/cometchat-react-v7-core/SKILL.md +101 -0
- package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
- package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
- package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
- package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
- package/skills/cometchat-react-v7-core/references/layout.md +150 -0
- package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
- package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
- package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
- package/skills/cometchat-react-v7-core/references/theming.md +52 -0
- package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
- package/skills/cometchat-react-v7-features/SKILL.md +92 -0
- package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
- package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
- package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
- package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
- package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
- package/skills/cometchat-react-v7-production/SKILL.md +84 -0
- package/skills/cometchat-react-v7-push/SKILL.md +53 -0
- package/skills/cometchat-react-v7-testing/SKILL.md +60 -0
- package/skills/cometchat-react-v7-troubleshooting/SKILL.md +47 -0
- package/skills/cometchat-security/SKILL.md +80 -0
- package/skills/cometchat-self-host/SKILL.md +56 -0
- package/test-suite/README.md +70 -0
- package/test-suite/catalogs/android-calls-v5.json +830 -0
- package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
- package/test-suite/catalogs/android-v6.json +1646 -0
- package/test-suite/catalogs/android-v6.symbols.txt +298 -0
- package/test-suite/catalogs/angular-v5.json +7587 -0
- package/test-suite/catalogs/flutter-calls-v5.json +196 -0
- package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
- package/test-suite/catalogs/flutter-v6.json +651 -0
- package/test-suite/catalogs/ios-calls-v5.json +158 -0
- package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
- package/test-suite/catalogs/ios-v5.json +1383 -0
- package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
- package/test-suite/catalogs/rn-calls-v5.json +134 -0
- package/test-suite/catalogs/rn-sdk-v4.json +672 -0
- package/test-suite/catalogs/rn-v5.json +449 -0
- package/test-suite/catalogs/sdk-android-v5.json +514 -0
- package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
- package/test-suite/catalogs/sdk-jsv4.json +800 -0
- package/test-suite/catalogs/web-calls-v5.json +195 -0
- package/test-suite/catalogs/web-v7.json +1243 -0
- package/test-suite/scripts/build-registry.mjs +113 -0
- package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
- package/test-suite/scripts/catalog-refresh.mjs +100 -0
- package/test-suite/scripts/lint-skills.mjs +932 -0
- package/test-suite/scripts/measure-tokens.mjs +169 -0
- package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
- package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
- package/test-suite/scripts/typecheck-fences.mjs +206 -0
- package/test-suite/scripts/verify-catalog.mjs +242 -0
- package/test-suite/scripts/verify-contract-fences.mjs +94 -0
- package/test-suite/scripts/verify-detection.mjs +178 -0
- package/test-suite/scripts/verify-docs-base.mjs +91 -0
- package/test-suite/scripts/verify-family-agnostic.mjs +134 -0
- package/test-suite/scripts/verify-golden-path.mjs +138 -0
- package/test-suite/scripts/verify-oracle-components.mjs +133 -0
- package/test-suite/scripts/verify-template-bindings.mjs +148 -0
- package/test-suite/typecheck/angular-v5/package.json +21 -0
- package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
- package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
- package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
- package/test-suite/typecheck/web-v7/package.json +18 -0
- package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
- package/bin/install.js +0 -1003
- package/skills/.claude-plugin/marketplace.json +0 -86
- package/skills/cometchat/references/asking-questions.md +0 -48
- package/skills/cometchat-android-v5/SKILL.md +0 -121
- package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
- package/skills/cometchat-android-v5-calls/references/README.md +0 -53
- package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
- package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
- package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
- package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
- package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
- package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
- package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
- package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
- package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
- package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
- package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
- package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
- package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
- package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
- package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
- package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
- package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
- package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
- package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
- package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
- package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
- package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
- package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
- package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
- package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
- package/skills/cometchat-android-v5-components/SKILL.md +0 -431
- package/skills/cometchat-android-v5-core/SKILL.md +0 -486
- package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
- package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
- package/skills/cometchat-android-v5-features/SKILL.md +0 -131
- package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
- package/skills/cometchat-android-v5-production/SKILL.md +0 -95
- package/skills/cometchat-android-v5-push/SKILL.md +0 -619
- package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
- package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
- package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
- package/skills/cometchat-android-v6/SKILL.md +0 -108
- package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
- package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
- package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
- package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
- package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
- package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
- package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
- package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
- package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
- package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
- package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
- package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
- package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
- package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
- package/skills/cometchat-angular-calls/SKILL.md +0 -380
- package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
- package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
- package/skills/cometchat-angular-calls/references/call-session.md +0 -167
- package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
- package/skills/cometchat-angular-calls/references/device-management.md +0 -154
- package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
- package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
- package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
- package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
- package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
- package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
- package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
- package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
- package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
- package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
- package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
- package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
- package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
- package/skills/cometchat-angular-components/SKILL.md +0 -235
- package/skills/cometchat-angular-core/SKILL.md +0 -386
- package/skills/cometchat-angular-customization/SKILL.md +0 -616
- package/skills/cometchat-angular-features/SKILL.md +0 -329
- package/skills/cometchat-angular-patterns/SKILL.md +0 -256
- package/skills/cometchat-angular-placement/SKILL.md +0 -314
- package/skills/cometchat-angular-production/SKILL.md +0 -564
- package/skills/cometchat-angular-push/SKILL.md +0 -389
- package/skills/cometchat-angular-testing/SKILL.md +0 -605
- package/skills/cometchat-angular-theming/SKILL.md +0 -290
- package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
- package/skills/cometchat-astro-patterns/SKILL.md +0 -708
- package/skills/cometchat-calls/SKILL.md +0 -364
- package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
- package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
- package/skills/cometchat-calls/references/use-case-support.md +0 -189
- package/skills/cometchat-calls/references/use-case-team.md +0 -180
- package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
- package/skills/cometchat-components/SKILL.md +0 -1142
- package/skills/cometchat-core/SKILL.md +0 -1048
- package/skills/cometchat-customization/SKILL.md +0 -580
- package/skills/cometchat-customization/references/component-catalog.md +0 -236
- package/skills/cometchat-features/SKILL.md +0 -861
- package/skills/cometchat-flutter-v5/SKILL.md +0 -173
- package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
- package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
- package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
- package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
- package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
- package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
- package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
- package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
- package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
- package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
- package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
- package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
- package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
- package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
- package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
- package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
- package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
- package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
- package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
- package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
- package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
- package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
- package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
- package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
- package/skills/cometchat-flutter-v6/SKILL.md +0 -446
- package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
- package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
- package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
- package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
- package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
- package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
- package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
- package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
- package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
- package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
- package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
- package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
- package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
- package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
- package/skills/cometchat-ios/SKILL.md +0 -325
- package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
- package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
- package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
- package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
- package/skills/cometchat-ios-calls/references/call-session.md +0 -218
- package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
- package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
- package/skills/cometchat-ios-calls/references/device-management.md +0 -171
- package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
- package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
- package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
- package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
- package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
- package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
- package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
- package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
- package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
- package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
- package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
- package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
- package/skills/cometchat-ios-theming/SKILL.md +0 -667
- package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
- package/skills/cometchat-native-calls/SKILL.md +0 -671
- package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
- package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
- package/skills/cometchat-native-calls/references/call-session.md +0 -182
- package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
- package/skills/cometchat-native-calls/references/device-management.md +0 -158
- package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
- package/skills/cometchat-native-calls/references/group-calls.md +0 -296
- package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
- package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
- package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
- package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
- package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
- package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
- package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
- package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
- package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
- package/skills/cometchat-native-calls/references/share-invite.md +0 -146
- package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
- package/skills/cometchat-native-components/SKILL.md +0 -628
- package/skills/cometchat-native-core/SKILL.md +0 -679
- package/skills/cometchat-native-customization/SKILL.md +0 -716
- package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
- package/skills/cometchat-native-features/SKILL.md +0 -638
- package/skills/cometchat-native-placement/SKILL.md +0 -509
- package/skills/cometchat-native-production/SKILL.md +0 -700
- package/skills/cometchat-native-push/SKILL.md +0 -594
- package/skills/cometchat-native-testing/SKILL.md +0 -582
- package/skills/cometchat-native-theming/SKILL.md +0 -681
- package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
- package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
- package/skills/cometchat-placement/SKILL.md +0 -1360
- package/skills/cometchat-production/SKILL.md +0 -1027
- package/skills/cometchat-react-calls/SKILL.md +0 -752
- package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
- package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
- package/skills/cometchat-react-calls/references/call-session.md +0 -235
- package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
- package/skills/cometchat-react-calls/references/device-management.md +0 -210
- package/skills/cometchat-react-calls/references/group-calls.md +0 -257
- package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
- package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
- package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
- package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
- package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
- package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
- package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
- package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
- package/skills/cometchat-react-calls/references/share-invite.md +0 -175
- package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
- package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
- package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
- package/skills/cometchat-react-patterns/SKILL.md +0 -628
- package/skills/cometchat-react-push/SKILL.md +0 -634
- package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
- package/skills/cometchat-react-testing/SKILL.md +0 -413
- package/skills/cometchat-theming/SKILL.md +0 -498
- package/skills/cometchat-troubleshooting/SKILL.md +0 -294
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
# Adding calls to an existing chat integration (Flutter V5)
|
|
2
|
-
|
|
3
|
-
You have `cometchat_chat_uikit` v5 working. Adding calls = the **raw 5.x calls SDK** (`cometchat_calls_sdk: ^5.0.2`, direct dependency) plus iOS/Android native config and a custom call surface.
|
|
4
|
-
|
|
5
|
-
> **Do NOT add `cometchat_calls_uikit`.** Its latest (5.0.16) pins `cometchat_calls_sdk ^4.2.2` and its prebuilt call widgets are 4.x-bound — incompatible with the 5.x calls SDK. Use the raw SDK + custom UI.
|
|
6
|
-
|
|
7
|
-
**Read first:** `cometchat-flutter-v5-calls/SKILL.md` — Flutter calls architecture (GetX patterns) + `references/call-session.md` for the canonical 5.x surface.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Step 1 — Add the calls package
|
|
12
|
-
|
|
13
|
-
```yaml
|
|
14
|
-
# pubspec.yaml
|
|
15
|
-
dependencies:
|
|
16
|
-
cometchat_chat_uikit: ^5.x.x # existing (GetX chat kit — keep)
|
|
17
|
-
cometchat_calls_sdk: ^5.0.2 # NEW — raw 5.x calls SDK (direct)
|
|
18
|
-
flutter_callkit_incoming: ^2.0.4 # for OS-level incoming-call UI
|
|
19
|
-
flutter_voip_pushkit: ^0.2.1 # iOS PushKit
|
|
20
|
-
firebase_messaging: ^15.0.0 # Android FCM
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
flutter pub get
|
|
25
|
-
cd ios && pod install
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## Step 2 — iOS + Android native config
|
|
31
|
-
|
|
32
|
-
**iOS** — same as native iOS calls (see `cometchat-ios-calls/references/add-calls-to-existing-chat.md`):
|
|
33
|
-
- Push Notifications + Background Modes (audio, voip, remote-notification) capabilities
|
|
34
|
-
- Info.plist: NSCameraUsageDescription, NSMicrophoneUsageDescription
|
|
35
|
-
|
|
36
|
-
**Android** — same as Android V5 calls (see `cometchat-android-v5-calls/references/add-calls-to-existing-chat.md`):
|
|
37
|
-
- All permissions
|
|
38
|
-
- ConnectionService declared
|
|
39
|
-
- `foregroundServiceType` for Android 14+
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Step 3 — Init order: chat → calls
|
|
44
|
-
|
|
45
|
-
In your existing init (typically `main.dart`):
|
|
46
|
-
|
|
47
|
-
```dart
|
|
48
|
-
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
|
|
49
|
-
import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';
|
|
50
|
-
|
|
51
|
-
Future<void> main() async {
|
|
52
|
-
WidgetsFlutterBinding.ensureInitialized();
|
|
53
|
-
|
|
54
|
-
// Existing chat init
|
|
55
|
-
final chatSettings = UIKitSettingsBuilder()
|
|
56
|
-
..setAppId(APP_ID)
|
|
57
|
-
..setRegion(REGION);
|
|
58
|
-
await CometChatUIKit.init(uiKitSettings: chatSettings.build());
|
|
59
|
-
|
|
60
|
-
// NEW: 5.x Calls SDK init AFTER chat init.
|
|
61
|
-
// init is callback-based (NOT awaitable) and takes a CallAppSettings built
|
|
62
|
-
// via CallAppSettingBuilder — no authKey field (call_app_settings_request.dart).
|
|
63
|
-
// Verified cometchatcalls.dart:172.
|
|
64
|
-
final callsSettings = (CallAppSettingBuilder()
|
|
65
|
-
..appId = APP_ID
|
|
66
|
-
..region = REGION)
|
|
67
|
-
.build();
|
|
68
|
-
CometChatCalls.init(
|
|
69
|
-
callsSettings,
|
|
70
|
-
onSuccess: (String success) {/* Calls SDK ready */},
|
|
71
|
-
onError: (CometChatCallsException e) {/* surface */},
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
runApp(const MyApp());
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Step 4 — Login BOTH SDKs (5.x Calls SDK has its own login)
|
|
81
|
-
|
|
82
|
-
Unlike 4.x, the 5.x Calls SDK logs in explicitly and caches the auth token (`cometchatcalls.dart:316`). Log the chat user in, then log the Calls SDK in with the same token:
|
|
83
|
-
|
|
84
|
-
```dart
|
|
85
|
-
final user = await CometChatUIKit.login(uid: uid, authKey: AUTH_KEY);
|
|
86
|
-
final authToken = await CometChat.getUserAuthToken(); // static; no User.getAuthToken() method
|
|
87
|
-
if (authToken != null) {
|
|
88
|
-
CometChatCalls.loginWithAuthToken(
|
|
89
|
-
authToken: authToken,
|
|
90
|
-
onSuccess: (cu) {/* Calls SDK ready */},
|
|
91
|
-
onError: (CometChatCallsException e) {/* surface */},
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Step 5 — Mount a custom incoming-call overlay at app root
|
|
99
|
-
|
|
100
|
-
There is no prebuilt `CometChatIncomingCall` on the raw 5.x SDK (that widget is 4.x-kit-only). Listen for incoming calls via the Chat SDK `CallListener` (app shell, SKILL.md rule 1.7) and show your own overlay; on accept, `CometChat.acceptCall(sessionId)` → `CometChatCalls.joinSession(...)`.
|
|
101
|
-
|
|
102
|
-
```dart
|
|
103
|
-
class MyApp extends StatelessWidget {
|
|
104
|
-
const MyApp({super.key});
|
|
105
|
-
@override
|
|
106
|
-
Widget build(BuildContext context) {
|
|
107
|
-
return MaterialApp(
|
|
108
|
-
navigatorKey: navigatorKey, // GlobalKey<NavigatorState> — rule 1.7
|
|
109
|
-
home: const Stack(
|
|
110
|
-
children: [
|
|
111
|
-
AppRoot(), // hosts the Chat SDK CallListener
|
|
112
|
-
MyIncomingCallOverlay(), // your custom ring UI
|
|
113
|
-
],
|
|
114
|
-
),
|
|
115
|
-
);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
## Step 6 — VoIP push registration
|
|
123
|
-
|
|
124
|
-
```dart
|
|
125
|
-
import 'dart:io';
|
|
126
|
-
import 'package:flutter_voip_pushkit/flutter_voip_pushkit.dart';
|
|
127
|
-
import 'package:firebase_messaging/firebase_messaging.dart';
|
|
128
|
-
|
|
129
|
-
class CallPushService {
|
|
130
|
-
Future<void> register(String userUid) async {
|
|
131
|
-
if (Platform.isIOS) {
|
|
132
|
-
final voip = FlutterVoipPushKit();
|
|
133
|
-
voip.onTokenRefresh.listen((token) {
|
|
134
|
-
api.registerCallToken(uid: userUid, platform: 'ios-voip', token: token);
|
|
135
|
-
});
|
|
136
|
-
await voip.configure();
|
|
137
|
-
} else if (Platform.isAndroid) {
|
|
138
|
-
final messaging = FirebaseMessaging.instance;
|
|
139
|
-
await messaging.requestPermission();
|
|
140
|
-
final token = await messaging.getToken();
|
|
141
|
-
if (token != null) {
|
|
142
|
-
await api.registerCallToken(uid: userUid, platform: 'android-fcm', token: token);
|
|
143
|
-
}
|
|
144
|
-
messaging.onTokenRefresh.listen((t) {
|
|
145
|
-
api.registerCallToken(uid: userUid, platform: 'android-fcm', token: t);
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
Trigger after `CometChatUIKit.login` completes (there is no separate Calls login).
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## Step 7 — Hangup teardown
|
|
157
|
-
|
|
158
|
-
```dart
|
|
159
|
-
Future<void> endCall(String sessionId) async {
|
|
160
|
-
// 5.x: teardown is the CallSession INSTANCE leaveSession() (call_session.dart:272).
|
|
161
|
-
// The static CometChatCalls.endSession exists (cometchatcalls.dart:676) but is
|
|
162
|
-
// @Deprecated and just delegates to leaveSession().
|
|
163
|
-
await CallSession.getInstance()?.leaveSession();
|
|
164
|
-
await CometChat.endCall(sessionId);
|
|
165
|
-
// OS-level UI dismiss via flutter_callkit_incoming
|
|
166
|
-
await FlutterCallkitIncoming.endCall(sessionId);
|
|
167
|
-
}
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## Verification checklist
|
|
173
|
-
|
|
174
|
-
- [ ] `cometchat_calls_sdk: ^5.0.2` (direct) + native plugins in pubspec; NO `cometchat_calls_uikit`
|
|
175
|
-
- [ ] iOS Background Modes + Info.plist usage descriptions
|
|
176
|
-
- [ ] Android permissions + ConnectionService declared
|
|
177
|
-
- [ ] Calls init AFTER chat init in main() (callback-based `CometChatCalls.init`, NOT awaited)
|
|
178
|
-
- [ ] `CometChatCalls.loginWithAuthToken(...)` after chat login (5.x has its own login)
|
|
179
|
-
- [ ] Custom incoming-call overlay driven by the Chat SDK `CallListener` (no `CometChatIncomingCall`)
|
|
180
|
-
- [ ] VoIP token registration triggered post-login
|
|
181
|
-
- [ ] Hangup teardown calls `CallSession.getInstance()?.leaveSession()` + `CometChat.endCall` + endCall (callkit)
|
|
182
|
-
- [ ] Real-device smoke: backgrounded incoming call rings on lock screen
|
|
183
|
-
- [ ] Run `cometchat verify --calls` — should pass
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
## Pointers
|
|
188
|
-
|
|
189
|
-
- `cometchat-react-calls/references/add-calls-to-existing-chat.md` — canonical
|
|
190
|
-
- `cometchat-flutter-v5-calls/SKILL.md` — GetX patterns
|
|
191
|
-
- `cometchat-flutter-v5-calls/references/server-push-bridge.md` — server-side push
|
|
192
|
-
- `cometchat-ios-calls/references/add-calls-to-existing-chat.md` — iOS native config
|
|
193
|
-
- `cometchat-android-v5-calls/references/add-calls-to-existing-chat.md` — Android native config
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
# Call layouts on Flutter V5 (GetX)
|
|
2
|
-
|
|
3
|
-
Same three layouts (TILE/SIDEBAR/SPOTLIGHT). Flutter-specific: `SegmentedButton` is the cross-platform native picker (Material 3); GetX wraps the SDK layout in an `Rx` for reactive UI.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:** https://www.cometchat.com/docs/calls/flutter/call-layouts
|
|
6
|
-
**Read first:** `cometchat-react-calls/references/call-layouts.md` — layout matrix.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## SDK API
|
|
11
|
-
|
|
12
|
-
`setLayout` is an **instance method on the `CallSession` singleton** (`cometchat_calls_sdk-5.0.2` `src/call_session.dart:394`), and the layout enum is `LayoutType { tile, sidebar, spotlight }` (`src/enums/layout_type.dart`) — there is no `CallLayout` type and no static `CometChatCalls.setLayout`.
|
|
13
|
-
|
|
14
|
-
```dart
|
|
15
|
-
import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';
|
|
16
|
-
|
|
17
|
-
// Initial layout via the (non-deprecated) SessionSettingsBuilder
|
|
18
|
-
final settings = (SessionSettingsBuilder()
|
|
19
|
-
..setLayout(LayoutType.tile) // session_settings.dart:179
|
|
20
|
-
..hideChangeLayoutButton(false)) // :293
|
|
21
|
-
.build();
|
|
22
|
-
|
|
23
|
-
// Mid-call switch — instance method on the session singleton
|
|
24
|
-
CallSession.getInstance()?.setLayout(LayoutType.spotlight); // call_session.dart:394
|
|
25
|
-
|
|
26
|
-
// Listen — implement LayoutListeners, attach via the layoutListener setter
|
|
27
|
-
// (CallSession.getInstance()?.layoutListener = myLayoutListener; call_session.dart:98).
|
|
28
|
-
@override
|
|
29
|
-
void onCallLayoutChanged(LayoutType layout) { // layout_listeners.dart:9
|
|
30
|
-
Get.find<CallLayoutController>().layout.value = layout;
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## GetX controller
|
|
37
|
-
|
|
38
|
-
```dart
|
|
39
|
-
class CallLayoutController extends GetxController {
|
|
40
|
-
final layout = LayoutType.tile.obs;
|
|
41
|
-
|
|
42
|
-
void set(LayoutType next) {
|
|
43
|
-
CallSession.getInstance()?.setLayout(next);
|
|
44
|
-
layout.value = next;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## SegmentedButton switcher
|
|
52
|
-
|
|
53
|
-
```dart
|
|
54
|
-
class LayoutSwitcher extends StatelessWidget {
|
|
55
|
-
const LayoutSwitcher({super.key});
|
|
56
|
-
|
|
57
|
-
@override
|
|
58
|
-
Widget build(BuildContext context) {
|
|
59
|
-
final ctrl = Get.find<CallLayoutController>();
|
|
60
|
-
return Obx(() => SegmentedButton<LayoutType>(
|
|
61
|
-
segments: const [
|
|
62
|
-
ButtonSegment(value: LayoutType.tile, label: Text('Tile')),
|
|
63
|
-
ButtonSegment(value: LayoutType.sidebar, label: Text('Sidebar')),
|
|
64
|
-
ButtonSegment(value: LayoutType.spotlight, label: Text('Spotlight')),
|
|
65
|
-
],
|
|
66
|
-
selected: {ctrl.layout.value},
|
|
67
|
-
onSelectionChanged: (set) {
|
|
68
|
-
if (set.isNotEmpty) ctrl.set(set.first);
|
|
69
|
-
},
|
|
70
|
-
));
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
`Obx` rebuilds when `layout` changes; the switcher stays in sync if the kit's switcher fires `onCallLayoutChanged`.
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Anti-patterns
|
|
80
|
-
|
|
81
|
-
Web sister rules apply, plus Flutter-specific:
|
|
82
|
-
|
|
83
|
-
1. **`DropdownButton` instead of `SegmentedButton`.** Hides the options. `SegmentedButton` is Material 3's radio-group equivalent.
|
|
84
|
-
2. **`StatefulWidget` with `setState` instead of GetX `Rx`.** Multiple components (toolbar, header) can't share layout state — GetX `Rx` solves it.
|
|
85
|
-
3. **Forgetting `Obx` wrapper.** UI doesn't react to changes from the kit's switcher.
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## Verification checklist
|
|
90
|
-
|
|
91
|
-
- [ ] `CallLayoutController` registered (via `Get.put` at call start)
|
|
92
|
-
- [ ] `SegmentedButton` wrapped in `Obx`
|
|
93
|
-
- [ ] `onCallLayoutChanged` updates the controller
|
|
94
|
-
- [ ] Initial layout via `setLayout` on builder
|
|
95
|
-
- [ ] Real-device smoke: switcher cycles all 3 on Android + iOS
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## Pointers
|
|
100
|
-
|
|
101
|
-
- `cometchat-react-calls/references/call-layouts.md` — sister
|
|
102
|
-
- `cometchat-flutter-v5-calls` SKILL.md
|
|
103
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/flutter/call-layouts
|
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
# Call session — joinSession, no ringing (Flutter V5 / GetX, 5.x Calls SDK)
|
|
2
|
-
|
|
3
|
-
Server-generated sessionId, both parties enter it. Built on the **5.x** Calls SDK (`cometchat_calls_sdk ^5.0.2`) added as a **direct** dependency (NOT pulled via `cometchat_calls_uikit`, which would bring 4.x). This is the canonical SDK API surface for all the V5 calls references.
|
|
4
|
-
|
|
5
|
-
**Read first:** `cometchat-react-calls/references/call-session.md` — full architecture (sessionId strategies, server-side authorization, token generation). Then come back here for the Flutter-specific shape.
|
|
6
|
-
|
|
7
|
-
> **5.x SHAPE.** Lifecycle is **static on `CometChatCalls`** (`init`/`login`/`loginWithAuthToken`/`generateCallToken`/`joinSession`/`getLoggedInUser` — `src/plugin/cometchatcalls.dart`). In-call controls are **instance methods on the `CallSession` singleton** via `CallSession.getInstance()` (`src/call_session.dart`). Settings use `SessionSettingsBuilder` (`src/builder/session_settings.dart`). Events arrive through the **5 split listeners** in `src/listener/`. Substrate of record: `~/.pub-cache/hosted/pub.dev/cometchat_calls_sdk-5.0.2/lib/`.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Hard rules (Flutter-specific overrides on top of the cross-platform rules)
|
|
12
|
-
|
|
13
|
-
1. **One step: `joinSession({sessionId:, sessionSettings:, onSuccess:, onError:})`** (`cometchatcalls.dart:735`). Provide EITHER `sessionId:` (the SDK mints the call token internally using the cached auth token) OR a pre-minted `callToken:` — not both. `onSuccess` hands back a `Widget?` you render. There is no `generateToken` + `startSession` two-step in the primary 5.x path (those are `@Deprecated` v4-compat shims, `cometchatcalls.dart:449,621`).
|
|
14
|
-
2. **`SessionSettingsBuilder` is the settings shape** (`builder/session_settings.dart:126`). e.g. `(SessionSettingsBuilder()..setTitle('Meeting')..startAudioMuted(false)..startVideoPaused(false)).build()`. `CallSettingsBuilder` is `@Deprecated` (`builder/call_settings.dart:209`).
|
|
15
|
-
3. **Implement the split listeners and register them on `CallSession.getInstance()`** inside `joinSession`'s `onSuccess` (the singleton is non-null only after the session is created). `SessionStatusListeners` (`addSessionStatusListener`, `call_session.dart:66`) carries `onSessionJoined`/`onSessionLeft`/`onConnectionClosed`/`onSessionTimedOut`/`onConnectionLost`/`onConnectionRestored`. Remove via `removeSessionStatusListener` in `dispose`. Do NOT use the single `CometChatCallsEventsListener` (`@Deprecated`).
|
|
16
|
-
4. **`CometChatOngoingCallService.launch()` + `.abort()`** (`services/ongoing_call_service.dart:33,51`) manage the platform foreground service. `launch()` after the session starts; `abort()` inside the guarded `_navigateBack()` helper (fires exactly once on the first termination event).
|
|
17
|
-
5. **Render the returned widget with `SizedBox.expand(child: videoWidget)`.** Anything that constrains it (Padding, undersized Container) clips the call UI.
|
|
18
|
-
6. **Log the Calls SDK in before joining.** `joinSession`/`generateCallToken` use the cached auth token from `CometChatCalls.loginWithAuthToken(...)` (or `CometChatCalls.login(...)`). Source that token with the static `await CometChat.getUserAuthToken()` (there is no `User.getAuthToken()` instance method).
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Dependencies
|
|
23
|
-
|
|
24
|
-
```yaml
|
|
25
|
-
dependencies:
|
|
26
|
-
cometchat_calls_sdk: ^5.0.2
|
|
27
|
-
cometchat_chat_sdk: ^4.0.0 # signaling + source of the auth token
|
|
28
|
-
permission_handler: ^11.0.0
|
|
29
|
-
uni_links: ^0.5.1
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Call screen (StatefulWidget + SessionStatusListeners)
|
|
35
|
-
|
|
36
|
-
```dart
|
|
37
|
-
import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';
|
|
38
|
-
import 'package:cometchat_sdk/cometchat_sdk.dart';
|
|
39
|
-
import 'package:flutter/material.dart';
|
|
40
|
-
|
|
41
|
-
class CallScreen extends StatefulWidget {
|
|
42
|
-
const CallScreen({super.key, required this.sessionId});
|
|
43
|
-
final String sessionId;
|
|
44
|
-
|
|
45
|
-
@override
|
|
46
|
-
State<CallScreen> createState() => _CallScreenState();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
class _CallScreenState extends State<CallScreen>
|
|
50
|
-
implements SessionStatusListeners {
|
|
51
|
-
Widget? _videoContainer;
|
|
52
|
-
bool _isLoading = true;
|
|
53
|
-
bool _hasError = false;
|
|
54
|
-
String? _errorMessage;
|
|
55
|
-
bool _isLeavingSession = false;
|
|
56
|
-
CallSession? _session;
|
|
57
|
-
|
|
58
|
-
@override
|
|
59
|
-
void initState() {
|
|
60
|
-
super.initState();
|
|
61
|
-
_startCall();
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
@override
|
|
65
|
-
void dispose() {
|
|
66
|
-
_session?.removeSessionStatusListener(this);
|
|
67
|
-
CometChatOngoingCallService.abort();
|
|
68
|
-
super.dispose();
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
Future<void> _startCall() async {
|
|
72
|
-
// Ensure the Calls SDK is logged in (caches the auth token used below).
|
|
73
|
-
final authToken = await CometChat.getUserAuthToken();
|
|
74
|
-
if (authToken != null) {
|
|
75
|
-
CometChatCalls.loginWithAuthToken( // cometchatcalls.dart:316
|
|
76
|
-
authToken: authToken,
|
|
77
|
-
onSuccess: (_) => _join(),
|
|
78
|
-
onError: (CometChatCallsException e) => _fail(e.message),
|
|
79
|
-
);
|
|
80
|
-
} else {
|
|
81
|
-
_join(); // already logged in via CometChatCalls.login earlier
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
void _join() {
|
|
86
|
-
final settings = (SessionSettingsBuilder()
|
|
87
|
-
..setTitle('CometChat Meeting') // session_settings.dart:155
|
|
88
|
-
..startAudioMuted(false) // :173
|
|
89
|
-
..startVideoPaused(false)) // :167
|
|
90
|
-
.build();
|
|
91
|
-
|
|
92
|
-
CometChatCalls.joinSession( // cometchatcalls.dart:735
|
|
93
|
-
sessionId: widget.sessionId, // SDK mints the call token internally
|
|
94
|
-
sessionSettings: settings,
|
|
95
|
-
onSuccess: (Widget? videoWidget) {
|
|
96
|
-
if (!mounted) return;
|
|
97
|
-
// Register split listeners now that the session exists.
|
|
98
|
-
_session = CallSession.getInstance(); // call_session.dart:36
|
|
99
|
-
_session?.addSessionStatusListener(this); // :66
|
|
100
|
-
CometChatOngoingCallService.launch(); // ongoing_call_service.dart:33
|
|
101
|
-
setState(() {
|
|
102
|
-
_videoContainer = videoWidget;
|
|
103
|
-
_isLoading = false;
|
|
104
|
-
_hasError = false;
|
|
105
|
-
});
|
|
106
|
-
},
|
|
107
|
-
onError: (CometChatCallsException error) => _fail(error.message),
|
|
108
|
-
);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
void _fail(String? msg) {
|
|
112
|
-
if (!mounted) return;
|
|
113
|
-
setState(() {
|
|
114
|
-
_isLoading = false;
|
|
115
|
-
_hasError = true;
|
|
116
|
-
_errorMessage = msg ?? 'Failed to join session';
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
void _navigateBack() {
|
|
121
|
-
// ONE guarded path for all termination events (onSessionLeft +
|
|
122
|
-
// onConnectionClosed + onSessionTimedOut). The 5.x SDK fires several in
|
|
123
|
-
// sequence on hangup; without the guard a second pop crashes with
|
|
124
|
-
// `Bad state: No element`.
|
|
125
|
-
if (_isLeavingSession) return;
|
|
126
|
-
if (!mounted) return;
|
|
127
|
-
if (!Navigator.of(context).canPop()) return;
|
|
128
|
-
_isLeavingSession = true;
|
|
129
|
-
CometChatOngoingCallService.abort();
|
|
130
|
-
Navigator.of(context).pop();
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// --- SessionStatusListeners (session_status_listeners.dart) ---
|
|
134
|
-
|
|
135
|
-
@override
|
|
136
|
-
void onSessionJoined() {}
|
|
137
|
-
|
|
138
|
-
@override
|
|
139
|
-
void onSessionLeft() => _navigateBack();
|
|
140
|
-
|
|
141
|
-
@override
|
|
142
|
-
void onConnectionClosed() => _navigateBack();
|
|
143
|
-
|
|
144
|
-
@override
|
|
145
|
-
void onSessionTimedOut() => _navigateBack();
|
|
146
|
-
|
|
147
|
-
@override
|
|
148
|
-
void onConnectionLost() {}
|
|
149
|
-
|
|
150
|
-
@override
|
|
151
|
-
void onConnectionRestored() {}
|
|
152
|
-
|
|
153
|
-
@override
|
|
154
|
-
Widget build(BuildContext context) {
|
|
155
|
-
return Scaffold(
|
|
156
|
-
backgroundColor: Colors.black,
|
|
157
|
-
resizeToAvoidBottomInset: false,
|
|
158
|
-
body: _buildBody(),
|
|
159
|
-
);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
Widget _buildBody() {
|
|
163
|
-
if (_isLoading) {
|
|
164
|
-
return const Center(child: CircularProgressIndicator(color: Colors.deepPurple));
|
|
165
|
-
}
|
|
166
|
-
if (_hasError) {
|
|
167
|
-
return Center(child: Text(_errorMessage ?? 'Error', style: const TextStyle(color: Colors.white)));
|
|
168
|
-
}
|
|
169
|
-
if (_videoContainer != null) {
|
|
170
|
-
return SizedBox.expand(child: _videoContainer);
|
|
171
|
-
}
|
|
172
|
-
return const SizedBox.shrink();
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
**Why this shape:**
|
|
178
|
-
|
|
179
|
-
- **Single-step `joinSession`** instead of `generateToken` + `startSession` — the 5.x primary path joins in one call; the call widget arrives via `joinSession`'s `onSuccess`.
|
|
180
|
-
- **`SessionSettingsBuilder`** instead of `CallSettingsBuilder` — the latter is `@Deprecated` in 5.0.2.
|
|
181
|
-
- **`SessionStatusListeners` registered on `CallSession.getInstance()`** instead of one `CometChatCallsEventsListener` on `CometChatCalls` — 5.x splits events across 5 listeners attached to the session singleton.
|
|
182
|
-
- **`CallSession.getInstance()?.leaveSession()`** for teardown (`call_session.dart:272`) — the static `CometChatCalls.endSession` exists (`cometchatcalls.dart:676`) but is `@Deprecated` and just delegates here.
|
|
183
|
-
- **`CometChatOngoingCallService.launch()/abort()`** — required for foreground-service correctness on Android 14+.
|
|
184
|
-
- **`SizedBox.expand`** — the SDK's returned widget must fill its parent.
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
## Ending the call from a button
|
|
189
|
-
|
|
190
|
-
```dart
|
|
191
|
-
ElevatedButton(
|
|
192
|
-
onPressed: () async {
|
|
193
|
-
await CallSession.getInstance()?.leaveSession(); // call_session.dart:272
|
|
194
|
-
// onSessionLeft then funnels through _navigateBack().
|
|
195
|
-
},
|
|
196
|
-
child: const Text('Leave'),
|
|
197
|
-
)
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
---
|
|
201
|
-
|
|
202
|
-
## Permissions (Android `AndroidManifest.xml` + iOS `Info.plist`)
|
|
203
|
-
|
|
204
|
-
Android:
|
|
205
|
-
```xml
|
|
206
|
-
<uses-permission android:name="android.permission.CAMERA" />
|
|
207
|
-
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
|
208
|
-
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
209
|
-
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
|
|
210
|
-
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
iOS:
|
|
214
|
-
```xml
|
|
215
|
-
<key>NSCameraUsageDescription</key>
|
|
216
|
-
<string>Camera is needed for video calls</string>
|
|
217
|
-
<key>NSMicrophoneUsageDescription</key>
|
|
218
|
-
<string>Microphone is needed for calls</string>
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
Runtime request before `_startCall`:
|
|
222
|
-
```dart
|
|
223
|
-
await Permission.camera.request();
|
|
224
|
-
await Permission.microphone.request();
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## Deep-link routing (uni_links)
|
|
230
|
-
|
|
231
|
-
```dart
|
|
232
|
-
void initDeepLinks() {
|
|
233
|
-
uriLinkStream.listen((Uri? uri) {
|
|
234
|
-
if (uri == null) return;
|
|
235
|
-
if (uri.pathSegments.length >= 2 && uri.pathSegments[0] == 'meet') {
|
|
236
|
-
final sessionId = uri.pathSegments[1];
|
|
237
|
-
Get.toNamed('/meet/$sessionId');
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
See `cometchat-flutter-v5-calls/references/share-invite.md` for full deep-link config.
|
|
244
|
-
|
|
245
|
-
---
|
|
246
|
-
|
|
247
|
-
## Anti-patterns
|
|
248
|
-
|
|
249
|
-
1. **Using `CallSettingsBuilder()` / `CallSettings(...)` instead of `SessionSettingsBuilder()`.** `CallSettingsBuilder` is `@Deprecated` in 5.0.2.
|
|
250
|
-
2. **`CometChatCalls.startSession` / `generateToken` two-step.** Those are `@Deprecated` v4-compat shims. Use `joinSession` with `sessionId:` (or `callToken:`).
|
|
251
|
-
3. **Single `CometChatCallsEventsListener`.** `@Deprecated` in 5.0.2. Use the 5 split listeners on `CallSession.getInstance()`.
|
|
252
|
-
4. **Registering listeners before `joinSession.onSuccess`.** `CallSession.getInstance()` is null until the session is created — register inside `onSuccess`.
|
|
253
|
-
5. **`CometChatOngoingCallController` / `CometChatOngoingCallView`.** These do not exist in the Calls SDK. Render the `Widget?` from `onSuccess`.
|
|
254
|
-
6. **Skipping `CometChatOngoingCallService.abort()` in cleanup paths.** Android foreground-service notification persists after the call ends.
|
|
255
|
-
7. **Rendering the returned widget inside a constrained `Container`.** Clips. Use `SizedBox.expand`.
|
|
256
|
-
8. **No `mounted` check before `Navigator.pop`.** Async callback fires after dispose → exception.
|
|
257
|
-
9. **Popping the navigator from each termination event independently.** Crashes with `Bad state: No element` on the second pop. Funnel all termination events through ONE guarded `_navigateBack()`.
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
## Verification checklist
|
|
262
|
-
|
|
263
|
-
- [ ] `joinSession(sessionId:, sessionSettings:, onSuccess:, onError:)` — NOT `generateToken`/`startSession`
|
|
264
|
-
- [ ] Settings built via `SessionSettingsBuilder()`, not `CallSettingsBuilder` / `CallSettings(...)`
|
|
265
|
-
- [ ] `SessionStatusListeners` implemented and registered on `CallSession.getInstance()` inside `onSuccess`; removed in `dispose`
|
|
266
|
-
- [ ] Calls SDK logged in (`loginWithAuthToken` / `login`) before `joinSession`
|
|
267
|
-
- [ ] Returned widget rendered via `SizedBox.expand(child: _videoContainer)`
|
|
268
|
-
- [ ] `CometChatOngoingCallService.launch()` after `onSuccess`; `.abort()` in EVERY termination path
|
|
269
|
-
- [ ] `mounted` check before `Navigator.pop`
|
|
270
|
-
- [ ] Single guarded `_navigateBack()` handles ALL termination events
|
|
271
|
-
- [ ] Teardown uses `CallSession.getInstance()?.leaveSession()`
|
|
272
|
-
- [ ] iOS `Info.plist` + Android `AndroidManifest.xml` permissions configured
|
|
273
|
-
- [ ] Real-device smoke: tap meeting link → app opens at /meet → joins → video flows → leave → notification clears
|
|
274
|
-
|
|
275
|
-
---
|
|
276
|
-
|
|
277
|
-
## Pointers
|
|
278
|
-
|
|
279
|
-
- `cometchat-react-calls/references/call-session.md` — cross-platform architecture
|
|
280
|
-
- `cometchat-flutter-v5-calls/SKILL.md` — Flutter V5 / GetX seven hard rules (5.x Calls SDK)
|
|
281
|
-
- `cometchat-flutter-v5-calls/references/share-invite.md` — deep-link config
|
|
282
|
-
- `cometchat-flutter-v6-calls/references/call-session.md` — V6 (Bloc) sibling on the SAME 5.0.2 SDK
|
|
283
|
-
- Substrate of record: `~/.pub-cache/hosted/pub.dev/cometchat_calls_sdk-5.0.2/lib/src/plugin/cometchatcalls.dart` + `src/call_session.dart`
|
|
284
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/flutter/join-session
|
|
285
|
-
```
|