@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,161 +0,0 @@
|
|
|
1
|
-
# Idle timeout on Angular
|
|
2
|
-
|
|
3
|
-
Same SDK API as web. Angular-specific delta: NgZone wrap on the timeout event + Angular Material dialog or custom modal for the prompt.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:** https://www.cometchat.com/docs/calls/javascript/idle-timeout
|
|
6
|
-
**Read first:** `cometchat-react-calls/references/idle-timeout.md` — settings + archetype timeouts + custom prompt pattern.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## SDK API
|
|
11
|
-
|
|
12
|
-
The idle timeout is configured on the **`SessionSettings` object** passed to
|
|
13
|
-
`joinSession(callToken, sessionSettings, container)`, NOT on the builder.
|
|
14
|
-
|
|
15
|
-
- The builder (`CallSettingsBuilder`) has a single `setIdleTimeoutPeriod(ms)` method — there is
|
|
16
|
-
no `setIdleTimeoutPeriodBeforePrompt` / `setIdleTimeoutPeriodAfterPrompt` on it.
|
|
17
|
-
- The before/after split exists ONLY as `SessionSettings` object fields:
|
|
18
|
-
`idleTimeoutPeriodBeforePrompt` and `idleTimeoutPeriodAfterPrompt`.
|
|
19
|
-
- There is no `setSessionID()` on the builder — the session is identified by the call token
|
|
20
|
-
produced via `CometChatCalls.generateToken(sessionId, authToken)`.
|
|
21
|
-
|
|
22
|
-
```ts
|
|
23
|
-
// 1. token carries the session id
|
|
24
|
-
const { token } = await CometChatCalls.generateToken(sessionId, authToken);
|
|
25
|
-
|
|
26
|
-
// 2. idle timeout lives on the SessionSettings object
|
|
27
|
-
const sessionSettings = {
|
|
28
|
-
sessionType: "VIDEO",
|
|
29
|
-
idleTimeoutPeriodBeforePrompt: 60_000,
|
|
30
|
-
idleTimeoutPeriodAfterPrompt: 120_000,
|
|
31
|
-
} as const;
|
|
32
|
-
|
|
33
|
-
// addEventListener returns an unsubscribe fn — capture it (there is no removeEventListener).
|
|
34
|
-
const off = CometChatCalls.addEventListener("onSessionTimedOut", () => {
|
|
35
|
-
this.zone.run(() => {
|
|
36
|
-
this.router.navigate(["/"]);
|
|
37
|
-
this.snackBar.open("Call ended due to inactivity", "Dismiss", { duration: 5000 });
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
await CometChatCalls.joinSession(token, sessionSettings, container);
|
|
42
|
-
// later: off();
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
`NgZone.run` wrap is mandatory — without it, the navigation + snackbar don't fire because the SDK callback is outside Angular's zone.
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Service-level wiring
|
|
50
|
-
|
|
51
|
-
```ts
|
|
52
|
-
// services/idle-timeout.service.ts
|
|
53
|
-
import { Injectable, NgZone } from "@angular/core";
|
|
54
|
-
import { Router } from "@angular/router";
|
|
55
|
-
import { MatSnackBar } from "@angular/material/snack-bar";
|
|
56
|
-
import { CometChatCalls } from "@cometchat/calls-sdk-javascript";
|
|
57
|
-
|
|
58
|
-
@Injectable({ providedIn: "root" })
|
|
59
|
-
export class IdleTimeoutService {
|
|
60
|
-
// addEventListener returns the unsubscribe fn — there is no CometChatCalls.removeEventListener.
|
|
61
|
-
private off?: () => void;
|
|
62
|
-
|
|
63
|
-
constructor(
|
|
64
|
-
private zone: NgZone,
|
|
65
|
-
private router: Router,
|
|
66
|
-
private snackBar: MatSnackBar,
|
|
67
|
-
) {}
|
|
68
|
-
|
|
69
|
-
attachToCallSession() {
|
|
70
|
-
this.off = CometChatCalls.addEventListener("onSessionTimedOut", () => {
|
|
71
|
-
this.zone.run(() => {
|
|
72
|
-
this.router.navigate(["/"]);
|
|
73
|
-
this.snackBar.open("Call ended due to inactivity", "Dismiss", { duration: 5000 });
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
detach() {
|
|
79
|
-
this.off?.();
|
|
80
|
-
this.off = undefined;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Call `attachToCallSession()` from the OngoingCallComponent's `ngOnInit`, `detach()` from `ngOnDestroy`.
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## Custom prompt — Angular Material Dialog
|
|
90
|
-
|
|
91
|
-
```ts
|
|
92
|
-
import { MatDialog } from "@angular/material/dialog";
|
|
93
|
-
import { Component } from "@angular/core";
|
|
94
|
-
|
|
95
|
-
@Component({
|
|
96
|
-
template: `
|
|
97
|
-
<h2 mat-dialog-title>Still there?</h2>
|
|
98
|
-
<mat-dialog-content>
|
|
99
|
-
You're alone in this call. It'll end in 60 seconds.
|
|
100
|
-
</mat-dialog-content>
|
|
101
|
-
<mat-dialog-actions>
|
|
102
|
-
<button mat-button [mat-dialog-close]="'stay'">Stay</button>
|
|
103
|
-
<button mat-button color="warn" [mat-dialog-close]="'end'">End now</button>
|
|
104
|
-
</mat-dialog-actions>
|
|
105
|
-
`,
|
|
106
|
-
})
|
|
107
|
-
export class IdleTimeoutDialogComponent {}
|
|
108
|
-
|
|
109
|
-
// Use:
|
|
110
|
-
@Component({ /* ... */ })
|
|
111
|
-
export class OngoingCallComponent {
|
|
112
|
-
constructor(private dialog: MatDialog) {}
|
|
113
|
-
|
|
114
|
-
showIdlePrompt() {
|
|
115
|
-
const ref = this.dialog.open(IdleTimeoutDialogComponent, {
|
|
116
|
-
disableClose: true,
|
|
117
|
-
ariaLabel: "Idle timeout warning",
|
|
118
|
-
});
|
|
119
|
-
ref.afterClosed().subscribe(result => {
|
|
120
|
-
if (result === "end") {
|
|
121
|
-
CometChatCalls.leaveSession(); // v5 canonical (endSession is deprecated)
|
|
122
|
-
}
|
|
123
|
-
// 'stay' → reset your custom timer (see Pattern A in web ref)
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
`disableClose: true` prevents the user from dismissing via Esc/backdrop — they must explicitly choose. `ariaLabel` for screen readers.
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## Anti-patterns
|
|
134
|
-
|
|
135
|
-
Web sister reference rules apply, plus Angular-specific:
|
|
136
|
-
|
|
137
|
-
1. **No `NgZone.run` wrap on the listener.** Navigation + snackbar fire silently because change detection doesn't trigger.
|
|
138
|
-
2. **`MatDialog` opened from `setTimeout` callback** without zone wrap. Dialog opens but template doesn't render.
|
|
139
|
-
3. **Subscription leaks** — `dialog.afterClosed()` returns an Observable; if you don't unsubscribe (or use `take(1)` / `first()`), it leaks across calls.
|
|
140
|
-
4. **Service NOT provided in `root`.** Lazy-loaded → listener attaches late.
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## Verification checklist
|
|
145
|
-
|
|
146
|
-
- [ ] `IdleTimeoutService` provided in root
|
|
147
|
-
- [ ] Listener wraps in `NgZone.run`
|
|
148
|
-
- [ ] Service `attachToCallSession()` called from OngoingCall `ngOnInit`
|
|
149
|
-
- [ ] Service `detach()` called from `ngOnDestroy`
|
|
150
|
-
- [ ] Dialog uses `disableClose: true` + `ariaLabel`
|
|
151
|
-
- [ ] `dialog.afterClosed()` subscription doesn't leak (use `first()` or unsubscribe)
|
|
152
|
-
- [ ] Browser smoke: 2 tabs in call, hangup one → other shows snackbar after configured delay
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## Pointers
|
|
157
|
-
|
|
158
|
-
- `cometchat-react-calls/references/idle-timeout.md` — sister reference
|
|
159
|
-
- `cometchat-angular-calls` SKILL.md
|
|
160
|
-
- `references/ngzone-and-async-callbacks.md` — NgZone primer
|
|
161
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/javascript/idle-timeout
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
# In-call chat on Angular
|
|
2
|
-
|
|
3
|
-
Same SDK API as web. Angular wraps panel state in a service + uses Angular Material's `MatSidenav` for the side-drawer chat panel pattern.
|
|
4
|
-
|
|
5
|
-
**Canonical docs:** https://www.cometchat.com/docs/calls/javascript/in-call-chat
|
|
6
|
-
**Read first:** `cometchat-react-calls/references/in-call-chat.md` — group-as-session architecture, anti-patterns.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## SDK + service
|
|
11
|
-
|
|
12
|
-
```ts
|
|
13
|
-
import { Injectable, NgZone } from "@angular/core";
|
|
14
|
-
import { BehaviorSubject } from "rxjs";
|
|
15
|
-
import { CometChatCalls } from "@cometchat/calls-sdk-javascript";
|
|
16
|
-
import { CometChat } from "@cometchat/chat-sdk-javascript";
|
|
17
|
-
|
|
18
|
-
@Injectable({ providedIn: "root" })
|
|
19
|
-
export class InCallChatService {
|
|
20
|
-
readonly open$ = new BehaviorSubject<boolean>(false);
|
|
21
|
-
readonly unread$ = new BehaviorSubject<number>(0);
|
|
22
|
-
|
|
23
|
-
constructor(private zone: NgZone) {
|
|
24
|
-
CometChatCalls.addEventListener("onChatButtonClicked", () => {
|
|
25
|
-
this.zone.run(() => this.open$.next(true));
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
async ensureGroup(sessionId: string): Promise<CometChat.Group> {
|
|
30
|
-
try {
|
|
31
|
-
return await CometChat.getGroup(sessionId);
|
|
32
|
-
} catch {
|
|
33
|
-
const group = new CometChat.Group(sessionId, `Call ${sessionId}`, CometChat.GROUP_TYPE.PUBLIC);
|
|
34
|
-
return await CometChat.createGroup(group);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async joinGroup(sessionId: string): Promise<void> {
|
|
39
|
-
await CometChat.joinGroup(sessionId, CometChat.GROUP_TYPE.PUBLIC, "");
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
trackUnread(sessionId: string): void {
|
|
43
|
-
const listenerId = `in-call-chat-${sessionId}`;
|
|
44
|
-
const listener = new CometChat.MessageListener({
|
|
45
|
-
onTextMessageReceived: (msg: CometChat.TextMessage) => {
|
|
46
|
-
if (
|
|
47
|
-
msg.getReceiverType() === CometChat.RECEIVER_TYPE.GROUP &&
|
|
48
|
-
msg.getReceiverId() === sessionId &&
|
|
49
|
-
!this.open$.value
|
|
50
|
-
) {
|
|
51
|
-
this.zone.run(() => {
|
|
52
|
-
const next = this.unread$.value + 1;
|
|
53
|
-
this.unread$.next(next);
|
|
54
|
-
CometChatCalls.setChatButtonUnreadCount(next);
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
CometChat.addMessageListener(listenerId, listener);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
open(): void {
|
|
63
|
-
this.open$.next(true);
|
|
64
|
-
this.unread$.next(0);
|
|
65
|
-
CometChatCalls.setChatButtonUnreadCount(0);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
close(): void {
|
|
69
|
-
this.open$.next(false);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Panel component (MatSidenav)
|
|
77
|
-
|
|
78
|
-
```ts
|
|
79
|
-
@Component({
|
|
80
|
-
selector: "app-in-call-chat",
|
|
81
|
-
template: `
|
|
82
|
-
<mat-sidenav-container [hasBackdrop]="false">
|
|
83
|
-
<mat-sidenav
|
|
84
|
-
#drawer
|
|
85
|
-
position="end"
|
|
86
|
-
mode="side"
|
|
87
|
-
[opened]="open$ | async"
|
|
88
|
-
(closed)="svc.close()"
|
|
89
|
-
role="dialog"
|
|
90
|
-
aria-label="In-call chat"
|
|
91
|
-
>
|
|
92
|
-
<ng-container *ngIf="group">
|
|
93
|
-
<cometchat-message-list [group]="group" [hideReplyInThreadOption]="true"></cometchat-message-list>
|
|
94
|
-
<cometchat-message-composer [group]="group"></cometchat-message-composer>
|
|
95
|
-
</ng-container>
|
|
96
|
-
</mat-sidenav>
|
|
97
|
-
<mat-sidenav-content>
|
|
98
|
-
<!-- call surface goes here -->
|
|
99
|
-
<ng-content></ng-content>
|
|
100
|
-
</mat-sidenav-content>
|
|
101
|
-
</mat-sidenav-container>
|
|
102
|
-
`,
|
|
103
|
-
})
|
|
104
|
-
export class InCallChatComponent implements OnInit {
|
|
105
|
-
@Input() sessionId!: string;
|
|
106
|
-
open$ = this.svc.open$;
|
|
107
|
-
group?: CometChat.Group;
|
|
108
|
-
|
|
109
|
-
constructor(public svc: InCallChatService) {}
|
|
110
|
-
|
|
111
|
-
async ngOnInit() {
|
|
112
|
-
this.group = await this.svc.ensureGroup(this.sessionId);
|
|
113
|
-
this.svc.trackUnread(this.sessionId);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
`mode="side"` makes the drawer slide out without an overlay backdrop — call view stays visible. `[hasBackdrop]="false"` doubles down.
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
## Anti-patterns
|
|
123
|
-
|
|
124
|
-
Web sister rules apply, plus Angular-specific:
|
|
125
|
-
|
|
126
|
-
1. **No `NgZone.run` wrap on `onChatButtonClicked`.** Drawer doesn't open in OnPush components.
|
|
127
|
-
2. **`MatSidenav` `mode="over"`.** Backdrop blocks the call. Use `mode="side"`.
|
|
128
|
-
3. **Service NOT in `root`.** Lazy module → button events miss.
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## Verification checklist
|
|
133
|
-
|
|
134
|
-
- [ ] `InCallChatService` provided in root
|
|
135
|
-
- [ ] `NgZone.run` wraps the chat-button event
|
|
136
|
-
- [ ] `MatSidenav` uses `mode="side"` + `hasBackdrop="false"`
|
|
137
|
-
- [ ] Group resolved on `ngOnInit`
|
|
138
|
-
- [ ] Unread badge updates via service, clears on open
|
|
139
|
-
- [ ] Browser smoke: 2 tabs, chat works, unread badge increments
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## Pointers
|
|
144
|
-
|
|
145
|
-
- `cometchat-react-calls/references/in-call-chat.md` — sister web reference
|
|
146
|
-
- `cometchat-angular-calls` SKILL.md
|
|
147
|
-
- `references/ngzone-and-async-callbacks.md`
|
|
148
|
-
- Canonical docs: https://www.cometchat.com/docs/calls/javascript/in-call-chat
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
# Lazy loading + calls in Angular — pitfalls
|
|
2
|
-
|
|
3
|
-
Calls have a tighter relationship with bootstrap than chat does. Lazy-loading the calls module breaks several invariants.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## The core problem
|
|
8
|
-
|
|
9
|
-
`APP_INITIALIZER` runs at app bootstrap, before any router activates. The Calls SDK init must complete BEFORE incoming calls can fire — otherwise the listener doesn't exist when the first call rings.
|
|
10
|
-
|
|
11
|
-
If you lazy-load the calls module:
|
|
12
|
-
|
|
13
|
-
```ts
|
|
14
|
-
// app-routing.module.ts
|
|
15
|
-
{ path: "calls", loadChildren: () => import("./calls/calls.module").then(m => m.CallsModule) }
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Then `CallInitService` (which lives in `CallsModule`) doesn't exist at bootstrap. APP_INITIALIZER can't reference it. Two failure modes:
|
|
19
|
-
|
|
20
|
-
1. **Init never runs** — until the user navigates to `/calls`, the SDK is uninitialized. Incoming calls miss.
|
|
21
|
-
2. **Race condition** — user navigates to `/calls`, the lazy module loads, init runs, but a call had been incoming during the navigation gap. That call is lost.
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Fix: split the service from the component
|
|
26
|
-
|
|
27
|
-
Keep `CallInitService` in `AppModule` (eager). Keep the call UI components in `CallsModule` (lazy).
|
|
28
|
-
|
|
29
|
-
```ts
|
|
30
|
-
// app.module.ts (eager)
|
|
31
|
-
@NgModule({
|
|
32
|
-
providers: [
|
|
33
|
-
CallInitService, // EAGER — service is at bootstrap
|
|
34
|
-
{
|
|
35
|
-
provide: APP_INITIALIZER,
|
|
36
|
-
useFactory: (svc: CallInitService) => () => svc.init(),
|
|
37
|
-
deps: [CallInitService],
|
|
38
|
-
multi: true,
|
|
39
|
-
},
|
|
40
|
-
],
|
|
41
|
-
})
|
|
42
|
-
export class AppModule {}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
```ts
|
|
46
|
-
// calls/calls.module.ts (lazy)
|
|
47
|
-
@NgModule({
|
|
48
|
-
declarations: [
|
|
49
|
-
OngoingCallComponent,
|
|
50
|
-
CallLogsComponent,
|
|
51
|
-
CallButtonComponent,
|
|
52
|
-
],
|
|
53
|
-
imports: [
|
|
54
|
-
RouterModule.forChild([
|
|
55
|
-
{ path: "ongoing/:id", component: OngoingCallComponent, canDeactivate: [CallDeactivateGuard] },
|
|
56
|
-
{ path: "logs", component: CallLogsComponent },
|
|
57
|
-
]),
|
|
58
|
-
],
|
|
59
|
-
})
|
|
60
|
-
export class CallsModule {}
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
The components reference `CallInitService` via DI; Angular finds it from the parent injector (AppModule).
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## Pitfall 2: `<cometchat-incoming-call>` in a lazy module
|
|
68
|
-
|
|
69
|
-
Incoming calls must ring on every screen — not just `/calls`. Mounting `<cometchat-incoming-call>` inside `CallsModule`'s components means:
|
|
70
|
-
|
|
71
|
-
- User on `/dashboard` → no incoming-call listener → calls miss
|
|
72
|
-
- User navigates to `/calls/logs` → listener mounts → calls now ring
|
|
73
|
-
- User navigates back to `/dashboard` → listener unmounts → calls miss again
|
|
74
|
-
|
|
75
|
-
**Fix:** mount `<cometchat-incoming-call>` in `AppComponent`'s template (the root of the application, NOT in any feature module):
|
|
76
|
-
|
|
77
|
-
```html
|
|
78
|
-
<!-- app.component.html -->
|
|
79
|
-
<cometchat-incoming-call></cometchat-incoming-call>
|
|
80
|
-
<router-outlet></router-outlet>
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
`AppModule` must import enough of `@cometchat/chat-uikit-angular` to render this selector — usually `CometChatUIKitModule.forRoot({...})`. Schemas option `CUSTOM_ELEMENTS_SCHEMA` works too.
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Pitfall 3: standalone components + lazy-loaded calls
|
|
88
|
-
|
|
89
|
-
Angular 14+ standalone components don't have a parent `NgModule`. The DI tree is different — APP_INITIALIZER lives at the bootstrap providers level:
|
|
90
|
-
|
|
91
|
-
```ts
|
|
92
|
-
// main.ts
|
|
93
|
-
bootstrapApplication(AppComponent, {
|
|
94
|
-
providers: [
|
|
95
|
-
CallInitService, // root-provided — visible everywhere
|
|
96
|
-
{
|
|
97
|
-
provide: APP_INITIALIZER,
|
|
98
|
-
useFactory: (svc: CallInitService) => () => svc.init(),
|
|
99
|
-
deps: [CallInitService],
|
|
100
|
-
multi: true,
|
|
101
|
-
},
|
|
102
|
-
provideRouter([
|
|
103
|
-
// Lazy-loaded standalone routes
|
|
104
|
-
{ path: "calls/ongoing/:id", loadComponent: () => import("./calls/ongoing-call.component").then(m => m.OngoingCallComponent) },
|
|
105
|
-
]),
|
|
106
|
-
],
|
|
107
|
-
});
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
The lazy `loadComponent` works fine because `CallInitService` is at the root.
|
|
111
|
-
|
|
112
|
-
`<cometchat-incoming-call>` is a standalone component too:
|
|
113
|
-
|
|
114
|
-
```ts
|
|
115
|
-
// app.component.ts
|
|
116
|
-
import { CometChatIncomingCallComponent } from "@cometchat/chat-uikit-angular";
|
|
117
|
-
|
|
118
|
-
@Component({
|
|
119
|
-
standalone: true,
|
|
120
|
-
selector: "app-root",
|
|
121
|
-
imports: [RouterOutlet, CometChatIncomingCallComponent],
|
|
122
|
-
template: `
|
|
123
|
-
<cometchat-incoming-call></cometchat-incoming-call>
|
|
124
|
-
<router-outlet></router-outlet>
|
|
125
|
-
`,
|
|
126
|
-
})
|
|
127
|
-
export class AppComponent {}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
(Verify the export name in your installed `@cometchat/chat-uikit-angular` version — may differ between minor releases.)
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
## Pitfall 4: SSR (Angular Universal)
|
|
135
|
-
|
|
136
|
-
The Calls SDK uses browser-only APIs (`getUserMedia`, `RTCPeerConnection`). If your app uses Angular Universal, the calls service must NOT initialize on the server:
|
|
137
|
-
|
|
138
|
-
```ts
|
|
139
|
-
import { isPlatformBrowser } from "@angular/common";
|
|
140
|
-
import { Inject, PLATFORM_ID } from "@angular/core";
|
|
141
|
-
|
|
142
|
-
@Injectable({ providedIn: "root" })
|
|
143
|
-
export class CallInitService {
|
|
144
|
-
constructor(@Inject(PLATFORM_ID) private platformId: object) {}
|
|
145
|
-
|
|
146
|
-
async init(): Promise<void> {
|
|
147
|
-
if (!isPlatformBrowser(this.platformId)) return; // skip on server
|
|
148
|
-
// ... actual init
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
Without this guard, the SSR build crashes with `ReferenceError: window is not defined` at boot.
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## Pitfall 5: Multiple `APP_INITIALIZER`s
|
|
158
|
-
|
|
159
|
-
If your project already uses `APP_INITIALIZER` for chat init, calls init goes alongside — not as a replacement:
|
|
160
|
-
|
|
161
|
-
```ts
|
|
162
|
-
providers: [
|
|
163
|
-
ChatInitService,
|
|
164
|
-
CallInitService,
|
|
165
|
-
{
|
|
166
|
-
provide: APP_INITIALIZER,
|
|
167
|
-
useFactory: (chat: ChatInitService) => () => chat.init(),
|
|
168
|
-
deps: [ChatInitService],
|
|
169
|
-
multi: true, // ← multi: true is critical
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
provide: APP_INITIALIZER,
|
|
173
|
-
useFactory: (calls: CallInitService) => () => calls.init(),
|
|
174
|
-
deps: [CallInitService],
|
|
175
|
-
multi: true,
|
|
176
|
-
},
|
|
177
|
-
]
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
Both register; both run before bootstrap. They run in registration order — chat first, then calls (matches rule 1.1's chat-init-before-calls-init).
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## Pitfall 6: Forgetting the route deactivate guard for ongoing calls
|
|
185
|
-
|
|
186
|
-
Without `CanDeactivate`, the user can route away mid-call and the call screen unmounts but the SDK session keeps running. Camera light stays on (rule 1.5 violation).
|
|
187
|
-
|
|
188
|
-
```ts
|
|
189
|
-
// calls-routing.module.ts
|
|
190
|
-
{ path: "ongoing/:id", component: OngoingCallComponent, canDeactivate: [CallDeactivateGuard] }
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
The guard is in `references/custom-ui.md`.
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
## Summary
|
|
198
|
-
|
|
199
|
-
| Place | What goes here |
|
|
200
|
-
|---|---|
|
|
201
|
-
| `AppModule` (eager) | `CallInitService`, `APP_INITIALIZER`, `<cometchat-incoming-call>` |
|
|
202
|
-
| `CallsModule` (lazy) | UI components (OngoingCall, CallLogs, CallButton), feature routes |
|
|
203
|
-
| App root template | `<cometchat-incoming-call>` mounted above `<router-outlet>` |
|
|
204
|
-
| Routes | `canDeactivate` guard on the ongoing-call route |
|
|
205
|
-
| SSR | `isPlatformBrowser` check inside init service |
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Calls SDK v4 → v5 migration (Angular)
|
|
2
|
-
|
|
3
|
-
Angular ships the same `@cometchat/calls-sdk-javascript` as React/Vue, so the migration steps are identical. Angular-specific deltas: NgZone wrapping for the new event listeners.
|
|
4
|
-
|
|
5
|
-
**Read first:** `cometchat-react-calls/references/migration-v4-to-v5.md` — full step-by-step (init, login, settings, events, methods).
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Step 1 — Bump the package
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npm install @cometchat/calls-sdk-javascript@5
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Angular-specific delta: NgZone for new event listeners
|
|
18
|
-
|
|
19
|
-
When migrating from `OngoingCallListener` to `addEventListener`, Angular needs `NgZone.run` to update OnPush components — listeners fire outside Angular's zone:
|
|
20
|
-
|
|
21
|
-
```ts
|
|
22
|
-
@Injectable({ providedIn: "root" })
|
|
23
|
-
export class CallEventService {
|
|
24
|
-
constructor(private zone: NgZone) {
|
|
25
|
-
// v4 — listener was inside CometChatCalls.OngoingCallListener; if your
|
|
26
|
-
// current code already wraps callbacks with NgZone.run, keep that.
|
|
27
|
-
// v5 — addEventListener fires outside zone:
|
|
28
|
-
CometChatCalls.addEventListener("onSessionLeft", () => {
|
|
29
|
-
this.zone.run(() => this.onSessionLeft$.next());
|
|
30
|
-
});
|
|
31
|
-
CometChatCalls.addEventListener("onParticipantJoined", (p) => {
|
|
32
|
-
this.zone.run(() => this.participantJoined$.next(p));
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
If you skip the `NgZone.run` wrap, OnPush components don't re-render when call state changes.
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Verification checklist
|
|
43
|
-
|
|
44
|
-
- [ ] All v5 event listeners wrapped in `NgZone.run`
|
|
45
|
-
- [ ] All sister checks from the canonical migration guide
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Pointers
|
|
50
|
-
|
|
51
|
-
- Canonical migration: `cometchat-react-calls/references/migration-v4-to-v5.md`
|
|
52
|
-
- Canonical Web Push event handling: `references/ngzone-and-async-callbacks.md`
|
|
53
|
-
- https://www.cometchat.com/docs/calls/javascript/migration-guide-v5
|