@cometchat/skills 4.4.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +55 -0
- package/.claude-plugin/plugin.json +14 -0
- package/CHANGELOG.md +36 -0
- package/LICENSE +21 -0
- package/README.md +41 -163
- package/RULES.md +114 -0
- package/bin/cometchat-skills.mjs +1180 -0
- package/bin/legacy-skills.json +95 -0
- package/catalogs/android-v6.json +1646 -0
- package/catalogs/flutter-v6.json +651 -0
- package/catalogs/ios-v5.json +1383 -0
- package/catalogs/rn-calls-v5.json +134 -0
- package/catalogs/rn-calls-v5.symbols.txt +58 -0
- package/catalogs/rn-sdk-v4.json +672 -0
- package/catalogs/rn-v5.json +449 -0
- package/catalogs/rn-v5.symbols.txt +216 -0
- package/catalogs/sdk-android-v5.json +514 -0
- package/contracts.android-calls-v5.json +122 -0
- package/contracts.android-v6.json +135 -0
- package/contracts.angular-v5.json +694 -0
- package/contracts.flutter-calls-v5.json +77 -0
- package/contracts.flutter-v6.json +126 -0
- package/contracts.ios-calls-v5.json +67 -0
- package/contracts.ios-v5.json +436 -0
- package/contracts.json +82 -0
- package/contracts.rn-calls-v5.json +77 -0
- package/contracts.rn-v5.json +727 -0
- package/contracts.sdk-android-v5.json +15 -0
- package/contracts.web-calls-v5.json +45 -0
- package/features.android-calls-v5.json +246 -0
- package/features.android-v6.json +65 -0
- package/features.angular-v5.json +521 -0
- package/features.flutter-calls-v5.json +286 -0
- package/features.flutter-v6.json +484 -0
- package/features.ios-calls-v5.json +236 -0
- package/features.ios-v5.json +573 -0
- package/features.json +61 -0
- package/features.rn-calls-v5.json +187 -0
- package/features.rn-v5.json +614 -0
- package/features.sdk-android-v5.json +40 -0
- package/features.sdk-jsv4.json +24 -0
- package/features.web-calls-v5.json +108 -0
- package/package.json +151 -74
- package/peers.yaml +312 -0
- package/registry/README.md +31 -0
- package/registry/android-calls-v5.json +54 -0
- package/registry/android-v6.json +137 -0
- package/registry/angular-v5.json +114 -0
- package/registry/flutter-calls-v5.json +54 -0
- package/registry/flutter-v6.json +119 -0
- package/registry/ios-calls-v5.json +59 -0
- package/registry/ios-v5.json +97 -0
- package/registry/rn-calls-v5.json +59 -0
- package/registry/rn-v5.json +129 -0
- package/registry/sdk-android-v5.json +53 -0
- package/registry/sdk-jsv4.json +53 -0
- package/registry/web-calls-v5.json +54 -0
- package/registry/web-v7.json +99 -0
- package/skills/cometchat/SKILL.md +42 -2096
- package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
- package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
- package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
- package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
- package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
- package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
- package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
- package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
- package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
- package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
- package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
- package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
- package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
- package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
- package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
- package/skills/cometchat-android-v6-core/SKILL.md +236 -672
- package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
- package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
- package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
- package/skills/cometchat-android-v6-core/references/layout.md +112 -0
- package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
- package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
- package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
- package/skills/cometchat-android-v6-events/SKILL.md +46 -184
- package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
- package/skills/cometchat-android-v6-features/SKILL.md +74 -143
- package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
- package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
- package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
- package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
- package/skills/cometchat-android-v6-production/SKILL.md +40 -179
- package/skills/cometchat-android-v6-push/SKILL.md +39 -289
- package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
- package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
- package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
- package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
- package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
- package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
- package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
- package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
- package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
- package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
- package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
- package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
- package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
- package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
- package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
- package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
- package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
- package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
- package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
- package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
- package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
- package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
- package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
- package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
- package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
- package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
- package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
- package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
- package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
- package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
- package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
- package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
- package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
- package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
- package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
- package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
- package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
- package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
- package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
- package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
- package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
- package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
- package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
- package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
- package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
- package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
- package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
- package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
- package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
- package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
- package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
- package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
- package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
- package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
- package/skills/cometchat-ios-calls/SKILL.md +112 -563
- package/skills/cometchat-ios-components/SKILL.md +44 -834
- package/skills/cometchat-ios-core/SKILL.md +181 -1068
- package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
- package/skills/cometchat-ios-core/references/docs-map.md +123 -0
- package/skills/cometchat-ios-core/references/install.md +23 -0
- package/skills/cometchat-ios-core/references/layout.md +186 -0
- package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
- package/skills/cometchat-ios-core/references/swiftui.md +91 -0
- package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
- package/skills/cometchat-ios-customization/SKILL.md +33 -968
- package/skills/cometchat-ios-features/SKILL.md +29 -738
- package/skills/cometchat-ios-migration/SKILL.md +39 -0
- package/skills/cometchat-ios-placement/SKILL.md +51 -729
- package/skills/cometchat-ios-push/SKILL.md +24 -602
- package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
- package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
- package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
- package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
- package/skills/cometchat-onboarding/SKILL.md +89 -0
- package/skills/cometchat-onboarding/references/archetypes.md +51 -0
- package/skills/cometchat-onboarding/references/calling-first.md +77 -0
- package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
- package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
- package/skills/cometchat-onboarding/references/platforms.md +90 -0
- package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
- package/skills/cometchat-react-native-calls/SKILL.md +200 -0
- package/skills/cometchat-react-native-components/SKILL.md +142 -0
- package/skills/cometchat-react-native-core/SKILL.md +313 -0
- package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
- package/skills/cometchat-react-native-core/references/component-props.md +105 -0
- package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
- package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
- package/skills/cometchat-react-native-core/references/layout.md +61 -0
- package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
- package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
- package/skills/cometchat-react-native-customization/SKILL.md +198 -0
- package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
- package/skills/cometchat-react-native-features/SKILL.md +122 -0
- package/skills/cometchat-react-native-migration/SKILL.md +103 -0
- package/skills/cometchat-react-native-placement/SKILL.md +158 -0
- package/skills/cometchat-react-native-production/SKILL.md +78 -0
- package/skills/cometchat-react-native-push/SKILL.md +88 -0
- package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
- package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
- package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
- package/skills/cometchat-react-native-testing/SKILL.md +94 -0
- package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
- package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
- package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
- package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
- package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
- package/skills/cometchat-react-v7-components/SKILL.md +72 -0
- package/skills/cometchat-react-v7-core/SKILL.md +101 -0
- package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
- package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
- package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
- package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
- package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
- package/skills/cometchat-react-v7-core/references/layout.md +158 -0
- package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
- package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
- package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
- package/skills/cometchat-react-v7-core/references/theming.md +52 -0
- package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
- package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
- package/skills/cometchat-react-v7-features/SKILL.md +92 -0
- package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
- package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
- package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
- package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
- package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
- package/skills/cometchat-react-v7-push/SKILL.md +53 -0
- package/test-suite/README.md +70 -0
- package/test-suite/catalogs/android-calls-v5.json +830 -0
- package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
- package/test-suite/catalogs/android-v6.json +1646 -0
- package/test-suite/catalogs/android-v6.symbols.txt +298 -0
- package/test-suite/catalogs/angular-v5.json +7587 -0
- package/test-suite/catalogs/flutter-calls-v5.json +196 -0
- package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
- package/test-suite/catalogs/flutter-v6.json +651 -0
- package/test-suite/catalogs/ios-calls-v5.json +158 -0
- package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
- package/test-suite/catalogs/ios-v5.json +1383 -0
- package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
- package/test-suite/catalogs/rn-calls-v5.json +134 -0
- package/test-suite/catalogs/rn-sdk-v4.json +672 -0
- package/test-suite/catalogs/rn-v5.json +449 -0
- package/test-suite/catalogs/sdk-android-v5.json +514 -0
- package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
- package/test-suite/catalogs/sdk-jsv4.json +800 -0
- package/test-suite/catalogs/web-calls-v5.json +195 -0
- package/test-suite/catalogs/web-v7.json +1243 -0
- package/test-suite/scripts/build-registry.mjs +113 -0
- package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
- package/test-suite/scripts/catalog-refresh.mjs +100 -0
- package/test-suite/scripts/lint-skills.mjs +909 -0
- package/test-suite/scripts/measure-tokens.mjs +169 -0
- package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
- package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
- package/test-suite/scripts/typecheck-fences.mjs +206 -0
- package/test-suite/scripts/verify-catalog.mjs +242 -0
- package/test-suite/scripts/verify-contract-fences.mjs +94 -0
- package/test-suite/scripts/verify-detection.mjs +178 -0
- package/test-suite/scripts/verify-docs-base.mjs +91 -0
- package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
- package/test-suite/scripts/verify-golden-path.mjs +138 -0
- package/test-suite/scripts/verify-oracle-components.mjs +133 -0
- package/test-suite/scripts/verify-template-bindings.mjs +148 -0
- package/test-suite/typecheck/angular-v5/package.json +21 -0
- package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
- package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
- package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
- package/test-suite/typecheck/web-v7/package.json +18 -0
- package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
- package/bin/install.js +0 -1003
- package/skills/.claude-plugin/marketplace.json +0 -86
- package/skills/cometchat/references/asking-questions.md +0 -48
- package/skills/cometchat-a11y/SKILL.md +0 -477
- package/skills/cometchat-android-v5/SKILL.md +0 -121
- package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
- package/skills/cometchat-android-v5-calls/references/README.md +0 -53
- package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
- package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
- package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
- package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
- package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
- package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
- package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
- package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
- package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
- package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
- package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
- package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
- package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
- package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
- package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
- package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
- package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
- package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
- package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
- package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
- package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
- package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
- package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
- package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
- package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
- package/skills/cometchat-android-v5-components/SKILL.md +0 -431
- package/skills/cometchat-android-v5-core/SKILL.md +0 -486
- package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
- package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
- package/skills/cometchat-android-v5-features/SKILL.md +0 -131
- package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
- package/skills/cometchat-android-v5-production/SKILL.md +0 -95
- package/skills/cometchat-android-v5-push/SKILL.md +0 -619
- package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
- package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
- package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
- package/skills/cometchat-android-v6/SKILL.md +0 -108
- package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
- package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
- package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
- package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
- package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
- package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
- package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
- package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
- package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
- package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
- package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
- package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
- package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
- package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
- package/skills/cometchat-angular-calls/SKILL.md +0 -380
- package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
- package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
- package/skills/cometchat-angular-calls/references/call-session.md +0 -167
- package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
- package/skills/cometchat-angular-calls/references/device-management.md +0 -154
- package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
- package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
- package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
- package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
- package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
- package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
- package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
- package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
- package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
- package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
- package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
- package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
- package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
- package/skills/cometchat-angular-components/SKILL.md +0 -235
- package/skills/cometchat-angular-core/SKILL.md +0 -386
- package/skills/cometchat-angular-customization/SKILL.md +0 -616
- package/skills/cometchat-angular-features/SKILL.md +0 -329
- package/skills/cometchat-angular-patterns/SKILL.md +0 -256
- package/skills/cometchat-angular-placement/SKILL.md +0 -314
- package/skills/cometchat-angular-production/SKILL.md +0 -564
- package/skills/cometchat-angular-push/SKILL.md +0 -389
- package/skills/cometchat-angular-testing/SKILL.md +0 -605
- package/skills/cometchat-angular-theming/SKILL.md +0 -290
- package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
- package/skills/cometchat-astro-patterns/SKILL.md +0 -708
- package/skills/cometchat-calls/SKILL.md +0 -364
- package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
- package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
- package/skills/cometchat-calls/references/use-case-support.md +0 -189
- package/skills/cometchat-calls/references/use-case-team.md +0 -180
- package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
- package/skills/cometchat-components/SKILL.md +0 -1142
- package/skills/cometchat-core/SKILL.md +0 -1048
- package/skills/cometchat-customization/SKILL.md +0 -580
- package/skills/cometchat-customization/references/component-catalog.md +0 -236
- package/skills/cometchat-features/SKILL.md +0 -861
- package/skills/cometchat-flutter-v5/SKILL.md +0 -173
- package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
- package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
- package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
- package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
- package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
- package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
- package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
- package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
- package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
- package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
- package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
- package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
- package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
- package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
- package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
- package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
- package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
- package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
- package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
- package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
- package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
- package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
- package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
- package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
- package/skills/cometchat-flutter-v6/SKILL.md +0 -446
- package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
- package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
- package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
- package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
- package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
- package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
- package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
- package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
- package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
- package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
- package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
- package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
- package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
- package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
- package/skills/cometchat-i18n/SKILL.md +0 -419
- package/skills/cometchat-ios/SKILL.md +0 -325
- package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
- package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
- package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
- package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
- package/skills/cometchat-ios-calls/references/call-session.md +0 -218
- package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
- package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
- package/skills/cometchat-ios-calls/references/device-management.md +0 -171
- package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
- package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
- package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
- package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
- package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
- package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
- package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
- package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
- package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
- package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
- package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
- package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
- package/skills/cometchat-ios-production/SKILL.md +0 -738
- package/skills/cometchat-ios-testing/SKILL.md +0 -376
- package/skills/cometchat-ios-theming/SKILL.md +0 -667
- package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
- package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
- package/skills/cometchat-native-calls/SKILL.md +0 -671
- package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
- package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
- package/skills/cometchat-native-calls/references/call-session.md +0 -182
- package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
- package/skills/cometchat-native-calls/references/device-management.md +0 -158
- package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
- package/skills/cometchat-native-calls/references/group-calls.md +0 -296
- package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
- package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
- package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
- package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
- package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
- package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
- package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
- package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
- package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
- package/skills/cometchat-native-calls/references/share-invite.md +0 -146
- package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
- package/skills/cometchat-native-components/SKILL.md +0 -628
- package/skills/cometchat-native-core/SKILL.md +0 -679
- package/skills/cometchat-native-customization/SKILL.md +0 -716
- package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
- package/skills/cometchat-native-features/SKILL.md +0 -638
- package/skills/cometchat-native-placement/SKILL.md +0 -509
- package/skills/cometchat-native-production/SKILL.md +0 -700
- package/skills/cometchat-native-push/SKILL.md +0 -594
- package/skills/cometchat-native-testing/SKILL.md +0 -582
- package/skills/cometchat-native-theming/SKILL.md +0 -681
- package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
- package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
- package/skills/cometchat-placement/SKILL.md +0 -1360
- package/skills/cometchat-production/SKILL.md +0 -1027
- package/skills/cometchat-react-calls/SKILL.md +0 -752
- package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
- package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
- package/skills/cometchat-react-calls/references/call-session.md +0 -235
- package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
- package/skills/cometchat-react-calls/references/device-management.md +0 -210
- package/skills/cometchat-react-calls/references/group-calls.md +0 -257
- package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
- package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
- package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
- package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
- package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
- package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
- package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
- package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
- package/skills/cometchat-react-calls/references/share-invite.md +0 -175
- package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
- package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
- package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
- package/skills/cometchat-react-patterns/SKILL.md +0 -628
- package/skills/cometchat-react-push/SKILL.md +0 -634
- package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
- package/skills/cometchat-react-testing/SKILL.md +0 -413
- package/skills/cometchat-theming/SKILL.md +0 -498
- package/skills/cometchat-troubleshooting/SKILL.md +0 -294
|
@@ -1,753 +1,44 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cometchat-ios-features
|
|
3
|
-
description: "
|
|
3
|
+
description: "Turn on and wire individual CometChat features on iOS — threads, search, reactions, receipts, mentions, AI, moderation, extensions like polls and stickers. Use when the ask is one capability rather than the whole surface. Triggers: 'add reactions ios', 'enable polls cometchat', 'smart replies ios', 'add threads', 'turn on read receipts'."
|
|
4
4
|
license: "MIT"
|
|
5
|
-
compatibility: "CometChatUIKitSwift
|
|
5
|
+
compatibility: "CometChatUIKitSwift 5.1.22 · iOS 15.1+"
|
|
6
6
|
metadata:
|
|
7
7
|
author: "CometChat"
|
|
8
|
-
version: "
|
|
9
|
-
tags: "
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
tags: "cometchat ios features extensions ai moderation swift v5"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## Companion skills (read first)
|
|
13
|
+
- `cometchat-ios-core` owns setup and the default surface. This skill ADDS one capability at a time. The feature list is `features.ios-v5.json`; never claim a feature that is not in it.
|
|
13
14
|
|
|
14
|
-
##
|
|
15
|
+
## Use this skill when
|
|
16
|
+
"add reactions", "enable polls", "turn on smart replies", "add message search", "let people report a message".
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
## First: which KIND of feature is it? This decides the work.
|
|
19
|
+
| Kind | What it needs | Examples |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| **Already on** | nothing — say so | text, media, receipts, typing, reactions, mentions |
|
|
22
|
+
| **Code-wired** | a callback + a destination screen | threads, search, mark-as-unread, quoted reply |
|
|
23
|
+
| **Dashboard extension** | a toggle in the Dashboard; **no code** | polls, stickers, whiteboard, document, translation, link preview, thumbnails |
|
|
24
|
+
| **AI** | a Dashboard AI toggle, then wire the surface | conversation starters, smart replies, summary, assistant history |
|
|
25
|
+
| **SDK fallback** | no kit component — call the SDK | AI agents, campaigns, add-members, moderation actions |
|
|
17
26
|
|
|
27
|
+
**Never re-suggest something already on.** Reactions and mentions are core messaging in v5; offering them as "add a feature" is the AUDIT-077 mistake. The legacy moderation filters (profanity, data masking, image moderation) route to legacy docs — never offer them.
|
|
18
28
|
|
|
19
|
-
|
|
29
|
+
## Dashboard-gated features: enable, then verify — do not write code
|
|
30
|
+
The Dashboard toggle is the whole job for extensions: *"Code required: None — extensions work out of the box."* Use the CLI to flip it (`skills-cli features enable <id>`), then confirm it appears. If it does not, that is a Dashboard/plan issue, not a code one — say so rather than hand-rolling a replacement.
|
|
20
31
|
|
|
21
|
-
|
|
32
|
+
## Code-wired features: wire the round trip
|
|
33
|
+
A feature that opens something must also close it. Threads: `set(onThreadRepliesClick:)` → thread screen (**header `set(parentMessage:)`; LIST `set(user:parentMessage:withParent:)` — parent in the SAME call as the target, or the thread shows the whole conversation; composer `set(user:)` + `set(parentMessageId:)`**). Search: set `conversations.hideSearch = false` FIRST — it is true by default, so wiring only `conversations.onSearchClick` (property) renders no search field at all → `CometChatSearch`, with `onConversationClicked` / `onMessageClicked` assigned or results dead-end.
|
|
22
34
|
|
|
23
|
-
|
|
35
|
+
## SDK fallback — UI Kit first, SDK only when the kit has nothing
|
|
36
|
+
If no component exists, drop to the Chat SDK and **look the method up** in the SDK docs via `docs-map.md` — never guess a signature. Worked example: adding group members has no component → `CometChat.addMembersToGroup(guid:groupMembers:bannedUIDs:onSuccess:onError:)`.
|
|
24
37
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
## 1. Voice & Video Calls
|
|
30
|
-
|
|
31
|
-
### Prerequisites
|
|
32
|
-
|
|
33
|
-
Add the CometChat Calls SDK to your project:
|
|
34
|
-
|
|
35
|
-
**CocoaPods:**
|
|
36
|
-
```ruby
|
|
37
|
-
pod 'CometChatCallsSDK', '~> 5.0'
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
**Swift Package Manager:**
|
|
41
|
-
```
|
|
42
|
-
https://github.com/cometchat/calls-sdk-ios
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Required Permissions
|
|
46
|
-
|
|
47
|
-
Add to `Info.plist`:
|
|
48
|
-
```xml
|
|
49
|
-
<key>NSCameraUsageDescription</key>
|
|
50
|
-
<string>Camera access is required for video calls</string>
|
|
51
|
-
<key>NSMicrophoneUsageDescription</key>
|
|
52
|
-
<string>Microphone access is required for voice and video calls</string>
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Enable Background Modes
|
|
56
|
-
|
|
57
|
-
In Xcode → Target → Signing & Capabilities → Background Modes:
|
|
58
|
-
- ✅ Audio, AirPlay, and Picture in Picture
|
|
59
|
-
- ✅ Voice over IP
|
|
60
|
-
|
|
61
|
-
### Call Buttons
|
|
62
|
-
|
|
63
|
-
Add call buttons to your message header:
|
|
64
|
-
|
|
65
|
-
```swift
|
|
66
|
-
let messageHeader = CometChatMessageHeader()
|
|
67
|
-
messageHeader.set(user: user)
|
|
68
|
-
|
|
69
|
-
// Call buttons are shown by default when CometChatCallsSDK is available
|
|
70
|
-
// To hide them:
|
|
71
|
-
messageHeader.hideVideoCallButton = true
|
|
72
|
-
messageHeader.hideVoiceCallButton = true
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Standalone Call Buttons
|
|
76
|
-
|
|
77
|
-
```swift
|
|
78
|
-
// CometChatCallButtons requires explicit width/height at init — no zero-arg init.
|
|
79
|
-
let callButtons = CometChatCallButtons(width: 80, height: 32)
|
|
80
|
-
callButtons.set(user: user)
|
|
81
|
-
|
|
82
|
-
// Or for group calls
|
|
83
|
-
callButtons.set(group: group)
|
|
84
|
-
|
|
85
|
-
// Customize
|
|
86
|
-
callButtons.hideVideoCallButton = false
|
|
87
|
-
callButtons.hideVoiceCallButton = false
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### Initiating Calls Programmatically
|
|
91
|
-
|
|
92
|
-
```swift
|
|
93
|
-
import CometChatSDK
|
|
94
|
-
|
|
95
|
-
// Voice call to user
|
|
96
|
-
let call = Call(receiverId: user.uid ?? "", callType: .audio, receiverType: .user)
|
|
97
|
-
CometChat.initiateCall(call: call) { call in
|
|
98
|
-
print("Call initiated: \(call?.sessionID ?? "")")
|
|
99
|
-
} onError: { error in
|
|
100
|
-
print("Error: \(error?.errorDescription ?? "")")
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Video call to user
|
|
104
|
-
let videoCall = Call(receiverId: user.uid ?? "", callType: .video, receiverType: .user)
|
|
105
|
-
CometChat.initiateCall(call: videoCall) { call in
|
|
106
|
-
print("Video call initiated")
|
|
107
|
-
} onError: { error in
|
|
108
|
-
print("Error: \(error?.errorDescription ?? "")")
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Group call
|
|
112
|
-
let groupCall = Call(receiverId: group.guid ?? "", callType: .video, receiverType: .group)
|
|
113
|
-
CometChat.initiateCall(call: groupCall) { call in
|
|
114
|
-
print("Group call initiated")
|
|
115
|
-
} onError: { error in
|
|
116
|
-
print("Error: \(error?.errorDescription ?? "")")
|
|
117
|
-
}
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### Handling Incoming Calls
|
|
121
|
-
|
|
122
|
-
CometChat UI Kit automatically handles incoming calls when properly configured. The `CometChatIncomingCall` view controller is presented automatically.
|
|
123
|
-
|
|
124
|
-
For custom handling:
|
|
125
|
-
|
|
126
|
-
```swift
|
|
127
|
-
import CometChatSDK
|
|
128
|
-
|
|
129
|
-
class CallListener: CometChatCallDelegate {
|
|
130
|
-
|
|
131
|
-
func onIncomingCallReceived(incomingCall: Call?, error: CometChatException?) {
|
|
132
|
-
guard let call = incomingCall else { return }
|
|
133
|
-
|
|
134
|
-
DispatchQueue.main.async {
|
|
135
|
-
let incomingCallVC = CometChatIncomingCall()
|
|
136
|
-
incomingCallVC.set(call: call)
|
|
137
|
-
incomingCallVC.modalPresentationStyle = .fullScreen
|
|
138
|
-
|
|
139
|
-
// Present from root view controller
|
|
140
|
-
UIApplication.shared.windows.first?.rootViewController?.present(
|
|
141
|
-
incomingCallVC,
|
|
142
|
-
animated: true
|
|
143
|
-
)
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
func onOutgoingCallAccepted(acceptedCall: Call?, error: CometChatException?) {
|
|
148
|
-
print("Call accepted")
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
func onOutgoingCallRejected(rejectedCall: Call?, error: CometChatException?) {
|
|
152
|
-
print("Call rejected")
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
func onIncomingCallCancelled(canceledCall: Call?, error: CometChatException?) {
|
|
156
|
-
print("Call cancelled")
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
// Register listener
|
|
161
|
-
CometChat.addCallListener("call-listener", CallListener())
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Call Settings Builder
|
|
165
|
-
|
|
166
|
-
Customize call behavior:
|
|
167
|
-
|
|
168
|
-
```swift
|
|
169
|
-
#if canImport(CometChatCallsSDK)
|
|
170
|
-
import CometChatCallsSDK
|
|
171
|
-
|
|
172
|
-
let callSettings = CallSettingsBuilder()
|
|
173
|
-
.setIsAudioOnly(false) // Video call
|
|
174
|
-
.setDefaultAudioMode("SPEAKER") // "SPEAKER" or "EARPIECE"
|
|
175
|
-
.setShowSwitchToVideoCall(true) // Allow switching to video
|
|
176
|
-
// Button visibility uses inverted setXxxButtonDisable(Bool), NOT setShowXxxButton:
|
|
177
|
-
.setEndCallButtonDisable(false)
|
|
178
|
-
.setMuteAudioButtonDisable(false)
|
|
179
|
-
.setPauseVideoButtonDisable(false)
|
|
180
|
-
.setSwitchCameraButtonDisable(false)
|
|
181
|
-
.setAudioModeButtonDisable(false)
|
|
182
|
-
.setStartAudioMuted(false) // not setStartWithAudioMuted
|
|
183
|
-
.setStartVideoMuted(false) // not setStartWithVideoMuted
|
|
184
|
-
.build()
|
|
185
|
-
|
|
186
|
-
let outgoingCall = CometChatOutgoingCall()
|
|
187
|
-
outgoingCall.set(call: call)
|
|
188
|
-
outgoingCall.set(callSettingsBuilder: callSettings)
|
|
189
|
-
#endif
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### Call Logs
|
|
193
|
-
|
|
194
|
-
Display call history:
|
|
195
|
-
|
|
196
|
-
```swift
|
|
197
|
-
let callLogs = CometChatCallLogs()
|
|
198
|
-
callLogs.set(onItemClick: { callLog in
|
|
199
|
-
// Handle call log tap - maybe initiate a new call
|
|
200
|
-
// (the closure receives the tapped call log as `Any`)
|
|
201
|
-
print("Call log tapped: \(callLog)")
|
|
202
|
-
})
|
|
203
|
-
navigationController?.pushViewController(callLogs, animated: true)
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
## 2. Message Reactions
|
|
209
|
-
|
|
210
|
-
Reactions are enabled by default in CometChat UI Kit v5.
|
|
211
|
-
|
|
212
|
-
### Enable/Disable Reactions
|
|
213
|
-
|
|
214
|
-
```swift
|
|
215
|
-
let messageList = CometChatMessageList()
|
|
216
|
-
messageList.set(user: user)
|
|
217
|
-
|
|
218
|
-
// Hide reaction option from message menu
|
|
219
|
-
messageList.hideReactionOption = true
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
### Reaction Events
|
|
223
|
-
|
|
224
|
-
```swift
|
|
225
|
-
class ReactionListener: CometChatMessageEventListener {
|
|
226
|
-
|
|
227
|
-
// ReactionEvent.reaction is a `Reaction?` OBJECT, not a String. The
|
|
228
|
-
// emoji/uid/messageId live on that nested Reaction; the event itself
|
|
229
|
-
// carries parentMessageId/conversationId/receiverId (there is NO `message`
|
|
230
|
-
// or `reactedBy` property on ReactionEvent).
|
|
231
|
-
func onMessageReactionAdded(reactionEvent: ReactionEvent) {
|
|
232
|
-
print("Reaction added: \(reactionEvent.reaction?.reaction ?? "")")
|
|
233
|
-
print("By user: \(reactionEvent.reaction?.uid ?? "")")
|
|
234
|
-
print("On message: \(reactionEvent.reaction?.messageId ?? 0)")
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
func onMessageReactionRemoved(reactionEvent: ReactionEvent) {
|
|
238
|
-
print("Reaction removed: \(reactionEvent.reaction?.reaction ?? "")")
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
CometChatMessageEvents.addListener("reaction-listener", ReactionListener())
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### Custom Reaction Set
|
|
246
|
-
|
|
247
|
-
```swift
|
|
248
|
-
// Configure available reactions
|
|
249
|
-
let messageList = CometChatMessageList()
|
|
250
|
-
|
|
251
|
-
// The reaction set is configured through the data source
|
|
252
|
-
// See cometchat-ios-customization skill for DataSource customization
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
|
|
257
|
-
## 3. Polls
|
|
258
|
-
|
|
259
|
-
Polls allow users to create and vote on questions.
|
|
260
|
-
|
|
261
|
-
### Enable Polls Extension
|
|
262
|
-
|
|
263
|
-
```bash
|
|
264
|
-
cometchat apply-feature polls --app-id <your-app-id>
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
Once enabled, the poll creation option appears in the attachment menu.
|
|
268
|
-
|
|
269
|
-
### Create Poll Programmatically
|
|
270
|
-
|
|
271
|
-
```swift
|
|
272
|
-
import CometChatSDK
|
|
273
|
-
|
|
274
|
-
// Create poll data
|
|
275
|
-
let pollData: [String: Any] = [
|
|
276
|
-
"question": "What's your favorite programming language?",
|
|
277
|
-
"options": ["Swift", "Kotlin", "JavaScript", "Python"]
|
|
278
|
-
]
|
|
279
|
-
|
|
280
|
-
// Create custom message with poll type
|
|
281
|
-
// CustomMessage has no customType: init — pass the type via the trailing type: label
|
|
282
|
-
let pollMessage = CustomMessage(
|
|
283
|
-
receiverUid: user.uid ?? "",
|
|
284
|
-
receiverType: .user,
|
|
285
|
-
customData: pollData,
|
|
286
|
-
type: "extension_poll"
|
|
287
|
-
)
|
|
288
|
-
|
|
289
|
-
CometChat.sendCustomMessage(message: pollMessage) { message in
|
|
290
|
-
print("Poll sent: \(message.id)")
|
|
291
|
-
} onError: { error in
|
|
292
|
-
print("Error: \(error?.errorDescription ?? "")")
|
|
293
|
-
}
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
### Poll Bubble Customization
|
|
297
|
-
|
|
298
|
-
```swift
|
|
299
|
-
// Polls render via the `CometChatPollsBubble` view (note the plural — there is no
|
|
300
|
-
// `CometChatPollBubble`). Its `style` is an INSTANCE property of type `PollBubbleStyle`
|
|
301
|
-
// (NOT a static), so you cannot assign `CometChatPollsBubble.style.x = …`.
|
|
302
|
-
// To restyle the poll bubble, build a `PollBubbleStyle`, then apply it inside a custom
|
|
303
|
-
// message template's bubble view (see cometchat-ios-customization → message templates):
|
|
304
|
-
let pollStyle = PollBubbleStyle()
|
|
305
|
-
pollStyle.backgroundColor = .secondarySystemBackground
|
|
306
|
-
// …set the PollBubbleStyle properties you need, then pass the styled
|
|
307
|
-
// CometChatPollsBubble instance from your template's bubbleView closure.
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
---
|
|
311
|
-
|
|
312
|
-
## 4. Stickers
|
|
313
|
-
|
|
314
|
-
Stickers provide a fun way to express emotions.
|
|
315
|
-
|
|
316
|
-
### Enable Stickers
|
|
317
|
-
|
|
318
|
-
```bash
|
|
319
|
-
cometchat apply-feature stickers --app-id <your-app-id>
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
Once enabled, the sticker button appears in the message composer.
|
|
323
|
-
|
|
324
|
-
### Hide Stickers
|
|
325
|
-
|
|
326
|
-
```swift
|
|
327
|
-
let messageComposer = CometChatMessageComposer()
|
|
328
|
-
messageComposer.set(user: user)
|
|
329
|
-
messageComposer.hideStickersButton = true
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
### Custom Sticker Packs
|
|
333
|
-
|
|
334
|
-
Sticker packs are managed through the CometChat Dashboard:
|
|
335
|
-
1. Go to CometChat Dashboard
|
|
336
|
-
2. Navigate to Extensions → Stickers
|
|
337
|
-
3. Add custom sticker packs
|
|
338
|
-
|
|
339
|
-
---
|
|
340
|
-
|
|
341
|
-
## 5. AI Features
|
|
342
|
-
|
|
343
|
-
CometChat provides AI-powered features for enhanced chat experiences.
|
|
344
|
-
|
|
345
|
-
### Prerequisites — enable each AI feature via the CLI
|
|
346
|
-
|
|
347
|
-
iOS projects don't run `cometchat apply` (no `.cometchat/state.json`), so call the CLI in stateless mode with `--app-id`. AI features need an OpenAI key the first time:
|
|
348
|
-
|
|
349
|
-
```bash
|
|
350
|
-
cometchat apply-feature smart-replies --app-id <your-app-id> --openai-key sk-...
|
|
351
|
-
cometchat apply-feature conversation-summary --app-id <your-app-id>
|
|
352
|
-
cometchat apply-feature conversation-starter --app-id <your-app-id>
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
The OpenAI key is stored on the app once. Subsequent ai-feature applies don't need `--openai-key` repeated. Requires `cometchat auth login` once per machine.
|
|
356
|
-
|
|
357
|
-
Get an OpenAI key at https://platform.openai.com/api-keys.
|
|
358
|
-
4. Configure your AI provider (OpenAI, etc.)
|
|
359
|
-
|
|
360
|
-
### AI Conversation Starter
|
|
361
|
-
|
|
362
|
-
Suggests conversation starters for new chats:
|
|
363
|
-
|
|
364
|
-
```swift
|
|
365
|
-
let conversationStarter = CometChatAIConversationStarter()
|
|
366
|
-
|
|
367
|
-
// Set AI message options
|
|
368
|
-
conversationStarter.set(aiMessageOptions: [
|
|
369
|
-
"How can I help you today?",
|
|
370
|
-
"What brings you here?",
|
|
371
|
-
"Tell me about your project"
|
|
372
|
-
])
|
|
373
|
-
|
|
374
|
-
// Handle selection
|
|
375
|
-
conversationStarter.onMessageClicked { selectedReply in
|
|
376
|
-
print("Selected: \(selectedReply)")
|
|
377
|
-
// Send the selected message
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
// Show loading state
|
|
381
|
-
conversationStarter.showLoadingView()
|
|
382
|
-
|
|
383
|
-
// Hide loading state
|
|
384
|
-
conversationStarter.hideLoadingView()
|
|
385
|
-
|
|
386
|
-
// Show error state
|
|
387
|
-
conversationStarter.show(error: true)
|
|
388
|
-
```
|
|
389
|
-
|
|
390
|
-
### AI Smart Replies
|
|
391
|
-
|
|
392
|
-
Suggests quick replies based on conversation context:
|
|
393
|
-
|
|
394
|
-
```swift
|
|
395
|
-
// Smart replies are automatically shown in the message composer
|
|
396
|
-
// when enabled in the dashboard
|
|
397
|
-
|
|
398
|
-
// To customize the smart replies view:
|
|
399
|
-
let messageComposer = CometChatMessageComposer()
|
|
400
|
-
messageComposer.set(user: user)
|
|
401
|
-
|
|
402
|
-
// Smart replies appear above the composer when available
|
|
403
|
-
```
|
|
404
|
-
|
|
405
|
-
### AI Conversation Summary
|
|
406
|
-
|
|
407
|
-
Generates a summary of the conversation:
|
|
408
|
-
|
|
409
|
-
```swift
|
|
410
|
-
// Conversation summary is available through the AI extension
|
|
411
|
-
// Enable in CometChat Dashboard → AI → Conversation Summary
|
|
412
|
-
|
|
413
|
-
// The summary can be accessed through the message header menu
|
|
414
|
-
// or programmatically:
|
|
415
|
-
|
|
416
|
-
// Get conversation summary
|
|
417
|
-
CometChat.getConversationSummary(
|
|
418
|
-
receiverId: user.uid ?? "",
|
|
419
|
-
receiverType: .user
|
|
420
|
-
) { summary in
|
|
421
|
-
print("Summary: \(summary)")
|
|
422
|
-
} onError: { error in
|
|
423
|
-
print("Error: \(error?.errorDescription ?? "")")
|
|
424
|
-
}
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
### AI Assistant / Bot
|
|
428
|
-
|
|
429
|
-
Create AI-powered chat bots:
|
|
430
|
-
|
|
431
|
-
```swift
|
|
432
|
-
// AI Bots are configured in CometChat Dashboard
|
|
433
|
-
// They appear as regular users in the chat
|
|
434
|
-
|
|
435
|
-
// To start a conversation with an AI bot:
|
|
436
|
-
let botUID = "ai-assistant" // Your bot's UID from dashboard
|
|
437
|
-
|
|
438
|
-
CometChat.getUser(UID: botUID) { bot in
|
|
439
|
-
guard let bot = bot else { return }
|
|
440
|
-
|
|
441
|
-
let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer
|
|
442
|
-
messagesVC.set(user: bot)
|
|
443
|
-
// Present the messages view
|
|
444
|
-
} onError: { error in
|
|
445
|
-
print("Error: \(error?.errorDescription ?? "")")
|
|
446
|
-
}
|
|
447
|
-
```
|
|
448
|
-
|
|
449
|
-
### AI Assistant Bubble Style
|
|
450
|
-
|
|
451
|
-
```swift
|
|
452
|
-
CometChatAIAssistantBubble.style.backgroundColor = .secondarySystemBackground
|
|
453
|
-
CometChatAIAssistantBubble.style.textColor = .label
|
|
454
|
-
CometChatAIAssistantBubble.style.textFont = CometChatTypography.Body.regular
|
|
455
|
-
CometChatAIAssistantBubble.style.borderColor = .separator
|
|
456
|
-
CometChatAIAssistantBubble.style.borderWidth = 1
|
|
457
|
-
CometChatAIAssistantBubble.style.cornerRadius = CometChatCornerStyle(cornerRadius: 12)
|
|
458
|
-
```
|
|
459
|
-
|
|
460
|
-
---
|
|
461
|
-
|
|
462
|
-
## 6. Link Preview
|
|
463
|
-
|
|
464
|
-
Automatically generates previews for URLs shared in messages.
|
|
465
|
-
|
|
466
|
-
### Enable/Disable Link Preview
|
|
467
|
-
|
|
468
|
-
Link preview is enabled by default.
|
|
469
|
-
|
|
470
|
-
```swift
|
|
471
|
-
// Link previews are handled automatically
|
|
472
|
-
// No additional configuration needed
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
### Link Preview Style
|
|
476
|
-
|
|
477
|
-
```swift
|
|
478
|
-
// Customize link preview appearance
|
|
479
|
-
// Link previews use the standard message bubble styling
|
|
480
|
-
```
|
|
481
|
-
|
|
482
|
-
---
|
|
483
|
-
|
|
484
|
-
## 7. Message Translation
|
|
485
|
-
|
|
486
|
-
Translate messages to different languages.
|
|
487
|
-
|
|
488
|
-
### Enable Translation
|
|
489
|
-
|
|
490
|
-
```bash
|
|
491
|
-
cometchat apply-feature message-translation --app-id <your-app-id>
|
|
492
|
-
```
|
|
493
|
-
|
|
494
|
-
### Translate a Message
|
|
495
|
-
|
|
496
|
-
```swift
|
|
497
|
-
// Translation option appears in message menu when enabled
|
|
498
|
-
// Users can tap "Translate" to see the translated version
|
|
499
|
-
|
|
500
|
-
// Programmatic translation: there is NO `CometChat.translateMessage(...)`
|
|
501
|
-
// method. Message translation is an extension — invoke it via callExtension
|
|
502
|
-
// against the message-translation slug:
|
|
503
|
-
CometChat.callExtension(
|
|
504
|
-
slug: "message-translation",
|
|
505
|
-
type: .post,
|
|
506
|
-
endPoint: "v2/translate",
|
|
507
|
-
body: [
|
|
508
|
-
"msgId": textMessage.id,
|
|
509
|
-
"text": textMessage.text,
|
|
510
|
-
"languages": ["es"] // target languages
|
|
511
|
-
]
|
|
512
|
-
) { response in
|
|
513
|
-
// response is [String: Any]? — read the translated text from the
|
|
514
|
-
// extension payload (see the message-translation extension docs).
|
|
515
|
-
print("Translation response: \(response ?? [:])")
|
|
516
|
-
} onError: { error in
|
|
517
|
-
print("Error: \(error?.errorDescription ?? "")")
|
|
518
|
-
}
|
|
519
|
-
```
|
|
520
|
-
|
|
521
|
-
---
|
|
522
|
-
|
|
523
|
-
## 8. Collaborative Features
|
|
524
|
-
|
|
525
|
-
### Collaborative Whiteboard
|
|
526
|
-
|
|
527
|
-
Real-time whiteboard for drawing and collaboration:
|
|
528
|
-
|
|
529
|
-
```bash
|
|
530
|
-
# Enable Collaborative Whiteboard via CLI:
|
|
531
|
-
cometchat apply-feature collaborative-whiteboard --app-id <your-app-id>
|
|
532
|
-
```
|
|
533
|
-
|
|
534
|
-
```swift
|
|
535
|
-
// Whiteboard option appears in attachment menu
|
|
536
|
-
// Opens a shared whiteboard session
|
|
537
|
-
```
|
|
538
|
-
|
|
539
|
-
### Collaborative Document
|
|
540
|
-
|
|
541
|
-
Real-time document editing:
|
|
542
|
-
|
|
543
|
-
```bash
|
|
544
|
-
# Enable Collaborative Document via CLI:
|
|
545
|
-
cometchat apply-feature collaborative-document --app-id <your-app-id>
|
|
546
|
-
```
|
|
547
|
-
|
|
548
|
-
```swift
|
|
549
|
-
// Document option appears in attachment menu
|
|
550
|
-
// Opens a shared document session
|
|
551
|
-
```
|
|
552
|
-
|
|
553
|
-
---
|
|
554
|
-
|
|
555
|
-
## 9. Typing Indicators
|
|
556
|
-
|
|
557
|
-
Show when users are typing.
|
|
558
|
-
|
|
559
|
-
### Enable/Disable Typing Indicators
|
|
560
|
-
|
|
561
|
-
```swift
|
|
562
|
-
let messageComposer = CometChatMessageComposer()
|
|
563
|
-
messageComposer.set(user: user)
|
|
564
|
-
|
|
565
|
-
// Disable sending typing events
|
|
566
|
-
messageComposer.disableTypingEvents = true
|
|
567
|
-
|
|
568
|
-
// Typing indicators in message list
|
|
569
|
-
let messageList = CometChatMessageList()
|
|
570
|
-
messageList.set(user: user)
|
|
571
|
-
// Typing indicators are shown automatically
|
|
572
|
-
```
|
|
573
|
-
|
|
574
|
-
### Listen for Typing Events
|
|
575
|
-
|
|
576
|
-
```swift
|
|
577
|
-
class TypingListener: CometChatMessageDelegate {
|
|
578
|
-
|
|
579
|
-
func onTypingStarted(_ typingIndicator: TypingIndicator) {
|
|
580
|
-
print("\(typingIndicator.sender?.name ?? "") is typing...")
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
func onTypingEnded(_ typingIndicator: TypingIndicator) {
|
|
584
|
-
print("\(typingIndicator.sender?.name ?? "") stopped typing")
|
|
585
|
-
}
|
|
586
|
-
}
|
|
587
|
-
|
|
588
|
-
CometChat.addMessageListener("typing-listener", TypingListener())
|
|
589
|
-
```
|
|
590
|
-
|
|
591
|
-
---
|
|
592
|
-
|
|
593
|
-
## 10. Read Receipts
|
|
594
|
-
|
|
595
|
-
Show message delivery and read status.
|
|
596
|
-
|
|
597
|
-
### Enable/Disable Read Receipts
|
|
598
|
-
|
|
599
|
-
```swift
|
|
600
|
-
let messageList = CometChatMessageList()
|
|
601
|
-
messageList.set(user: user)
|
|
602
|
-
|
|
603
|
-
// Hide read receipts
|
|
604
|
-
messageList.hideReceipts = true
|
|
605
|
-
|
|
606
|
-
// In conversations list
|
|
607
|
-
let conversations = CometChatConversations()
|
|
608
|
-
conversations.hideReceipts = true
|
|
609
|
-
```
|
|
610
|
-
|
|
611
|
-
### Receipt Status
|
|
612
|
-
|
|
613
|
-
- **Sent** — Message sent to server
|
|
614
|
-
- **Delivered** — Message delivered to recipient's device
|
|
615
|
-
- **Read** — Message read by recipient
|
|
616
|
-
|
|
617
|
-
---
|
|
618
|
-
|
|
619
|
-
## 11. Threaded Messages
|
|
620
|
-
|
|
621
|
-
Reply to specific messages in threads.
|
|
622
|
-
|
|
623
|
-
### Enable/Disable Threads
|
|
624
|
-
|
|
625
|
-
```swift
|
|
626
|
-
let messageList = CometChatMessageList()
|
|
627
|
-
messageList.set(user: user)
|
|
628
|
-
|
|
629
|
-
// Hide thread reply option
|
|
630
|
-
messageList.hideReplyInThreadOption = true
|
|
631
|
-
```
|
|
632
|
-
|
|
633
|
-
### Open Thread View
|
|
634
|
-
|
|
635
|
-
```swift
|
|
636
|
-
// Thread replies are handled automatically
|
|
637
|
-
// Tapping "Reply in thread" opens the thread view
|
|
638
|
-
|
|
639
|
-
// Programmatic thread access:
|
|
640
|
-
messageList.onThreadRepliesClick = { message, template in
|
|
641
|
-
// Custom thread handling
|
|
642
|
-
print("Thread for message: \(message.id)")
|
|
643
|
-
}
|
|
644
|
-
```
|
|
645
|
-
|
|
646
|
-
---
|
|
647
|
-
|
|
648
|
-
## 12. Voice Recording
|
|
649
|
-
|
|
650
|
-
Record and send voice messages.
|
|
651
|
-
|
|
652
|
-
### Enable/Disable Voice Recording
|
|
653
|
-
|
|
654
|
-
```swift
|
|
655
|
-
let messageComposer = CometChatMessageComposer()
|
|
656
|
-
messageComposer.set(user: user)
|
|
657
|
-
|
|
658
|
-
// Hide voice recording button
|
|
659
|
-
messageComposer.hideVoiceRecordingButton = true
|
|
660
|
-
```
|
|
661
|
-
|
|
662
|
-
### Required Permission
|
|
663
|
-
|
|
664
|
-
Add to `Info.plist`:
|
|
665
|
-
```xml
|
|
666
|
-
<key>NSMicrophoneUsageDescription</key>
|
|
667
|
-
<string>Microphone access is required for voice messages</string>
|
|
668
|
-
```
|
|
669
|
-
|
|
670
|
-
---
|
|
671
|
-
|
|
672
|
-
## 13. Live Reactions
|
|
673
|
-
|
|
674
|
-
Send animated reactions that appear on screen. Live reactions are enabled by default and handled automatically by the SDK.
|
|
675
|
-
|
|
676
|
-
### Listen for Live Reactions
|
|
677
|
-
|
|
678
|
-
```swift
|
|
679
|
-
class LiveReactionListener: CometChatMessageEventListener {
|
|
680
|
-
|
|
681
|
-
func ccLiveReaction(reaction: TransientMessage) {
|
|
682
|
-
print("Live reaction received: \(reaction.data)")
|
|
683
|
-
// Show animation on screen
|
|
684
|
-
}
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
CometChatMessageEvents.addListener("live-reaction-listener", LiveReactionListener())
|
|
688
|
-
```
|
|
689
|
-
|
|
690
|
-
---
|
|
691
|
-
|
|
692
|
-
## 14. Profanity Filter / Data Masking
|
|
693
|
-
|
|
694
|
-
Filter inappropriate content and mask sensitive data.
|
|
695
|
-
|
|
696
|
-
### Enable in Dashboard
|
|
697
|
-
|
|
698
|
-
1. Go to CometChat Dashboard
|
|
699
|
-
2. Navigate to Extensions → Profanity Filter
|
|
700
|
-
3. Configure blocked words and masking rules
|
|
701
|
-
|
|
702
|
-
### How It Works
|
|
703
|
-
|
|
704
|
-
- Messages containing blocked words are automatically filtered
|
|
705
|
-
- Sensitive data (credit cards, SSN, etc.) can be masked
|
|
706
|
-
- Works on both sent and received messages
|
|
707
|
-
|
|
708
|
-
---
|
|
709
|
-
|
|
710
|
-
## 15. Thumbnail Generation
|
|
711
|
-
|
|
712
|
-
Automatically generates thumbnails for images and videos.
|
|
713
|
-
|
|
714
|
-
### How It Works
|
|
715
|
-
|
|
716
|
-
- Thumbnails are generated automatically for media messages
|
|
717
|
-
- Displayed in conversation list and message list
|
|
718
|
-
- Full media loads on tap
|
|
719
|
-
|
|
720
|
-
---
|
|
721
|
-
|
|
722
|
-
## Feature Availability Matrix
|
|
723
|
-
|
|
724
|
-
| Feature | Requires SDK | Dashboard Config | Default |
|
|
725
|
-
|---|---|---|---|
|
|
726
|
-
| Voice/Video Calls | CometChatCallsSDK | No | Enabled* |
|
|
727
|
-
| Reactions | No | No | Enabled |
|
|
728
|
-
| Polls | No | Yes | Enabled |
|
|
729
|
-
| Stickers | No | Yes | Enabled |
|
|
730
|
-
| AI Features | No | Yes | Disabled |
|
|
731
|
-
| Link Preview | No | Yes | Enabled |
|
|
732
|
-
| Translation | No | Yes | Disabled |
|
|
733
|
-
| Whiteboard | No | Yes | Disabled |
|
|
734
|
-
| Collaborative Doc | No | Yes | Disabled |
|
|
735
|
-
| Typing Indicators | No | No | Enabled |
|
|
736
|
-
| Read Receipts | No | No | Enabled |
|
|
737
|
-
| Threaded Messages | No | No | Enabled |
|
|
738
|
-
| Voice Recording | No | No | Enabled |
|
|
739
|
-
| Live Reactions | No | No | Enabled |
|
|
740
|
-
| Profanity Filter | No | Yes | Disabled |
|
|
741
|
-
|
|
742
|
-
*Calls require CometChatCallsSDK to be installed
|
|
743
|
-
|
|
744
|
-
---
|
|
745
|
-
|
|
746
|
-
## Best Practices
|
|
747
|
-
|
|
748
|
-
1. **Enable only needed features** — Disable unused features to reduce complexity
|
|
749
|
-
2. **Configure in Dashboard first** — Most features require Dashboard configuration
|
|
750
|
-
3. **Test on real devices** — Calls and voice recording require physical devices
|
|
751
|
-
4. **Handle permissions gracefully** — Request permissions before using camera/microphone
|
|
752
|
-
5. **Monitor usage** — AI features may have usage limits based on your plan
|
|
38
|
+
## Gotchas
|
|
39
|
+
- **`verify: true` entries in `features.ios-v5.json` are unconfirmed** — read the feature's own page before asserting how it is enabled.
|
|
40
|
+
- **Smart Replies is documented two ways** (composer extension vs AI toggle) — treat it as AI and say the docs disagree.
|
|
41
|
+
- **Never invent an enablement story.** If you cannot find how a feature turns on, say so.
|
|
753
42
|
|
|
43
|
+
## Verify it works
|
|
44
|
+
The feature appears in the running app, its entry point leads somewhere and back, and nothing you added duplicates what the kit already does.
|