@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,839 +1,49 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cometchat-ios-components
|
|
3
|
-
description: "
|
|
3
|
+
description: "The CometChat iOS UI Kit component catalogue — what each component is for, its real API shape, and where custom UI goes. Use when picking or customising an individual component. Triggers: 'which cometchat component', 'customise the conversation row', 'add a custom view to the message list', 'ios component list'."
|
|
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: "
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
| `hideUserStatus` | `Bool` | Hide online/offline status |
|
|
51
|
-
| `disableTyping` | `Bool` | Disable typing indicators |
|
|
52
|
-
| `disableSoundForMessages` | `Bool` | Disable message sounds |
|
|
53
|
-
|
|
54
|
-
**Callbacks:**
|
|
55
|
-
| Callback | Method | Description |
|
|
56
|
-
|---|---|---|
|
|
57
|
-
| `onItemClick` | `set(onItemClick:)` | Conversation tapped |
|
|
58
|
-
| `onItemLongClick` | `set(onItemLongClick:)` | Conversation long-pressed |
|
|
59
|
-
| `onError` | `set(onError:)` | Error occurred |
|
|
60
|
-
| `onEmpty` | `set(onEmpty:)` | List is empty |
|
|
61
|
-
| `onLoad` | `set(onLoad:)` | Conversations loaded |
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## 2. CometChatUsers
|
|
66
|
-
|
|
67
|
-
A `UIViewController` that displays a list of users.
|
|
68
|
-
|
|
69
|
-
**Usage:**
|
|
70
|
-
```swift
|
|
71
|
-
let usersVC = CometChatUsers()
|
|
72
|
-
let usersNav = UINavigationController(rootViewController: usersVC)
|
|
73
|
-
|
|
74
|
-
usersVC.set(onItemClick: { [weak usersNav] user, indexPath in
|
|
75
|
-
let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer; see cometchat-ios-components § 12
|
|
76
|
-
messagesVC.user = user
|
|
77
|
-
usersNav?.pushViewController(messagesVC, animated: true)
|
|
78
|
-
})
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
**Key Properties:**
|
|
82
|
-
| Property | Type | Description |
|
|
83
|
-
|---|---|---|
|
|
84
|
-
| `style` | `UsersStyle` | Visual styling |
|
|
85
|
-
| `hideSearch` | `Bool` | Hide the built-in search bar (inherited from `CometChatListBase`; default `true`) |
|
|
86
|
-
| `hideUserStatus` | `Bool` | Hide online/offline indicator |
|
|
87
|
-
| `selectionMode` | `SelectionMode` | `.none`, `.single`, `.multiple` |
|
|
88
|
-
|
|
89
|
-
**Callbacks:**
|
|
90
|
-
| Callback | Method | Description |
|
|
91
|
-
|---|---|---|
|
|
92
|
-
| `onItemClick` | `set(onItemClick:)` | User tapped |
|
|
93
|
-
| `onSelection` | `set(onSelection:)` | Selection changed |
|
|
94
|
-
| `onError` | `set(onError:)` | Error occurred |
|
|
95
|
-
|
|
96
|
-
**Custom Subtitle View:**
|
|
97
|
-
```swift
|
|
98
|
-
import CometChatSDK
|
|
99
|
-
|
|
100
|
-
let usersVC = CometChatUsers()
|
|
101
|
-
|
|
102
|
-
// Custom subtitle with explicit type annotation
|
|
103
|
-
usersVC.set(subtitle: { (user: User?) -> UIView in
|
|
104
|
-
let label = UILabel()
|
|
105
|
-
label.font = .systemFont(ofSize: 13)
|
|
106
|
-
if user?.status == .online {
|
|
107
|
-
label.text = "Online"
|
|
108
|
-
label.textColor = .systemGreen
|
|
109
|
-
} else {
|
|
110
|
-
label.text = "Offline"
|
|
111
|
-
label.textColor = .secondaryLabel
|
|
112
|
-
}
|
|
113
|
-
return label
|
|
114
|
-
})
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**Custom Request Builder:**
|
|
118
|
-
```swift
|
|
119
|
-
let usersVC = CometChatUsers()
|
|
120
|
-
usersVC.set(userRequestBuilder: UsersRequest.UsersRequestBuilder()
|
|
121
|
-
.set(limit: 30)
|
|
122
|
-
.set(searchKeyword: "john")
|
|
123
|
-
)
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## 3. CometChatGroups
|
|
129
|
-
|
|
130
|
-
A `UIViewController` that displays a list of groups.
|
|
131
|
-
|
|
132
|
-
**Usage:**
|
|
133
|
-
```swift
|
|
134
|
-
let groupsVC = CometChatGroups()
|
|
135
|
-
let groupsNav = UINavigationController(rootViewController: groupsVC)
|
|
136
|
-
|
|
137
|
-
groupsVC.set(onItemClick: { [weak groupsNav] group, indexPath in
|
|
138
|
-
let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer; see cometchat-ios-components § 12
|
|
139
|
-
messagesVC.group = group
|
|
140
|
-
groupsNav?.pushViewController(messagesVC, animated: true)
|
|
141
|
-
})
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
**Key Properties:**
|
|
145
|
-
| Property | Type | Description |
|
|
146
|
-
|---|---|---|
|
|
147
|
-
| `style` | `GroupsStyle` | Visual styling |
|
|
148
|
-
| `hideSearch` | `Bool` | Hide the built-in search bar (inherited from `CometChatListBase`; default `true`) |
|
|
149
|
-
| `selectionMode` | `SelectionMode` | `.none`, `.single`, `.multiple` |
|
|
150
|
-
|
|
151
|
-
**Callbacks:**
|
|
152
|
-
| Callback | Method | Description |
|
|
153
|
-
|---|---|---|
|
|
154
|
-
| `onItemClick` | `set(onItemClick:)` | Group tapped |
|
|
155
|
-
| `onSelection` | `set(onSelection:)` | Selection changed |
|
|
156
|
-
| `onError` | `set(onError:)` | Error occurred |
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## 4. CometChatMessageHeader
|
|
161
|
-
|
|
162
|
-
A `UIView` that displays user/group info and back button at the top of a message view.
|
|
163
|
-
|
|
164
|
-
**Usage:**
|
|
165
|
-
```swift
|
|
166
|
-
private lazy var headerView: CometChatMessageHeader = {
|
|
167
|
-
let view = CometChatMessageHeader()
|
|
168
|
-
view.translatesAutoresizingMaskIntoConstraints = false
|
|
169
|
-
if let user = user {
|
|
170
|
-
view.set(user: user)
|
|
171
|
-
} else if let group = group {
|
|
172
|
-
view.set(group: group)
|
|
173
|
-
}
|
|
174
|
-
view.set(controller: self)
|
|
175
|
-
return view
|
|
176
|
-
}()
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
**Key Properties:**
|
|
180
|
-
| Property | Type | Description |
|
|
181
|
-
|---|---|---|
|
|
182
|
-
| `style` | `MessageHeaderStyle` | Visual styling |
|
|
183
|
-
| `hideBackButton` | `Bool` | Hide back button |
|
|
184
|
-
| `hideVideoCallButton` | `Bool` | Hide video call button |
|
|
185
|
-
| `hideVoiceCallButton` | `Bool` | Hide voice call button |
|
|
186
|
-
|
|
187
|
-
**Important:** Always call `view.set(controller: self)` to enable navigation.
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
## 5. CometChatMessageList
|
|
192
|
-
|
|
193
|
-
A `UIView` that displays messages with real-time updates.
|
|
194
|
-
|
|
195
|
-
**Usage:**
|
|
196
|
-
```swift
|
|
197
|
-
private lazy var messageListView: CometChatMessageList = {
|
|
198
|
-
let listView = CometChatMessageList()
|
|
199
|
-
listView.translatesAutoresizingMaskIntoConstraints = false
|
|
200
|
-
if let user = user {
|
|
201
|
-
listView.set(user: user)
|
|
202
|
-
} else if let group = group {
|
|
203
|
-
listView.set(group: group)
|
|
204
|
-
}
|
|
205
|
-
listView.set(controller: self)
|
|
206
|
-
return listView
|
|
207
|
-
}()
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
**Key Properties:**
|
|
211
|
-
| Property | Type | Description |
|
|
212
|
-
|---|---|---|
|
|
213
|
-
| `style` | `MessageListStyle` | Visual styling |
|
|
214
|
-
| `hideReceipts` | `Bool` | Hide read receipts |
|
|
215
|
-
| `hideDateSeparator` | `Bool` | Hide date separators |
|
|
216
|
-
| `hideAvatar` | `Bool` | Hide sender avatars |
|
|
217
|
-
| `scrollToBottomOnNewMessages` | `Bool` | Auto-scroll on new messages |
|
|
218
|
-
| `messageAlignment` | `MessageListAlignment` | `.standard` or `.leftAligned` |
|
|
219
|
-
|
|
220
|
-
**Important:** Always call `listView.set(controller: self)` for proper functionality.
|
|
221
|
-
|
|
222
|
-
---
|
|
223
|
-
|
|
224
|
-
## 6. CometChatMessageComposer
|
|
225
|
-
|
|
226
|
-
A `UIView` for composing and sending messages.
|
|
227
|
-
|
|
228
|
-
**Usage:**
|
|
229
|
-
```swift
|
|
230
|
-
private lazy var composerView: CometChatMessageComposer = {
|
|
231
|
-
let composer = CometChatMessageComposer()
|
|
232
|
-
composer.translatesAutoresizingMaskIntoConstraints = false
|
|
233
|
-
if let user = user {
|
|
234
|
-
composer.set(user: user)
|
|
235
|
-
} else if let group = group {
|
|
236
|
-
composer.set(group: group)
|
|
237
|
-
}
|
|
238
|
-
composer.set(controller: self)
|
|
239
|
-
return composer
|
|
240
|
-
}()
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
**Key Properties:**
|
|
244
|
-
| Property | Type | Description |
|
|
245
|
-
|---|---|---|
|
|
246
|
-
| `style` | `MessageComposerStyle` | Visual styling |
|
|
247
|
-
| `placeholderText` | `String` | Placeholder text |
|
|
248
|
-
| `hideVoiceRecordingButton` | `Bool` | Hide voice recording button |
|
|
249
|
-
| `hideAttachmentButton` | `Bool` | Hide attachment button |
|
|
250
|
-
| `hideStickersButton` | `Bool` | Hide stickers button |
|
|
251
|
-
|
|
252
|
-
**Important:** Always call `composer.set(controller: self)` for proper functionality.
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
## 7. CometChatCallLogs
|
|
257
|
-
|
|
258
|
-
A `UIViewController` that displays call history.
|
|
259
|
-
|
|
260
|
-
**Requires:** `CometChatCallsSDK`
|
|
261
|
-
|
|
262
|
-
**Usage:**
|
|
263
|
-
```swift
|
|
264
|
-
#if canImport(CometChatCallsSDK)
|
|
265
|
-
let callLogsVC = CometChatCallLogs()
|
|
266
|
-
let callLogsNav = UINavigationController(rootViewController: callLogsVC)
|
|
267
|
-
#endif
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
---
|
|
271
|
-
|
|
272
|
-
## 8. CometChatGroupMembers
|
|
273
|
-
|
|
274
|
-
A `UIViewController` that displays members of a specific group.
|
|
275
|
-
|
|
276
|
-
**Usage:**
|
|
277
|
-
```swift
|
|
278
|
-
// CometChatGroupMembers has a zero-arg initializer; pass the group via
|
|
279
|
-
// `set(group:)`. There is no `CometChatGroupMembers(group:)` initializer.
|
|
280
|
-
let groupMembers = CometChatGroupMembers()
|
|
281
|
-
groupMembers.set(group: group)
|
|
282
|
-
navigationController?.pushViewController(groupMembers, animated: true)
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
---
|
|
286
|
-
|
|
287
|
-
## 9. User / Group details — build your own VC
|
|
288
|
-
|
|
289
|
-
There is **no `CometChatDetails` view controller exported by the kit.** The sample app builds a details screen by composing avatar, list rows, and action sheets directly. Follow the same pattern in your app — `SampleApp/View Controllers/DetailsPage/UserDetailsViewController.swift` is a reasonable starting point to copy.
|
|
290
|
-
|
|
291
|
-
---
|
|
292
|
-
|
|
293
|
-
## 10. CometChatUIKit
|
|
294
|
-
|
|
295
|
-
Static class for initialization and authentication.
|
|
296
|
-
|
|
297
|
-
**Initialization:**
|
|
298
|
-
```swift
|
|
299
|
-
let uikitSettings = UIKitSettings()
|
|
300
|
-
.set(appID: "APP_ID")
|
|
301
|
-
.set(region: "REGION")
|
|
302
|
-
.set(authKey: "AUTH_KEY")
|
|
303
|
-
.subscribePresenceForAllUsers()
|
|
304
|
-
.build()
|
|
305
|
-
|
|
306
|
-
// Init takes a `UIKitSettings` and a `Result<Bool, Error>` completion.
|
|
307
|
-
// Both `CometChatUIKit(uiKitSettings: ...) { ... }` (constructor form)
|
|
308
|
-
// and `CometChatUIKit.init(uiKitSettings: ...) { ... }` (explicit `.init`
|
|
309
|
-
// call) compile to the same thing in Swift; the kit's sample apps use
|
|
310
|
-
// the `.init` form, so don't be alarmed if you see both. See
|
|
311
|
-
// cometchat-ios-core § 2 for the recommended singleton pattern.
|
|
312
|
-
CometChatUIKit(uiKitSettings: uikitSettings) { result in
|
|
313
|
-
switch result {
|
|
314
|
-
case .success:
|
|
315
|
-
debugPrint("CometChat initialized")
|
|
316
|
-
case .failure(let error):
|
|
317
|
-
debugPrint("Init failed: \(error.localizedDescription)")
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
**Login:**
|
|
323
|
-
```swift
|
|
324
|
-
CometChatUIKit.login(uid: "cometchat-uid-1") { result in
|
|
325
|
-
switch result {
|
|
326
|
-
case .success(let user):
|
|
327
|
-
print("Login successful: \(user.name ?? "")")
|
|
328
|
-
case .onError(let error):
|
|
329
|
-
print("Login failed: \(error.errorDescription)")
|
|
330
|
-
@unknown default:
|
|
331
|
-
break
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
**Logout:**
|
|
337
|
-
```swift
|
|
338
|
-
if let currentUser = CometChat.getLoggedInUser() {
|
|
339
|
-
CometChatUIKit.logout(user: currentUser) { result in
|
|
340
|
-
switch result {
|
|
341
|
-
case .success:
|
|
342
|
-
print("Logged out successfully")
|
|
343
|
-
case .onError(let error):
|
|
344
|
-
print("Logout failed: \(error.errorDescription)")
|
|
345
|
-
@unknown default:
|
|
346
|
-
break
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
---
|
|
353
|
-
|
|
354
|
-
## 11. Composing a chat screen — `MessagesVC`
|
|
355
|
-
|
|
356
|
-
The kit does **not** ship a `CometChatMessages` or `CometChatConversationsWithMessages` view controller. The standard pattern (and what the sample app uses) is to compose `CometChatMessageHeader` + `CometChatMessageList` + `CometChatMessageComposer` inside your own `UIViewController`. See § 12 below for the full implementation — it's ~50 lines and gives you full control over navigation and lifecycle.
|
|
357
|
-
|
|
358
|
-
If you previously read about a "pre-built `CometChatMessages` UIViewController" in older docs or AI-generated guides, that was incorrect. Always build your own `MessagesVC` as shown in § 12 (or copy `SampleApp/View Controllers/CometChat Components/MessagesVC.swift` from the kit's sample app).
|
|
359
|
-
|
|
360
|
-
---
|
|
361
|
-
|
|
362
|
-
## 12. Custom MessagesVC Implementation
|
|
363
|
-
|
|
364
|
-
If you need more control over the messaging UI, create a custom view controller that combines header, list, and composer:
|
|
365
|
-
|
|
366
|
-
```swift
|
|
367
|
-
import UIKit
|
|
368
|
-
import CometChatSDK
|
|
369
|
-
import CometChatUIKitSwift
|
|
370
|
-
|
|
371
|
-
class MessagesVC: UIViewController {
|
|
372
|
-
|
|
373
|
-
// MARK: - Properties
|
|
374
|
-
var user: User?
|
|
375
|
-
var group: Group?
|
|
376
|
-
|
|
377
|
-
// MARK: - UI Components
|
|
378
|
-
private lazy var headerView: CometChatMessageHeader = {
|
|
379
|
-
let view = CometChatMessageHeader()
|
|
380
|
-
view.translatesAutoresizingMaskIntoConstraints = false
|
|
381
|
-
if let user = user {
|
|
382
|
-
view.set(user: user)
|
|
383
|
-
} else if let group = group {
|
|
384
|
-
view.set(group: group)
|
|
385
|
-
}
|
|
386
|
-
view.set(controller: self)
|
|
387
|
-
return view
|
|
388
|
-
}()
|
|
389
|
-
|
|
390
|
-
private lazy var messageListView: CometChatMessageList = {
|
|
391
|
-
let listView = CometChatMessageList()
|
|
392
|
-
listView.translatesAutoresizingMaskIntoConstraints = false
|
|
393
|
-
if let user = user {
|
|
394
|
-
listView.set(user: user)
|
|
395
|
-
} else if let group = group {
|
|
396
|
-
listView.set(group: group)
|
|
397
|
-
}
|
|
398
|
-
listView.set(controller: self)
|
|
399
|
-
return listView
|
|
400
|
-
}()
|
|
401
|
-
|
|
402
|
-
private lazy var composerView: CometChatCompactMessageComposer = {
|
|
403
|
-
let composer = CometChatCompactMessageComposer()
|
|
404
|
-
composer.translatesAutoresizingMaskIntoConstraints = false
|
|
405
|
-
if let user = user {
|
|
406
|
-
composer.set(user: user)
|
|
407
|
-
} else if let group = group {
|
|
408
|
-
composer.set(group: group)
|
|
409
|
-
}
|
|
410
|
-
composer.set(controller: self)
|
|
411
|
-
return composer
|
|
412
|
-
}()
|
|
413
|
-
|
|
414
|
-
// MARK: - Lifecycle
|
|
415
|
-
override func viewDidLoad() {
|
|
416
|
-
super.viewDidLoad()
|
|
417
|
-
configureView()
|
|
418
|
-
setupLayout()
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
override func viewWillDisappear(_ animated: Bool) {
|
|
422
|
-
super.viewWillDisappear(animated)
|
|
423
|
-
navigationController?.setNavigationBarHidden(false, animated: true)
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
// MARK: - Setup
|
|
427
|
-
private func configureView() {
|
|
428
|
-
view.backgroundColor = .systemBackground
|
|
429
|
-
navigationController?.setNavigationBarHidden(true, animated: false)
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
private func setupLayout() {
|
|
433
|
-
[headerView, messageListView, composerView].forEach { view.addSubview($0) }
|
|
434
|
-
|
|
435
|
-
NSLayoutConstraint.activate([
|
|
436
|
-
headerView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
|
|
437
|
-
headerView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
438
|
-
headerView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
439
|
-
headerView.heightAnchor.constraint(equalToConstant: 50),
|
|
440
|
-
|
|
441
|
-
messageListView.topAnchor.constraint(equalTo: headerView.bottomAnchor),
|
|
442
|
-
messageListView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
443
|
-
messageListView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
444
|
-
messageListView.bottomAnchor.constraint(equalTo: composerView.topAnchor),
|
|
445
|
-
|
|
446
|
-
composerView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
447
|
-
composerView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
448
|
-
composerView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
|
|
449
|
-
])
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
---
|
|
455
|
-
|
|
456
|
-
## 14. Complete Tab-Based Chat App
|
|
457
|
-
|
|
458
|
-
Full implementation of a tabbed chat app with Chats, Calls, Users, and Groups:
|
|
459
|
-
|
|
460
|
-
```swift
|
|
461
|
-
import UIKit
|
|
462
|
-
import CometChatUIKitSwift
|
|
463
|
-
import CometChatSDK
|
|
464
|
-
|
|
465
|
-
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
|
|
466
|
-
|
|
467
|
-
var window: UIWindow?
|
|
468
|
-
|
|
469
|
-
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
|
|
470
|
-
guard let windowScene = (scene as? UIWindowScene) else { return }
|
|
471
|
-
|
|
472
|
-
let uikitSettings = UIKitSettings()
|
|
473
|
-
.set(appID: "APP_ID")
|
|
474
|
-
.set(region: "REGION")
|
|
475
|
-
.set(authKey: "AUTH_KEY")
|
|
476
|
-
.subscribePresenceForAllUsers()
|
|
477
|
-
.build()
|
|
478
|
-
|
|
479
|
-
CometChatUIKit.init(uiKitSettings: uikitSettings) { result in
|
|
480
|
-
switch result {
|
|
481
|
-
case .success:
|
|
482
|
-
CometChatUIKit.login(uid: "cometchat-uid-1") { loginResult in
|
|
483
|
-
switch loginResult {
|
|
484
|
-
case .success:
|
|
485
|
-
DispatchQueue.main.async {
|
|
486
|
-
self.setupTabbedView(windowScene: windowScene)
|
|
487
|
-
}
|
|
488
|
-
case .onError(let error):
|
|
489
|
-
print("Login failed: \(error.errorDescription)")
|
|
490
|
-
@unknown default:
|
|
491
|
-
break
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
case .failure(let error):
|
|
495
|
-
print("Init failed: \(error)")
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
func setupTabbedView(windowScene: UIWindowScene) {
|
|
501
|
-
let tabBarController = UITabBarController()
|
|
502
|
-
tabBarController.tabBar.backgroundColor = .white
|
|
503
|
-
|
|
504
|
-
// Conversations Tab
|
|
505
|
-
let conversationsVC = CometChatConversations()
|
|
506
|
-
let conversationsNav = UINavigationController(rootViewController: conversationsVC)
|
|
507
|
-
conversationsVC.tabBarItem = UITabBarItem(
|
|
508
|
-
title: "CHATS",
|
|
509
|
-
image: UIImage(systemName: "message.fill"),
|
|
510
|
-
tag: 0
|
|
511
|
-
)
|
|
512
|
-
|
|
513
|
-
conversationsVC.set(onItemClick: { [weak conversationsNav] conversation, indexPath in
|
|
514
|
-
let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer; see cometchat-ios-components § 12
|
|
515
|
-
if let group = conversation.conversationWith as? Group {
|
|
516
|
-
messagesVC.group = group
|
|
517
|
-
} else if let user = conversation.conversationWith as? User {
|
|
518
|
-
messagesVC.user = user
|
|
519
|
-
}
|
|
520
|
-
messagesVC.hidesBottomBarWhenPushed = true
|
|
521
|
-
conversationsNav?.pushViewController(messagesVC, animated: true)
|
|
522
|
-
})
|
|
523
|
-
|
|
524
|
-
// Call Logs Tab
|
|
525
|
-
#if canImport(CometChatCallsSDK)
|
|
526
|
-
let callLogsVC = CometChatCallLogs()
|
|
527
|
-
let callLogsNav = UINavigationController(rootViewController: callLogsVC)
|
|
528
|
-
callLogsVC.tabBarItem = UITabBarItem(
|
|
529
|
-
title: "CALLS",
|
|
530
|
-
image: UIImage(systemName: "phone.fill"),
|
|
531
|
-
tag: 1
|
|
532
|
-
)
|
|
533
|
-
#endif
|
|
534
|
-
|
|
535
|
-
// Users Tab
|
|
536
|
-
let usersVC = CometChatUsers()
|
|
537
|
-
let usersNav = UINavigationController(rootViewController: usersVC)
|
|
538
|
-
usersVC.tabBarItem = UITabBarItem(
|
|
539
|
-
title: "USERS",
|
|
540
|
-
image: UIImage(systemName: "person.2.fill"),
|
|
541
|
-
tag: 2
|
|
542
|
-
)
|
|
543
|
-
|
|
544
|
-
usersVC.set(onItemClick: { [weak usersNav] user, indexPath in
|
|
545
|
-
let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer; see cometchat-ios-components § 12
|
|
546
|
-
messagesVC.user = user
|
|
547
|
-
messagesVC.hidesBottomBarWhenPushed = true
|
|
548
|
-
usersNav?.pushViewController(messagesVC, animated: true)
|
|
549
|
-
})
|
|
550
|
-
|
|
551
|
-
// Groups Tab
|
|
552
|
-
let groupsVC = CometChatGroups()
|
|
553
|
-
let groupsNav = UINavigationController(rootViewController: groupsVC)
|
|
554
|
-
groupsVC.tabBarItem = UITabBarItem(
|
|
555
|
-
title: "GROUPS",
|
|
556
|
-
image: UIImage(systemName: "person.3.fill"),
|
|
557
|
-
tag: 3
|
|
558
|
-
)
|
|
559
|
-
|
|
560
|
-
groupsVC.set(onItemClick: { [weak groupsNav] group, indexPath in
|
|
561
|
-
let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer; see cometchat-ios-components § 12
|
|
562
|
-
messagesVC.group = group
|
|
563
|
-
messagesVC.hidesBottomBarWhenPushed = true
|
|
564
|
-
groupsNav?.pushViewController(messagesVC, animated: true)
|
|
565
|
-
})
|
|
566
|
-
|
|
567
|
-
#if canImport(CometChatCallsSDK)
|
|
568
|
-
tabBarController.viewControllers = [conversationsNav, callLogsNav, usersNav, groupsNav]
|
|
569
|
-
#else
|
|
570
|
-
tabBarController.viewControllers = [conversationsNav, usersNav, groupsNav]
|
|
571
|
-
#endif
|
|
572
|
-
|
|
573
|
-
window = UIWindow(windowScene: windowScene)
|
|
574
|
-
window?.rootViewController = tabBarController
|
|
575
|
-
window?.makeKeyAndVisible()
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
```
|
|
579
|
-
|
|
580
|
-
---
|
|
581
|
-
|
|
582
|
-
## 15. Shared UI Components
|
|
583
|
-
|
|
584
|
-
### CometChatAvatar
|
|
585
|
-
```swift
|
|
586
|
-
let avatar = CometChatAvatar()
|
|
587
|
-
avatar.setAvatar(avatarUrl: user.avatar ?? "", with: user.name)
|
|
588
|
-
```
|
|
589
|
-
|
|
590
|
-
### CometChatBadge
|
|
591
|
-
```swift
|
|
592
|
-
let badge = CometChatBadge()
|
|
593
|
-
badge.set(count: 5)
|
|
594
|
-
```
|
|
595
|
-
|
|
596
|
-
### CometChatStatusIndicator
|
|
597
|
-
```swift
|
|
598
|
-
let statusIndicator = CometChatStatusIndicator()
|
|
599
|
-
statusIndicator.set(status: .online)
|
|
600
|
-
```
|
|
601
|
-
|
|
602
|
-
---
|
|
603
|
-
|
|
604
|
-
## 16. AI Components
|
|
605
|
-
|
|
606
|
-
### CometChatAIConversationStarter
|
|
607
|
-
Displays AI-suggested conversation starters.
|
|
608
|
-
|
|
609
|
-
### CometChatAISmartReply
|
|
610
|
-
Displays AI-suggested quick replies.
|
|
611
|
-
|
|
612
|
-
### CometChatAIConversationSummary
|
|
613
|
-
Displays AI-generated conversation summary.
|
|
614
|
-
|
|
615
|
-
---
|
|
616
|
-
|
|
617
|
-
## 17. Extensions
|
|
618
|
-
|
|
619
|
-
### CometChatPollsBubble
|
|
620
|
-
Renders poll messages.
|
|
621
|
-
|
|
622
|
-
### CometChatStickerKeyboard
|
|
623
|
-
Sticker picker keyboard.
|
|
624
|
-
|
|
625
|
-
### CometChatLinkPreviewBubble
|
|
626
|
-
Renders URL link previews.
|
|
627
|
-
|
|
628
|
-
---
|
|
629
|
-
|
|
630
|
-
## 19. Additional v5 components
|
|
631
|
-
|
|
632
|
-
These components ship in `CometChatUIKitSwift` v5 and appear in the docs nav. Verify symbols against the kit source before use — never invent properties.
|
|
633
|
-
|
|
634
|
-
### 19.1 CometChatSearch
|
|
635
|
-
|
|
636
|
-
A `UIViewController` that searches across conversations and messages, with filter chips (Unread, Groups, Photos, Videos, Links, Documents, Audio). Push it inside a `UINavigationController` — it installs its own `UISearchController` into `navigationItem`.
|
|
637
|
-
|
|
638
|
-
**Usage:**
|
|
639
|
-
```swift
|
|
640
|
-
let searchVC = CometChatSearch()
|
|
641
|
-
searchVC.set(searchIn: [.conversations, .messages]) // SearchScope
|
|
642
|
-
searchVC.set(onConversationClicked: { conversation, indexPath in
|
|
643
|
-
// navigate to the conversation
|
|
644
|
-
})
|
|
645
|
-
searchVC.set(onMessageClicked: { message in
|
|
646
|
-
// jump to the message
|
|
647
|
-
})
|
|
648
|
-
navigationController?.pushViewController(searchVC, animated: true)
|
|
649
|
-
```
|
|
650
|
-
|
|
651
|
-
To scope a search to a single user or group, set `searchVC.user` or `searchVC.group` before pushing.
|
|
652
|
-
|
|
653
|
-
**Key Properties:**
|
|
654
|
-
| Property | Type | Description |
|
|
655
|
-
|---|---|---|
|
|
656
|
-
| `style` | `SearchStyle` | Visual styling |
|
|
657
|
-
| `searchScopes` | `[SearchScope]` | `.conversations`, `.messages` (also via `set(searchIn:)`) |
|
|
658
|
-
| `user` | `User?` | Scope search to one user |
|
|
659
|
-
| `group` | `Group?` | Scope search to one group |
|
|
660
|
-
| `hideUserStatus` | `Bool` | Hide online/offline indicator |
|
|
661
|
-
| `hideGroupType` | `Bool` | Hide private/protected group icon |
|
|
662
|
-
| `disableTyping` | `Bool` | Disable typing indicators |
|
|
663
|
-
|
|
664
|
-
**Callbacks:**
|
|
665
|
-
| Callback | Method | Description |
|
|
666
|
-
|---|---|---|
|
|
667
|
-
| `onConversationClicked` | `set(onConversationClicked:)` | Conversation result tapped |
|
|
668
|
-
| `onMessageClicked` | `set(onMessageClicked:)` | Message result tapped |
|
|
669
|
-
|
|
670
|
-
Filter configuration: `set(searchFilters:initialFilter:)` (takes `[SearchFilter]`).
|
|
671
|
-
|
|
672
|
-
---
|
|
673
|
-
|
|
674
|
-
### 19.2 CometChatNotificationFeed
|
|
675
|
-
|
|
676
|
-
A `UIViewController` (subclass of `CometChatListBase`) that renders an **in-app** notification feed — a scrollable list of `NotificationFeedItem` cards with category filter chips and unread counts. This is the in-app feed UI; it is **distinct from push notifications** (see `cometchat-ios-push` for FCM/APNs delivery). Push it inside a `UINavigationController`.
|
|
677
|
-
|
|
678
|
-
**Usage:**
|
|
679
|
-
```swift
|
|
680
|
-
// tier2-expect-error — CometChatNotificationFeed is verified real in the v5 UI Kit
|
|
681
|
-
// source (Components/Notification Feed/), but postdates the 5.1.13 Pods snapshot the
|
|
682
|
-
// Tier-2 harness compiles against. A fresh `pod 'CometChatUIKitSwift', '~> 5.1'`
|
|
683
|
-
// install resolves a newer 5.x that ships it.
|
|
684
|
-
let feedVC = CometChatNotificationFeed()
|
|
685
|
-
feedVC.set(showFilterChips: true)
|
|
686
|
-
feedVC.set(onItemClick: { feedItem in
|
|
687
|
-
// handle the tapped feed item
|
|
688
|
-
})
|
|
689
|
-
feedVC.set(onActionClick: { feedItem, actionEvent in
|
|
690
|
-
// handle a card action button (CometChatCardActionEvent)
|
|
691
|
-
})
|
|
692
|
-
navigationController?.pushViewController(feedVC, animated: true)
|
|
693
|
-
```
|
|
694
|
-
|
|
695
|
-
**Key Properties:**
|
|
696
|
-
| Property | Type | Description |
|
|
697
|
-
|---|---|---|
|
|
698
|
-
| `style` | `NotificationFeedStyle` | Visual styling (chips, cards, badges, timestamps) |
|
|
699
|
-
| `showFilterChips` | `Bool` | Show category filter chips (default `true`) |
|
|
700
|
-
| `showBackButton` | `Bool` | Show back button (default `true`) |
|
|
701
|
-
| `cardThemeMode` | `String` | Card theme mode, e.g. `"auto"` |
|
|
702
|
-
|
|
703
|
-
**Callbacks:**
|
|
704
|
-
| Callback | Method | Description |
|
|
705
|
-
|---|---|---|
|
|
706
|
-
| `onItemClick` | `set(onItemClick:)` | Feed item tapped (`NotificationFeedItem`) |
|
|
707
|
-
| `onActionClick` | `set(onActionClick:)` | Card action tapped (`CometChatCardActionEvent`) |
|
|
708
|
-
| `onError` | `set(onError:)` | Error occurred |
|
|
709
|
-
|
|
710
|
-
**Data operations:** `insert(feedItem:at:)`, `remove(feedItemId:)`, `clearList()`, `refresh()`, `size()`, `getFeedItems()`, `getUnreadCount()`. Custom fetch via `set(notificationFeedRequestBuilder:)` and `set(notificationCategoriesRequestBuilder:)`.
|
|
711
|
-
|
|
712
|
-
---
|
|
713
|
-
|
|
714
|
-
### 19.3 CometChatCompactMessageComposer
|
|
715
|
-
|
|
716
|
-
A `UIView` — the **compact variant of `CometChatMessageComposer`** (§ 6) — with built-in rich-text formatting (bold/italic/code/blockquote/lists via a `CometChatRichTextToolbar`). Use it where a single-line, space-constrained composer is needed. Same `set(user:)` / `set(group:)` data wiring as the standard composer.
|
|
717
|
-
|
|
718
|
-
**Usage:**
|
|
719
|
-
```swift
|
|
720
|
-
private lazy var compactComposer: CometChatCompactMessageComposer = {
|
|
721
|
-
let composer = CometChatCompactMessageComposer()
|
|
722
|
-
composer.translatesAutoresizingMaskIntoConstraints = false
|
|
723
|
-
if let user = user {
|
|
724
|
-
composer.set(user: user)
|
|
725
|
-
} else if let group = group {
|
|
726
|
-
composer.set(group: group)
|
|
727
|
-
}
|
|
728
|
-
composer.set(controller: self)
|
|
729
|
-
return composer
|
|
730
|
-
}()
|
|
731
|
-
```
|
|
732
|
-
|
|
733
|
-
**Key Properties / Configuration:**
|
|
734
|
-
| Member | Type | Description |
|
|
735
|
-
|---|---|---|
|
|
736
|
-
| `style` | `CompactMessageComposerStyle` | Visual styling |
|
|
737
|
-
| `set(placeholder:)` | `String` | Placeholder text |
|
|
738
|
-
| `set(maxLines:)` | `Int` | Max text length |
|
|
739
|
-
| `set(textFormatter:)` | `[CometChatTextFormatter]` | Text formatters (mentions, etc.) |
|
|
740
|
-
| `set(controller:)` | `UIViewController` | Hosting controller (call for attachments/sheets) |
|
|
741
|
-
| `disable(soundForMessages:)` | `Bool` | Disable message sounds |
|
|
742
|
-
| `disable(typingEvents:)` | `Bool` | Disable typing events |
|
|
743
|
-
| `disable(mentions:)` | `Bool` | Disable mentions |
|
|
744
|
-
|
|
745
|
-
**Callbacks:**
|
|
746
|
-
| Callback | Method | Description |
|
|
747
|
-
|---|---|---|
|
|
748
|
-
| `onSendButtonClick` | `set(onSendButtonClick:)` | Send tapped (`BaseMessage`) |
|
|
749
|
-
| `onTextChangedListener` | `set(onTextChangedListener:)` | Text changed (`String`) |
|
|
750
|
-
| `onError` | `set(onError:)` | Error occurred |
|
|
751
|
-
|
|
752
|
-
**Edit / reply:** `edit(message:)`, `reply(message:)`, `preview(message:mode:)` (`ComposerState`).
|
|
753
|
-
|
|
754
|
-
---
|
|
755
|
-
|
|
756
|
-
### 19.4 CometChatAIAssistanceChatHistory
|
|
757
|
-
|
|
758
|
-
A `UIViewController` that lists prior AI-assistant chat sessions (history) for a user or group, with a "New Chat" affordance. Push it inside a `UINavigationController`. (Note the class name spelling: `AIAssistance`; its style struct is `AiAssistantChatHistoryStyle`.)
|
|
759
|
-
|
|
760
|
-
**Usage:**
|
|
761
|
-
```swift
|
|
762
|
-
let historyVC = CometChatAIAssistanceChatHistory()
|
|
763
|
-
historyVC.set(user: user) // or set(group:)
|
|
764
|
-
historyVC.onMessageClicked = { message in
|
|
765
|
-
// open the selected AI chat
|
|
766
|
-
}
|
|
767
|
-
historyVC.onNewChatButtonClicked = { user in
|
|
768
|
-
// start a new AI chat
|
|
769
|
-
}
|
|
770
|
-
navigationController?.pushViewController(historyVC, animated: true)
|
|
771
|
-
```
|
|
772
|
-
|
|
773
|
-
**Key Properties:**
|
|
774
|
-
| Property | Type | Description |
|
|
775
|
-
|---|---|---|
|
|
776
|
-
| `style` | `AiAssistantChatHistoryStyle` | Visual styling |
|
|
777
|
-
| `user` | `User?` | History scope |
|
|
778
|
-
| `group` | `Group?` | History scope |
|
|
779
|
-
| `hideDateSeparator` | `Bool` | Hide date separators |
|
|
780
|
-
| `onMessageClicked` | `((BaseMessage) -> Void)?` | History row tapped |
|
|
781
|
-
| `onNewChatButtonClicked` | `((User) -> Void)?` | "New Chat" tapped |
|
|
782
|
-
|
|
783
|
-
**Configuration:** `set(user:parentMessage:withParent:)`, `set(group:parentMessage:)`, `set(messagesRequestBuilder:)`, plus `set(onError:)`, `set(onLoad:)`, `set(onEmpty:)`, `set(errorView:)`, `set(emptyView:)`, `set(loadingView:)`.
|
|
784
|
-
|
|
785
|
-
---
|
|
786
|
-
|
|
787
|
-
### 19.5 CometChatThreadedMessageHeader
|
|
788
|
-
|
|
789
|
-
A `UIView` that renders the parent message bubble plus the reply count at the top of a thread/reply screen. Compose it above a `CometChatMessageList` (configured with the parent message's thread) inside your own thread VC — analogous to how `CometChatMessageHeader` sits atop a chat screen (§ 4, § 12).
|
|
790
|
-
|
|
791
|
-
**Usage:**
|
|
792
|
-
```swift
|
|
793
|
-
private lazy var threadHeader: CometChatThreadedMessageHeader = {
|
|
794
|
-
let header = CometChatThreadedMessageHeader()
|
|
795
|
-
header.translatesAutoresizingMaskIntoConstraints = false
|
|
796
|
-
header.set(parentMessage: parentMessage)
|
|
797
|
-
header.set(count: parentMessage.replyCount)
|
|
798
|
-
header.set(controller: self)
|
|
799
|
-
return header
|
|
800
|
-
}()
|
|
801
|
-
```
|
|
802
|
-
|
|
803
|
-
**Key Properties:**
|
|
804
|
-
| Property | Type | Description |
|
|
805
|
-
|---|---|---|
|
|
806
|
-
| `style` | `ThreadedMessageHeaderStyle` | Visual styling |
|
|
807
|
-
| `maxHeight` | `CGFloat` | Max bubble area height (default `250`) |
|
|
808
|
-
| `messageAlignment` | `MessageListAlignment` | `.standard` or `.leftAligned` |
|
|
809
|
-
| `hideReceipt` | `Bool` | Hide read receipts |
|
|
810
|
-
| `hideReplyCount` | `Bool` | Hide the reply count |
|
|
811
|
-
| `hideReplyCountBar` | `Bool` | Hide the reply-count bar |
|
|
812
|
-
|
|
813
|
-
**Configuration:** `set(parentMessage:)`, `set(count:)`, `incrementCount()`, `reset()`, `set(templates:)`, `add(template:)`, `set(textFormatters:)`, `set(controller:)`.
|
|
814
|
-
|
|
815
|
-
---
|
|
816
|
-
|
|
817
|
-
## 18. SwiftUI Integration
|
|
818
|
-
|
|
819
|
-
Wrap UIKit components for SwiftUI:
|
|
820
|
-
|
|
821
|
-
```swift
|
|
822
|
-
import SwiftUI
|
|
823
|
-
import CometChatUIKitSwift
|
|
824
|
-
import CometChatSDK
|
|
825
|
-
|
|
826
|
-
struct ConversationsView: UIViewControllerRepresentable {
|
|
827
|
-
@Binding var selectedConversation: Conversation?
|
|
828
|
-
|
|
829
|
-
func makeUIViewController(context: Context) -> UINavigationController {
|
|
830
|
-
let conversationsVC = CometChatConversations()
|
|
831
|
-
conversationsVC.set(onItemClick: { conversation, _ in
|
|
832
|
-
selectedConversation = conversation
|
|
833
|
-
})
|
|
834
|
-
return UINavigationController(rootViewController: conversationsVC)
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
func updateUIViewController(_ uiViewController: UINavigationController, context: Context) {}
|
|
838
|
-
}
|
|
839
|
-
```
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
tags: "cometchat ios components swift uikit v5"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Companion skills (read first)
|
|
13
|
+
- `cometchat-ios-core` owns install, credentials, `init → login → render` and the golden-path chat surface. This skill ADDS the per-component catalogue; it never restates core's setup. Fetch exact API via `cometchat-ios-core/references/docs-map.md`.
|
|
14
|
+
|
|
15
|
+
## Use this skill when
|
|
16
|
+
Choosing a component, or customising one: "what shows the member list?", "put a badge on the conversation row", "swap the message bubble".
|
|
17
|
+
|
|
18
|
+
## The catalogue (catalog-verified — nothing else exists)
|
|
19
|
+
| Component | For |
|
|
20
|
+
|---|---|
|
|
21
|
+
| `CometChatConversations` | Recent-chats list · the usual entry point |
|
|
22
|
+
| `CometChatMessageHeader` · `CometChatMessageList` · `CometChatCompactMessageComposer` | The chat screen — **you compose these three yourself** |
|
|
23
|
+
| `CometChatUsers` · `CometChatGroups` · `CometChatGroupMembers` | Pickers and rosters |
|
|
24
|
+
| `CometChatSearch` | Global search over conversations and messages |
|
|
25
|
+
| `CometChatThreadedMessageHeader` | Thread parent header |
|
|
26
|
+
| `CometChatCallButtons` · `CometChatIncomingCall` · `CometChatOngoingCall` · `CometChatCallLogs` | Calling → `cometchat-ios-calls` |
|
|
27
|
+
| `CometChatAvatar` · `CometChatBadge` · `CometChatStatusIndicator` · `CometChatDate` · `CometChatReceipt` | Base building blocks |
|
|
28
|
+
| `CometChatMessageInformation` · `CometChatAIAssistanceChatHistory` | Per-message detail · AI history |
|
|
29
|
+
| `CometChatScopeChange` | Change a member's role. `set(group:groupMember:)`, `options: [(String, CometChat.MemberScope)]` (property). PRESENT it as a sheet — its Cancel calls `dismiss()`, so pushing it strands the user. `CometChatGroupMembers` already presents it on row tap. |
|
|
30
|
+
|
|
31
|
+
> **There is NO composite component.** `CometChatMessages`, `CometChat{Users,Groups,Conversations}WithMessages`, `CometChatAddMembers`, `CometChatMessageHeaderOption` are v4 or non-existent — never emit them. If a symbol is not in `catalogs/ios-v5.json`, it does not exist in v5, whatever a page says.
|
|
32
|
+
|
|
33
|
+
## Three API shapes — get this right or nothing compiles
|
|
34
|
+
1. **Setters** return `Self` and are chainable: `set(user:)`, `set(onItemClick:)`, `set(subtitle:)`.
|
|
35
|
+
2. **Properties** are assigned: `list.avatarStyle = …`, `conversations.onSearchClick = { … }`, `groups.onSelectedItemProceed = { … }`.
|
|
36
|
+
3. **Named setters** — `setXxx(xxx:)` with the label repeated: `CometChatMessageInformation` uses `setSubtitle(subtitle:)`, `setBubbleView(bubbleView:)`, `setListItemView(listItemView:)`, `setOnError(onError:)`. Writing them in shape-1 form (`set(subtitle:)`) does not compile on that component.
|
|
37
|
+
Which is which is **per component, and the kit is not consistent** — `CometChatConversations` has `set(subtitleView:)`/`set(trailView:)` while `CometChatUsers` and `CometChatGroups` have `set(subtitle:)`/`set(trailingView:)`, and `CometChatGroupMembers` uses the Conversations spelling. **Never generalise a name across components — fetch the component's `.md` twin.**
|
|
38
|
+
|
|
39
|
+
## Where custom UI goes — IN the component's slot, never beside it
|
|
40
|
+
Every list component exposes: `set(listItemView:)` (whole row) · `set(leadingView:)` · `set(titleView:)` · subtitle · trailing · `set(options:)` (swipe/overflow actions). Use these instead of building your own row above the list.
|
|
41
|
+
Empty/error/loading are **assignable views** inherited from `CometChatListBase`: `emptyStateView`, `errorStateView`, `loadingView`, plus `emptyStateTitleText` / `emptyStateSubTitleText` to retitle the built-in one. `CometChatSearch` is the exception — it does NOT inherit `CometChatListBase`, so it has none of that chrome; it uses `set(emptyView:)` / `set(errorView:)` / `set(loadingView:)` instead.
|
|
42
|
+
|
|
43
|
+
## Gotchas
|
|
44
|
+
- **`set(controller:)` on any component that presents something** (header, list, composer) or its built-in affordances render and do nothing.
|
|
45
|
+
- **`CometChatAvatar` — use `setAvatar(avatarUrl:with:)`. `set(image:)` and `init(image:)` compile but render NOTHING.** There is no `set(user:)`. Measured on 5.1.19: an avatar given a `UIImage` through either `set(image:)` or `init(image:)` draws an empty circle — the image never appears, with no warning and no error, because the kit paints its own content over it. `setAvatar(avatarUrl:with:)` is the working path, and its `with:` name renders initials when no URL loads. There is also **no no-arg init**: `CometChatAvatar()` does not compile — construct with `CometChatAvatar(image: nil)` or `CometChatAvatar(frame:)` and then call `setAvatar`.
|
|
46
|
+
- **Search slots are per result TYPE**: `set(listItemViewForMessage:)` plus `…ForImage/Video/Audio/Document/Link/Conversation`. There are no `*ForMessage` granular (title/subtitle/leading/trailing) slots — those exist for conversations only, as properties.
|
|
47
|
+
|
|
48
|
+
## Verify it works
|
|
49
|
+
The component renders at full size, its custom slot appears in the right place (inside the row, not above the list), and every rendered control does something when tapped.
|