@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,93 +0,0 @@
|
|
|
1
|
-
# Server-side push routing for Flutter V6 (iOS PushKit + Android FCM)
|
|
2
|
-
|
|
3
|
-
V6 uses the same server templates and platform plugins as V5. The only V6-specific delta is wrapping token registration in a Bloc.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:**
|
|
6
|
-
- iOS: `cometchat-ios-calls/references/server-apns-pushkit.md`
|
|
7
|
-
- Android: `cometchat-android-v5-calls/references/server-fcm-voip.md`
|
|
8
|
-
- Read first: `cometchat-flutter-v5-calls/references/server-push-bridge.md` — Flutter token registration patterns.
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Bloc-style token registration
|
|
13
|
-
|
|
14
|
-
```dart
|
|
15
|
-
class CallPushBloc extends Bloc<CallPushEvent, CallPushState> {
|
|
16
|
-
CallPushBloc({required this.api}) : super(const CallPushState.idle()) {
|
|
17
|
-
on<RegisterTokens>(_onRegister);
|
|
18
|
-
}
|
|
19
|
-
final Api api;
|
|
20
|
-
|
|
21
|
-
Future<void> _onRegister(RegisterTokens event, Emitter<CallPushState> emit) async {
|
|
22
|
-
emit(const CallPushState.registering());
|
|
23
|
-
try {
|
|
24
|
-
if (Platform.isIOS) {
|
|
25
|
-
final voip = FlutterVoipPushKit();
|
|
26
|
-
voip.onTokenRefresh.listen((token) {
|
|
27
|
-
api.registerCallToken(uid: event.uid, platform: 'ios-voip', token: token);
|
|
28
|
-
});
|
|
29
|
-
await voip.configure();
|
|
30
|
-
} else if (Platform.isAndroid) {
|
|
31
|
-
final messaging = FirebaseMessaging.instance;
|
|
32
|
-
await messaging.requestPermission();
|
|
33
|
-
final token = await messaging.getToken();
|
|
34
|
-
if (token != null) {
|
|
35
|
-
await api.registerCallToken(uid: event.uid, platform: 'android-fcm', token: token);
|
|
36
|
-
}
|
|
37
|
-
messaging.onTokenRefresh.listen((t) {
|
|
38
|
-
api.registerCallToken(uid: event.uid, platform: 'android-fcm', token: t);
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
emit(const CallPushState.registered());
|
|
42
|
-
} catch (err) {
|
|
43
|
-
emit(CallPushState.failed(err.toString()));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Dispatch after login completes:
|
|
50
|
-
|
|
51
|
-
```dart
|
|
52
|
-
BlocListener<AuthBloc, AuthState>(
|
|
53
|
-
listener: (context, state) {
|
|
54
|
-
if (state is Authenticated) {
|
|
55
|
-
context.read<CallPushBloc>().add(RegisterTokens(uid: state.uid));
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
child: const CallSurface(),
|
|
59
|
-
);
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## Server-side: unchanged from V5
|
|
65
|
-
|
|
66
|
-
Identical to V5 — same APNs PushKit + FCM HTTP v1 templates.
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Anti-patterns
|
|
71
|
-
|
|
72
|
-
V5 sister rules apply, plus V6-specific:
|
|
73
|
-
|
|
74
|
-
1. **Registering pushes in `main()` before MultiBlocProvider.** No bloc available; can't dispatch.
|
|
75
|
-
2. **Adding `RegisterTokens` from `BlocBuilder`.** BlocBuilder is for UI rebuilds. Use `BlocListener` for one-shot side effects.
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Verification checklist
|
|
80
|
-
|
|
81
|
-
- [ ] `CallPushBloc` provided above the auth flow
|
|
82
|
-
- [ ] BlocListener triggers `RegisterTokens` post-login
|
|
83
|
-
- [ ] Server templates wired (see V5 sister)
|
|
84
|
-
- [ ] Real-device smoke: both iOS and Android ring
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## Pointers
|
|
89
|
-
|
|
90
|
-
- `cometchat-flutter-v5-calls/references/server-push-bridge.md` — V5 sister (token registration patterns)
|
|
91
|
-
- `cometchat-ios-calls/references/server-apns-pushkit.md` — iOS canonical
|
|
92
|
-
- `cometchat-android-v5-calls/references/server-fcm-voip.md` — Android canonical
|
|
93
|
-
- `cometchat-flutter-v6-calls` SKILL.md
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
# Share invite on Flutter V6 (Bloc)
|
|
2
|
-
|
|
3
|
-
Same SDK + share_plus. V6-specific: wrap share state in a Cubit so the UI can disable the button while a share is in flight.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:** https://www.cometchat.com/docs/calls/flutter/share-invite
|
|
6
|
-
**Read first:** `cometchat-flutter-v5-calls/references/share-invite.md` — share_plus + deep-link config.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Cubit
|
|
11
|
-
|
|
12
|
-
```dart
|
|
13
|
-
class ShareInviteCubit extends Cubit<bool> {
|
|
14
|
-
ShareInviteCubit() : super(false); // false = idle, true = sharing
|
|
15
|
-
|
|
16
|
-
Future<void> share(String sessionId, {Rect? origin}) async {
|
|
17
|
-
if (state) return; // debounce
|
|
18
|
-
emit(true);
|
|
19
|
-
try {
|
|
20
|
-
final url = 'https://yourapp.com/call/$sessionId';
|
|
21
|
-
await Share.share(
|
|
22
|
-
"I'm on a call — tap to join.\n$url",
|
|
23
|
-
subject: 'Join my call',
|
|
24
|
-
sharePositionOrigin: origin,
|
|
25
|
-
);
|
|
26
|
-
} finally {
|
|
27
|
-
emit(false);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
The boolean state is enough; we don't need a sealed-class state hierarchy here.
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## Bridge from SDK event
|
|
38
|
-
|
|
39
|
-
```dart
|
|
40
|
-
@override
|
|
41
|
-
void onShareInviteButtonClicked() {
|
|
42
|
-
context.read<ShareInviteCubit>().share(sessionId);
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## App-built share button
|
|
49
|
-
|
|
50
|
-
```dart
|
|
51
|
-
class ShareInviteButton extends StatelessWidget {
|
|
52
|
-
final String sessionId;
|
|
53
|
-
const ShareInviteButton({super.key, required this.sessionId});
|
|
54
|
-
|
|
55
|
-
@override
|
|
56
|
-
Widget build(BuildContext context) {
|
|
57
|
-
return BlocBuilder<ShareInviteCubit, bool>(
|
|
58
|
-
builder: (context, sharing) => IconButton(
|
|
59
|
-
icon: sharing
|
|
60
|
-
? const SizedBox(width: 24, height: 24, child: CircularProgressIndicator(strokeWidth: 2))
|
|
61
|
-
: const Icon(Icons.share),
|
|
62
|
-
onPressed: sharing
|
|
63
|
-
? null
|
|
64
|
-
: () {
|
|
65
|
-
final box = context.findRenderObject() as RenderBox?;
|
|
66
|
-
context.read<ShareInviteCubit>().share(
|
|
67
|
-
sessionId,
|
|
68
|
-
origin: box != null ? box.localToGlobal(Offset.zero) & box.size : null,
|
|
69
|
-
);
|
|
70
|
-
},
|
|
71
|
-
),
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Anti-patterns
|
|
80
|
-
|
|
81
|
-
V5 sister rules apply, plus V6-specific:
|
|
82
|
-
|
|
83
|
-
1. **Full Bloc with events for a 1-state-update flow.** Cubit fits cleanly.
|
|
84
|
-
2. **Forgetting `try/finally` around `Share.share`.** If share throws, button stays in disabled state forever.
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## Verification checklist
|
|
89
|
-
|
|
90
|
-
- [ ] `ShareInviteCubit` provided above call screen
|
|
91
|
-
- [ ] Button disabled while sharing (BlocBuilder)
|
|
92
|
-
- [ ] iPad anchor passed via `sharePositionOrigin`
|
|
93
|
-
- [ ] `try/finally` ensures cubit resets even on error
|
|
94
|
-
- [ ] Real-device smoke: same as V5
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Pointers
|
|
99
|
-
|
|
100
|
-
- `cometchat-flutter-v5-calls/references/share-invite.md` — V5 sister
|
|
101
|
-
- `cometchat-flutter-v6-calls` SKILL.md
|
|
102
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/flutter/share-invite
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cometchat-flutter-v6-conversations
|
|
3
|
-
description: >
|
|
4
|
-
Use when implementing the conversations list with CometChat Flutter UIKit v6.
|
|
5
|
-
Triggers on mentions of CometChatConversations, ConversationsBloc, ConversationsState,
|
|
6
|
-
ConversationsLoaded, ConversationsServiceLocator, conversation list, recent chats,
|
|
7
|
-
unread count, typing indicator in conversations, conversation item, last message,
|
|
8
|
-
delete conversation, swipe actions, ConversationsRequestBuilder, onItemTap,
|
|
9
|
-
subtitleView, trailingView, listItemView, or customizing the conversations screen.
|
|
10
|
-
Also use when the user asks about showing a list of chats or recent conversations.
|
|
11
|
-
license: "MIT"
|
|
12
|
-
compatibility: "cometchat_chat_uikit ^6.0.1; flutter_bloc ^8.1.0"
|
|
13
|
-
metadata:
|
|
14
|
-
author: "CometChat"
|
|
15
|
-
version: "3.0.0"
|
|
16
|
-
tags: "cometchat flutter conversations chat-list recent-chats bloc"
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
> **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.
|
|
20
|
-
|
|
21
|
-
# CometChat Flutter UIKit — Conversations
|
|
22
|
-
|
|
23
|
-
The `CometChatConversations` widget displays a list of recent conversations with real-time updates.
|
|
24
|
-
|
|
25
|
-
## Basic Usage
|
|
26
|
-
|
|
27
|
-
```dart
|
|
28
|
-
CometChatConversations(
|
|
29
|
-
onItemTap: (conversation) {
|
|
30
|
-
final user = conversation.conversationWith is User
|
|
31
|
-
? conversation.conversationWith as User : null;
|
|
32
|
-
final group = conversation.conversationWith is Group
|
|
33
|
-
? conversation.conversationWith as Group : null;
|
|
34
|
-
Navigator.push(context, MaterialPageRoute(
|
|
35
|
-
builder: (_) => MessagesScreen(user: user, group: group),
|
|
36
|
-
));
|
|
37
|
-
},
|
|
38
|
-
)
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Architecture
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
conversations/ # Key folders (excerpt)
|
|
45
|
-
├── bloc/
|
|
46
|
-
│ ├── conversations_bloc.dart # SDK listeners, real-time updates, O(1) lookups
|
|
47
|
-
│ ├── conversations_event.dart # LoadConversations, DeleteConversation, etc.
|
|
48
|
-
│ └── conversations_state.dart # ConversationsInitial/Loading/Loaded/Empty/Error
|
|
49
|
-
├── domain/usecases/ # GetConversationsUseCase, DeleteConversationUseCase, etc.
|
|
50
|
-
├── data/ # Repository + DataSources (remote + local)
|
|
51
|
-
├── di/ # ConversationsServiceLocator (singleton)
|
|
52
|
-
├── utils/ # Helpers (date formatting, last-message preview, etc.)
|
|
53
|
-
├── widgets/ # List item, subtitle, trailing, empty/error/loading views
|
|
54
|
-
├── cometchat_conversations.dart # Public widget entry point
|
|
55
|
-
└── cometchat_conversations_style.dart # Style class
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## State Classes
|
|
59
|
-
|
|
60
|
-
```dart
|
|
61
|
-
ConversationsInitial // Before any data loaded
|
|
62
|
-
ConversationsLoading // Fetching initial list
|
|
63
|
-
ConversationsLoaded // Has data: conversations, hasMore, selectedConversations, isLoadingMore
|
|
64
|
-
ConversationsEmpty // No conversations exist
|
|
65
|
-
ConversationsError // Error with message + optional previousConversations
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
`ConversationsLoaded` uses a monotonically increasing `_version` counter to guarantee unique emissions even when conversation IDs haven't changed (SDK's `Conversation.==` only compares `conversationId`).
|
|
69
|
-
|
|
70
|
-
## Key Events
|
|
71
|
-
|
|
72
|
-
| Event | Purpose |
|
|
73
|
-
|-------|---------|
|
|
74
|
-
| `LoadConversations({silent})` | Initial load. `silent: true` keeps existing list visible during refresh. |
|
|
75
|
-
| `LoadMoreConversations` | Pagination (scroll to bottom) |
|
|
76
|
-
| `DeleteConversation(id)` | Calls SDK to delete |
|
|
77
|
-
| `RemoveConversation(id)` | Remove from list without SDK call (e.g., after group kick) |
|
|
78
|
-
| `SetActiveConversation(id)` | Track which conversation is open |
|
|
79
|
-
| `UpdateConversation({required conversationId, required updatedConversation, forceUpdate})` | Update a specific conversation's data. `forceUpdate` defaults to `true`. **Named params — positional form will not compile.** |
|
|
80
|
-
| `ResetUnreadCount(id)` | Clear unread badge when user reads messages |
|
|
81
|
-
| `RefreshConversations` | Re-fetch the list from the SDK (e.g., after a manual refresh gesture) |
|
|
82
|
-
| `ToggleConversationSelection(id)` | Add/remove a conversation from the multi-select set |
|
|
83
|
-
| `ClearConversationSelection` | Exit multi-select mode and clear selection |
|
|
84
|
-
|
|
85
|
-
## Real-Time Features
|
|
86
|
-
|
|
87
|
-
The BLoC automatically registers SDK listeners for:
|
|
88
|
-
- New messages → updates last message + moves conversation to top
|
|
89
|
-
- Typing indicators → per-conversation `ValueNotifier<List<TypingIndicator>>`
|
|
90
|
-
- User presence → online/offline status
|
|
91
|
-
- Read/delivery receipts → receipt icons
|
|
92
|
-
- Group events → member join/leave/kick/ban
|
|
93
|
-
- Connection state → reconnect triggers silent refresh
|
|
94
|
-
|
|
95
|
-
### Typing Indicators (ValueNotifier Pattern)
|
|
96
|
-
|
|
97
|
-
```dart
|
|
98
|
-
// In your custom list item, use ValueListenableBuilder for isolated rebuilds:
|
|
99
|
-
ValueListenableBuilder<List<TypingIndicator>>(
|
|
100
|
-
valueListenable: conversationsBloc.getTypingNotifier(conversation.conversationId!),
|
|
101
|
-
builder: (context, typingList, child) {
|
|
102
|
-
if (typingList.isEmpty) return _buildLastMessage();
|
|
103
|
-
return Text('${typingList.first.sender?.name} is typing...');
|
|
104
|
-
},
|
|
105
|
-
)
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## Customization — View Slots
|
|
109
|
-
|
|
110
|
-
```dart
|
|
111
|
-
CometChatConversations(
|
|
112
|
-
// Replace entire list item
|
|
113
|
-
listItemView: (conversation) => MyCustomListItem(conversation),
|
|
114
|
-
|
|
115
|
-
// Replace just the subtitle — two-arg builder (BuildContext, Conversation)
|
|
116
|
-
subtitleView: (context, conversation) => Text(conversation.lastMessage?.text ?? ''),
|
|
117
|
-
|
|
118
|
-
// Replace trailing (time + badge) — SINGLE-arg builder. Note the asymmetry:
|
|
119
|
-
// subtitleView/leadingView/titleView take (BuildContext, Conversation),
|
|
120
|
-
// but trailingView takes just (Conversation).
|
|
121
|
-
trailingView: (conversation) => MyTrailingWidget(conversation),
|
|
122
|
-
|
|
123
|
-
// Style overrides
|
|
124
|
-
conversationsStyle: CometChatConversationsStyle(
|
|
125
|
-
backgroundColor: colors.background1,
|
|
126
|
-
titleTextStyle: typography.heading3?.bold,
|
|
127
|
-
),
|
|
128
|
-
|
|
129
|
-
// Configuration (all bool? — defaults supplied if null)
|
|
130
|
-
usersStatusVisibility: true,
|
|
131
|
-
receiptsVisibility: true,
|
|
132
|
-
deleteConversationOptionVisibility: true,
|
|
133
|
-
hideAppbar: false,
|
|
134
|
-
showBackButton: true,
|
|
135
|
-
|
|
136
|
-
// Callbacks — onBack is REQUIRED when showBackButton: true, otherwise the button is a no-op
|
|
137
|
-
onBack: () => Navigator.of(context).maybePop(),
|
|
138
|
-
|
|
139
|
-
// Error callback — OnError typedef is `Function(Exception e)`
|
|
140
|
-
// Pair with hideError / errorStateView if you want to suppress or replace the in-widget error view.
|
|
141
|
-
onError: (Exception e) => ScaffoldMessenger.of(context).showSnackBar(
|
|
142
|
-
SnackBar(content: Text('Failed to load conversations: $e')),
|
|
143
|
-
),
|
|
144
|
-
|
|
145
|
-
// Other widget callbacks: onItemLongPress, onSelection, onEmpty, onLoad
|
|
146
|
-
|
|
147
|
-
// Text formatters for subtitle preview
|
|
148
|
-
textFormatters: [
|
|
149
|
-
CometChatMentionsFormatter(),
|
|
150
|
-
MarkdownTextFormatter(),
|
|
151
|
-
],
|
|
152
|
-
)
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
## Custom ConversationsRequest
|
|
156
|
-
|
|
157
|
-
```dart
|
|
158
|
-
CometChatConversations(
|
|
159
|
-
conversationsRequestBuilder: ConversationsRequestBuilder()
|
|
160
|
-
..limit = 30
|
|
161
|
-
..conversationType = 'user' // Only 1:1 chats
|
|
162
|
-
..withTags = true
|
|
163
|
-
..tags = ['important'],
|
|
164
|
-
)
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
## Gotchas
|
|
168
|
-
|
|
169
|
-
- `ConversationsLoaded` uses a `_version` counter because SDK's `Conversation.==` only compares `conversationId`. Without it, BLoC considers two lists with same IDs as equal even when `lastMessage` or `unreadMessageCount` changed, and skips the emission.
|
|
170
|
-
- The BLoC uses `_conversationIndexMap` for O(1) lookups. If you maintain your own list outside the BLoC, keep a parallel Map for performance.
|
|
171
|
-
- `silent: true` on `LoadConversations` keeps the existing list visible during refresh — use this for background→foreground and reconnect scenarios, not initial load.
|
|
172
|
-
- Typing indicators use `ValueNotifier` per conversation, NOT BLoC state. This prevents the entire list from rebuilding when one person types.
|
|
173
|
-
|
|
174
|
-
## Anti-Patterns
|
|
175
|
-
|
|
176
|
-
```dart
|
|
177
|
-
// ❌ WRONG — navigating with raw conversation object
|
|
178
|
-
onItemTap: (conv) => Navigator.push(context, MaterialPageRoute(
|
|
179
|
-
builder: (_) => MessagesScreen(conversation: conv), // MessagesScreen expects user OR group
|
|
180
|
-
))
|
|
181
|
-
|
|
182
|
-
// ✅ CORRECT — extract user/group from conversation
|
|
183
|
-
onItemTap: (conv) {
|
|
184
|
-
final user = conv.conversationWith is User ? conv.conversationWith as User : null;
|
|
185
|
-
final group = conv.conversationWith is Group ? conv.conversationWith as Group : null;
|
|
186
|
-
Navigator.push(context, MaterialPageRoute(
|
|
187
|
-
builder: (_) => MessagesScreen(user: user, group: group),
|
|
188
|
-
));
|
|
189
|
-
}
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
```dart
|
|
193
|
-
// ⚠️ The ServiceLocator is auto-initialized on first use, but calling
|
|
194
|
-
// setup() explicitly in main.dart before runApp() is the documented contract
|
|
195
|
-
// and surfaces any init failures early.
|
|
196
|
-
|
|
197
|
-
// ✅ RECOMMENDED — explicit setup, then construct
|
|
198
|
-
ConversationsServiceLocator.instance.setup();
|
|
199
|
-
final bloc = ConversationsBloc(
|
|
200
|
-
// Minimal example — the constructor also accepts:
|
|
201
|
-
// getConversationsUseCase, loadMoreConversationsUseCase,
|
|
202
|
-
// disableSDKListeners, conversationsRequestBuilder,
|
|
203
|
-
// usersStatusVisibility, receiptsVisibility, includeBlockedUsers,
|
|
204
|
-
// visibleItemThreshold, disableSoundForMessages, customSoundForMessages,
|
|
205
|
-
// conversationsProtocol — all optional.
|
|
206
|
-
getLoggedInUserUseCase: ConversationsServiceLocator.instance.getLoggedInUserUseCase,
|
|
207
|
-
getConversationUseCase: ConversationsServiceLocator.instance.getConversationUseCase,
|
|
208
|
-
markAsDeliveredUseCase: ConversationsServiceLocator.instance.markAsDeliveredUseCase,
|
|
209
|
-
deleteConversationUseCase: ConversationsServiceLocator.instance.deleteConversationUseCase,
|
|
210
|
-
);
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
```dart
|
|
214
|
-
// ❌ WRONG — rebuilding entire list for typing indicator
|
|
215
|
-
BlocBuilder<ConversationsBloc, ConversationsState>(
|
|
216
|
-
builder: (context, state) {
|
|
217
|
-
// This rebuilds ALL items when ANY state changes
|
|
218
|
-
},
|
|
219
|
-
)
|
|
220
|
-
|
|
221
|
-
// ✅ CORRECT — use ValueListenableBuilder per item
|
|
222
|
-
ValueListenableBuilder<List<TypingIndicator>>(
|
|
223
|
-
valueListenable: bloc.getTypingNotifier(conversationId),
|
|
224
|
-
builder: (_, typingList, __) { /* Only this item rebuilds */ },
|
|
225
|
-
)
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
## Checklist
|
|
229
|
-
|
|
230
|
-
- [ ] `onItemTap` extracts `User`/`Group` from `conversation.conversationWith`
|
|
231
|
-
- [ ] `onBack` wired when `showBackButton: true` (otherwise the back button is a no-op)
|
|
232
|
-
- [ ] `onError` callback (or `errorStateView` / `hideError`) wired so widget errors surface to users
|
|
233
|
-
- [ ] `subscriptionType` set in UIKitSettings (required for real-time updates)
|
|
234
|
-
- [ ] Typing indicators use `ValueListenableBuilder`, not BLoC state
|
|
235
|
-
- [ ] Custom list items use `CometChatThemeHelper` for colors
|
|
236
|
-
- [ ] Text formatters passed if using mentions or markdown in subtitle preview
|
|
237
|
-
- [ ] `deleteConversationOptionVisibility` set based on app requirements
|
|
238
|
-
- [ ] `UpdateConversation` dispatched with **named** params (`conversationId`, `updatedConversation`) — positional form will not compile
|