@cometchat/skills 4.4.2 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +55 -0
- package/.claude-plugin/plugin.json +14 -0
- package/CHANGELOG.md +44 -0
- package/LICENSE +21 -0
- package/MIGRATING.md +187 -0
- package/README.md +52 -156
- package/RULES.md +125 -0
- package/bin/cometchat-skills.mjs +1280 -0
- package/bin/legacy-skills.json +95 -0
- package/catalogs/android-v6.json +1646 -0
- package/catalogs/flutter-v6.json +651 -0
- package/catalogs/ios-v5.json +1383 -0
- package/catalogs/rn-calls-v5.json +134 -0
- package/catalogs/rn-calls-v5.symbols.txt +58 -0
- package/catalogs/rn-sdk-v4.json +672 -0
- package/catalogs/rn-v5.json +449 -0
- package/catalogs/rn-v5.symbols.txt +216 -0
- package/catalogs/sdk-android-v5.json +514 -0
- package/contracts.android-calls-v5.json +122 -0
- package/contracts.android-v6.json +135 -0
- package/contracts.angular-v5.json +694 -0
- package/contracts.flutter-calls-v5.json +77 -0
- package/contracts.flutter-v6.json +126 -0
- package/contracts.ios-calls-v5.json +67 -0
- package/contracts.ios-v5.json +436 -0
- package/contracts.json +82 -0
- package/contracts.rn-calls-v5.json +77 -0
- package/contracts.rn-v5.json +727 -0
- package/contracts.sdk-android-v5.json +15 -0
- package/contracts.web-calls-v5.json +45 -0
- package/features.android-calls-v5.json +246 -0
- package/features.android-v6.json +65 -0
- package/features.angular-v5.json +521 -0
- package/features.flutter-calls-v5.json +286 -0
- package/features.flutter-v6.json +484 -0
- package/features.ios-calls-v5.json +236 -0
- package/features.ios-v5.json +573 -0
- package/features.json +61 -0
- package/features.rn-calls-v5.json +187 -0
- package/features.rn-v5.json +614 -0
- package/features.sdk-android-v5.json +40 -0
- package/features.sdk-jsv4.json +24 -0
- package/features.web-calls-v5.json +108 -0
- package/package.json +156 -74
- package/peers.yaml +355 -0
- package/registry/README.md +31 -0
- package/registry/android-calls-v5.json +94 -0
- package/registry/android-v6.json +177 -0
- package/registry/angular-v5.json +154 -0
- package/registry/flutter-calls-v5.json +94 -0
- package/registry/flutter-v6.json +159 -0
- package/registry/ios-calls-v5.json +99 -0
- package/registry/ios-v5.json +152 -0
- package/registry/rn-calls-v5.json +99 -0
- package/registry/rn-v5.json +169 -0
- package/registry/sdk-android-v5.json +93 -0
- package/registry/sdk-jsv4.json +93 -0
- package/registry/web-calls-v5.json +94 -0
- package/registry/web-v7.json +154 -0
- package/skills/cometchat/SKILL.md +47 -2096
- package/skills/cometchat-a11y/SKILL.md +44 -472
- package/skills/cometchat-analytics/SKILL.md +61 -0
- package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
- package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
- package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
- package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
- package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
- package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
- package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
- package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
- package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
- package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
- package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
- package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
- package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
- package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
- package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
- package/skills/cometchat-android-v6-core/SKILL.md +236 -672
- package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
- package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
- package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
- package/skills/cometchat-android-v6-core/references/layout.md +112 -0
- package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
- package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
- package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
- package/skills/cometchat-android-v6-events/SKILL.md +46 -184
- package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
- package/skills/cometchat-android-v6-features/SKILL.md +74 -143
- package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
- package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
- package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
- package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
- package/skills/cometchat-android-v6-production/SKILL.md +41 -179
- package/skills/cometchat-android-v6-push/SKILL.md +39 -289
- package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
- package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
- package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
- package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
- package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
- package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
- package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
- package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
- package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
- package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
- package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
- package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
- package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
- package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
- package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
- package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
- package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
- package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
- package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
- package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
- package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
- package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
- package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
- package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
- package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
- package/skills/cometchat-angular-v5-production/SKILL.md +102 -0
- package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
- package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
- package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
- package/skills/cometchat-audit/SKILL.md +61 -0
- package/skills/cometchat-compliance/SKILL.md +63 -0
- package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
- package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
- package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
- package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
- package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
- package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
- package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
- package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
- package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
- package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
- package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
- package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
- package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
- package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
- package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
- package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
- package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
- package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
- package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +132 -0
- package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
- package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
- package/skills/cometchat-flutter-v6-production/SKILL.md +59 -615
- package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
- package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
- package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
- package/skills/cometchat-i18n/SKILL.md +35 -404
- package/skills/cometchat-ios-calls/SKILL.md +112 -563
- package/skills/cometchat-ios-components/SKILL.md +44 -834
- package/skills/cometchat-ios-core/SKILL.md +182 -1068
- package/skills/cometchat-ios-core/references/anti-patterns.md +113 -0
- package/skills/cometchat-ios-core/references/docs-map.md +124 -0
- package/skills/cometchat-ios-core/references/install.md +23 -0
- package/skills/cometchat-ios-core/references/layout.md +219 -0
- package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
- package/skills/cometchat-ios-core/references/swiftui.md +91 -0
- package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
- package/skills/cometchat-ios-customization/SKILL.md +33 -968
- package/skills/cometchat-ios-features/SKILL.md +29 -738
- package/skills/cometchat-ios-migration/SKILL.md +39 -0
- package/skills/cometchat-ios-placement/SKILL.md +51 -729
- package/skills/cometchat-ios-production/SKILL.md +67 -723
- package/skills/cometchat-ios-push/SKILL.md +24 -602
- package/skills/cometchat-ios-testing/SKILL.md +36 -355
- package/skills/cometchat-ios-troubleshooting/SKILL.md +31 -989
- package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
- package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
- package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
- package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
- package/skills/cometchat-migrate-from-getstream/SKILL.md +65 -0
- package/skills/cometchat-migrate-from-getstream/references/concept-map.md +98 -0
- package/skills/cometchat-migrate-from-getstream/references/data-migration.md +74 -0
- package/skills/cometchat-migrate-from-getstream/references/feature-map.md +108 -0
- package/skills/cometchat-migrate-from-getstream/references/inventory.md +82 -0
- package/skills/cometchat-migrate-from-getstream/references/native-build.md +9 -0
- package/skills/cometchat-migrate-from-getstream/references/report-template.md +59 -0
- package/skills/cometchat-migrate-from-sendbird/SKILL.md +64 -0
- package/skills/cometchat-migrate-from-sendbird/references/concept-map.md +99 -0
- package/skills/cometchat-migrate-from-sendbird/references/data-migration.md +74 -0
- package/skills/cometchat-migrate-from-sendbird/references/feature-map.md +104 -0
- package/skills/cometchat-migrate-from-sendbird/references/inventory.md +86 -0
- package/skills/cometchat-migrate-from-sendbird/references/native-build.md +10 -0
- package/skills/cometchat-migrate-from-sendbird/references/report-template.md +59 -0
- package/skills/cometchat-migrate-from-twilio/SKILL.md +52 -0
- package/skills/cometchat-migrate-from-twilio/references/concept-map.md +49 -0
- package/skills/cometchat-migrate-from-twilio/references/data-migration.md +50 -0
- package/skills/cometchat-migrate-from-twilio/references/feature-map.md +27 -0
- package/skills/cometchat-migrate-from-twilio/references/inventory.md +53 -0
- package/skills/cometchat-migrate-from-twilio/references/report-template.md +52 -0
- package/skills/cometchat-moderation/SKILL.md +58 -0
- package/skills/cometchat-onboarding/SKILL.md +92 -0
- package/skills/cometchat-onboarding/references/archetypes.md +51 -0
- package/skills/cometchat-onboarding/references/calling-first.md +77 -0
- package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
- package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
- package/skills/cometchat-onboarding/references/platforms.md +105 -0
- package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
- package/skills/cometchat-react-native-calls/SKILL.md +200 -0
- package/skills/cometchat-react-native-components/SKILL.md +142 -0
- package/skills/cometchat-react-native-core/SKILL.md +335 -0
- package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
- package/skills/cometchat-react-native-core/references/component-props.md +105 -0
- package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
- package/skills/cometchat-react-native-core/references/docs-map.md +127 -0
- package/skills/cometchat-react-native-core/references/layout.md +61 -0
- package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
- package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
- package/skills/cometchat-react-native-customization/SKILL.md +198 -0
- package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
- package/skills/cometchat-react-native-features/SKILL.md +122 -0
- package/skills/cometchat-react-native-migration/SKILL.md +103 -0
- package/skills/cometchat-react-native-placement/SKILL.md +158 -0
- package/skills/cometchat-react-native-production/SKILL.md +79 -0
- package/skills/cometchat-react-native-push/SKILL.md +88 -0
- package/skills/cometchat-react-native-sdk/SKILL.md +133 -0
- package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
- package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
- package/skills/cometchat-react-native-testing/SKILL.md +94 -0
- package/skills/cometchat-react-native-troubleshooting/SKILL.md +174 -0
- package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
- package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
- package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
- package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
- package/skills/cometchat-react-v7-components/SKILL.md +72 -0
- package/skills/cometchat-react-v7-core/SKILL.md +101 -0
- package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
- package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
- package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
- package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
- package/skills/cometchat-react-v7-core/references/layout.md +150 -0
- package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
- package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
- package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
- package/skills/cometchat-react-v7-core/references/theming.md +52 -0
- package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
- package/skills/cometchat-react-v7-features/SKILL.md +92 -0
- package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
- package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
- package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
- package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
- package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
- package/skills/cometchat-react-v7-production/SKILL.md +84 -0
- package/skills/cometchat-react-v7-push/SKILL.md +53 -0
- package/skills/cometchat-react-v7-testing/SKILL.md +60 -0
- package/skills/cometchat-react-v7-troubleshooting/SKILL.md +47 -0
- package/skills/cometchat-security/SKILL.md +80 -0
- package/skills/cometchat-self-host/SKILL.md +56 -0
- package/test-suite/README.md +70 -0
- package/test-suite/catalogs/android-calls-v5.json +830 -0
- package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
- package/test-suite/catalogs/android-v6.json +1646 -0
- package/test-suite/catalogs/android-v6.symbols.txt +298 -0
- package/test-suite/catalogs/angular-v5.json +7587 -0
- package/test-suite/catalogs/flutter-calls-v5.json +196 -0
- package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
- package/test-suite/catalogs/flutter-v6.json +651 -0
- package/test-suite/catalogs/ios-calls-v5.json +158 -0
- package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
- package/test-suite/catalogs/ios-v5.json +1383 -0
- package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
- package/test-suite/catalogs/rn-calls-v5.json +134 -0
- package/test-suite/catalogs/rn-sdk-v4.json +672 -0
- package/test-suite/catalogs/rn-v5.json +449 -0
- package/test-suite/catalogs/sdk-android-v5.json +514 -0
- package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
- package/test-suite/catalogs/sdk-jsv4.json +800 -0
- package/test-suite/catalogs/web-calls-v5.json +195 -0
- package/test-suite/catalogs/web-v7.json +1243 -0
- package/test-suite/scripts/build-registry.mjs +113 -0
- package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
- package/test-suite/scripts/catalog-refresh.mjs +100 -0
- package/test-suite/scripts/lint-skills.mjs +932 -0
- package/test-suite/scripts/measure-tokens.mjs +169 -0
- package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
- package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
- package/test-suite/scripts/typecheck-fences.mjs +206 -0
- package/test-suite/scripts/verify-catalog.mjs +242 -0
- package/test-suite/scripts/verify-contract-fences.mjs +94 -0
- package/test-suite/scripts/verify-detection.mjs +178 -0
- package/test-suite/scripts/verify-docs-base.mjs +91 -0
- package/test-suite/scripts/verify-family-agnostic.mjs +134 -0
- package/test-suite/scripts/verify-golden-path.mjs +138 -0
- package/test-suite/scripts/verify-oracle-components.mjs +133 -0
- package/test-suite/scripts/verify-template-bindings.mjs +148 -0
- package/test-suite/typecheck/angular-v5/package.json +21 -0
- package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
- package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
- package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
- package/test-suite/typecheck/web-v7/package.json +18 -0
- package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
- package/bin/install.js +0 -1003
- package/skills/.claude-plugin/marketplace.json +0 -86
- package/skills/cometchat/references/asking-questions.md +0 -48
- package/skills/cometchat-android-v5/SKILL.md +0 -121
- package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
- package/skills/cometchat-android-v5-calls/references/README.md +0 -53
- package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
- package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
- package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
- package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
- package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
- package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
- package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
- package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
- package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
- package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
- package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
- package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
- package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
- package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
- package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
- package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
- package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
- package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
- package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
- package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
- package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
- package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
- package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
- package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
- package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
- package/skills/cometchat-android-v5-components/SKILL.md +0 -431
- package/skills/cometchat-android-v5-core/SKILL.md +0 -486
- package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
- package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
- package/skills/cometchat-android-v5-features/SKILL.md +0 -131
- package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
- package/skills/cometchat-android-v5-production/SKILL.md +0 -95
- package/skills/cometchat-android-v5-push/SKILL.md +0 -619
- package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
- package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
- package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
- package/skills/cometchat-android-v6/SKILL.md +0 -108
- package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
- package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
- package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
- package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
- package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
- package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
- package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
- package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
- package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
- package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
- package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
- package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
- package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
- package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
- package/skills/cometchat-angular-calls/SKILL.md +0 -380
- package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
- package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
- package/skills/cometchat-angular-calls/references/call-session.md +0 -167
- package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
- package/skills/cometchat-angular-calls/references/device-management.md +0 -154
- package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
- package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
- package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
- package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
- package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
- package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
- package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
- package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
- package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
- package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
- package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
- package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
- package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
- package/skills/cometchat-angular-components/SKILL.md +0 -235
- package/skills/cometchat-angular-core/SKILL.md +0 -386
- package/skills/cometchat-angular-customization/SKILL.md +0 -616
- package/skills/cometchat-angular-features/SKILL.md +0 -329
- package/skills/cometchat-angular-patterns/SKILL.md +0 -256
- package/skills/cometchat-angular-placement/SKILL.md +0 -314
- package/skills/cometchat-angular-production/SKILL.md +0 -564
- package/skills/cometchat-angular-push/SKILL.md +0 -389
- package/skills/cometchat-angular-testing/SKILL.md +0 -605
- package/skills/cometchat-angular-theming/SKILL.md +0 -290
- package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
- package/skills/cometchat-astro-patterns/SKILL.md +0 -708
- package/skills/cometchat-calls/SKILL.md +0 -364
- package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
- package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
- package/skills/cometchat-calls/references/use-case-support.md +0 -189
- package/skills/cometchat-calls/references/use-case-team.md +0 -180
- package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
- package/skills/cometchat-components/SKILL.md +0 -1142
- package/skills/cometchat-core/SKILL.md +0 -1048
- package/skills/cometchat-customization/SKILL.md +0 -580
- package/skills/cometchat-customization/references/component-catalog.md +0 -236
- package/skills/cometchat-features/SKILL.md +0 -861
- package/skills/cometchat-flutter-v5/SKILL.md +0 -173
- package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
- package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
- package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
- package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
- package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
- package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
- package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
- package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
- package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
- package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
- package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
- package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
- package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
- package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
- package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
- package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
- package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
- package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
- package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
- package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
- package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
- package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
- package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
- package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
- package/skills/cometchat-flutter-v6/SKILL.md +0 -446
- package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
- package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
- package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
- package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
- package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
- package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
- package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
- package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
- package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
- package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
- package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
- package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
- package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
- package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
- package/skills/cometchat-ios/SKILL.md +0 -325
- package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
- package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
- package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
- package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
- package/skills/cometchat-ios-calls/references/call-session.md +0 -218
- package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
- package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
- package/skills/cometchat-ios-calls/references/device-management.md +0 -171
- package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
- package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
- package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
- package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
- package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
- package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
- package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
- package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
- package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
- package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
- package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
- package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
- package/skills/cometchat-ios-theming/SKILL.md +0 -667
- package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
- package/skills/cometchat-native-calls/SKILL.md +0 -671
- package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
- package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
- package/skills/cometchat-native-calls/references/call-session.md +0 -182
- package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
- package/skills/cometchat-native-calls/references/device-management.md +0 -158
- package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
- package/skills/cometchat-native-calls/references/group-calls.md +0 -296
- package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
- package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
- package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
- package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
- package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
- package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
- package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
- package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
- package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
- package/skills/cometchat-native-calls/references/share-invite.md +0 -146
- package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
- package/skills/cometchat-native-components/SKILL.md +0 -628
- package/skills/cometchat-native-core/SKILL.md +0 -679
- package/skills/cometchat-native-customization/SKILL.md +0 -716
- package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
- package/skills/cometchat-native-features/SKILL.md +0 -638
- package/skills/cometchat-native-placement/SKILL.md +0 -509
- package/skills/cometchat-native-production/SKILL.md +0 -700
- package/skills/cometchat-native-push/SKILL.md +0 -594
- package/skills/cometchat-native-testing/SKILL.md +0 -582
- package/skills/cometchat-native-theming/SKILL.md +0 -681
- package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
- package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
- package/skills/cometchat-placement/SKILL.md +0 -1360
- package/skills/cometchat-production/SKILL.md +0 -1027
- package/skills/cometchat-react-calls/SKILL.md +0 -752
- package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
- package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
- package/skills/cometchat-react-calls/references/call-session.md +0 -235
- package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
- package/skills/cometchat-react-calls/references/device-management.md +0 -210
- package/skills/cometchat-react-calls/references/group-calls.md +0 -257
- package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
- package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
- package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
- package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
- package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
- package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
- package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
- package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
- package/skills/cometchat-react-calls/references/share-invite.md +0 -175
- package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
- package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
- package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
- package/skills/cometchat-react-patterns/SKILL.md +0 -628
- package/skills/cometchat-react-push/SKILL.md +0 -634
- package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
- package/skills/cometchat-react-testing/SKILL.md +0 -413
- package/skills/cometchat-theming/SKILL.md +0 -498
- package/skills/cometchat-troubleshooting/SKILL.md +0 -294
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Setup & credentials (iOS UI Kit v5)
|
|
2
|
+
|
|
3
|
+
> Verified against `CometChatUIKitSwift` 5.1.22 / `CometChatSDK` 4.1.7. Exact API always comes
|
|
4
|
+
> from the docs `.md` twin via `docs-map.md` — never from memory and never from `.swiftinterface`.
|
|
5
|
+
|
|
6
|
+
## 1. Detect before you add anything
|
|
7
|
+
|
|
8
|
+
Read the project, don't ask what you can see:
|
|
9
|
+
|
|
10
|
+
| Signal | Means |
|
|
11
|
+
|---|---|
|
|
12
|
+
| `Package.swift` / `*.xcodeproj` naming `CometChatUIKitSwift` | already integrated via SPM — REUSE, do not re-add |
|
|
13
|
+
| `Podfile` naming `CometChatUIKitSwift` | integrated via **CocoaPods** — see *version_conflict* below |
|
|
14
|
+
| `*.xcworkspace` present | CocoaPods project; open the workspace, never the `.xcodeproj` |
|
|
15
|
+
| none of the above | greenfield add |
|
|
16
|
+
|
|
17
|
+
## 2. Credentials — the full chain, including the two steps that make it work
|
|
18
|
+
|
|
19
|
+
The chain is `Secrets.xcconfig` → build settings → `Info.plist` → `Bundle.main`. Drawing the chain
|
|
20
|
+
is not enough: **an xcconfig that is not ATTACHED to the build configurations substitutes nothing**,
|
|
21
|
+
and `Info.plist` only exposes a value if the key is DECLARED there. Miss either and
|
|
22
|
+
`Bundle.main.infoDictionary` hands back the literal string `$(COMETCHAT_APP_ID)` — which is why the
|
|
23
|
+
guard in step 4 exists, and why omitting these steps drops you straight into the failure it detects.
|
|
24
|
+
|
|
25
|
+
### Step 0 — get the App ID / Region / Auth Key — OFFER to FETCH first, never default to "paste it yourself"
|
|
26
|
+
Before writing any file, you need three values: **App ID · Region · Auth Key** (Auth Key is dev-only).
|
|
27
|
+
**OFFER to fetch them from the CometChat Dashboard** — load the CLI on demand
|
|
28
|
+
(`@3` pins the CLI major that matches the v5 skills):
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npx @cometchat/skills-cli@3 auth login
|
|
32
|
+
npx @cometchat/skills-cli@3 provision use --app-id <id> --json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Ask which EXISTING app; never auto-create. **Already have App ID / Region / Auth Key? Just paste them** —
|
|
36
|
+
manual paste is the fallback, not the default. Mint **auth tokens server-side** for production; never
|
|
37
|
+
ship the Auth Key (§4). The CLI is a dashboard/API client only (`auth`/`provision`/`config`/`features`) —
|
|
38
|
+
it does NOT write env files or generate code; this skill does the wiring in Steps 1–5 below.
|
|
39
|
+
|
|
40
|
+
### Step 1 — write the file (gitignored)
|
|
41
|
+
|
|
42
|
+
`Config/Secrets.xcconfig`:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
COMETCHAT_APP_ID = 123456abcdef
|
|
46
|
+
COMETCHAT_REGION = us
|
|
47
|
+
COMETCHAT_AUTH_KEY = <dev only — see §4>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Add `Config/Secrets.xcconfig` to `.gitignore` **before** you put a real value in it.
|
|
51
|
+
|
|
52
|
+
> `//` starts a comment in an xcconfig, so any value containing it is silently truncated. Values
|
|
53
|
+
> here are plain identifiers, but keep it in mind if you ever add a URL.
|
|
54
|
+
|
|
55
|
+
### Step 2 — ATTACH it to the build configurations (the step everyone misses)
|
|
56
|
+
|
|
57
|
+
*Xcode:* select the **project** (not the target) → **Info** → **Configurations** → expand **Debug**
|
|
58
|
+
and **Release** → set the configuration file to `Secrets.xcconfig`.
|
|
59
|
+
|
|
60
|
+
*xcodegen* (`project.yml`), at the top level:
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
configFiles:
|
|
64
|
+
Debug: Config/Secrets.xcconfig
|
|
65
|
+
Release: Config/Secrets.xcconfig
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Without this the keys are not build settings at all and nothing substitutes them.
|
|
69
|
+
|
|
70
|
+
### Step 3 — DECLARE the keys in `Info.plist`
|
|
71
|
+
|
|
72
|
+
Build settings are not visible to your code on their own. Each one you want at runtime must be
|
|
73
|
+
declared as an `Info.plist` entry whose value is the `$(...)` reference.
|
|
74
|
+
|
|
75
|
+
> **First check whether the project HAS an `Info.plist`.** Since Xcode 13 the default is
|
|
76
|
+
> `GENERATE_INFOPLIST_FILE = YES` and there is no plist file in the project at all. You cannot add
|
|
77
|
+
> a CUSTOM key to a generated plist through build settings — measured on Xcode 16:
|
|
78
|
+
>
|
|
79
|
+
> | build setting | reaches the built `Info.plist`? |
|
|
80
|
+
> |---|---|
|
|
81
|
+
> | `INFOPLIST_KEY_NSCameraUsageDescription` (an Apple-defined key) | **yes** |
|
|
82
|
+
> | `INFOPLIST_KEY_COMETCHAT_APP_ID` (a custom key) | **no — silently dropped** |
|
|
83
|
+
>
|
|
84
|
+
> `INFOPLIST_KEY_*` only understands keys Apple defines. So on a generated-plist project, either
|
|
85
|
+
> add a real `Info.plist` and point `INFOPLIST_FILE` at it, or add the keys through the target's
|
|
86
|
+
> **Info** tab, which makes Xcode create one for you. The §3 usage descriptions below are Apple
|
|
87
|
+
> keys, so those CAN stay as `INFOPLIST_KEY_*` build settings — it is only the `COMETCHAT_*`
|
|
88
|
+
> credentials that need a real file.
|
|
89
|
+
|
|
90
|
+
```xml
|
|
91
|
+
<key>COMETCHAT_APP_ID</key>
|
|
92
|
+
<string>$(COMETCHAT_APP_ID)</string>
|
|
93
|
+
<key>COMETCHAT_REGION</key>
|
|
94
|
+
<string>$(COMETCHAT_REGION)</string>
|
|
95
|
+
<key>COMETCHAT_AUTH_KEY</key>
|
|
96
|
+
<string>$(COMETCHAT_AUTH_KEY)</string>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Step 4 — read it back, and fail loudly
|
|
100
|
+
|
|
101
|
+
An unsubstituted value arrives as the literal `$(COMETCHAT_APP_ID)`, not as `nil` — a
|
|
102
|
+
silent-wrong-value trap, so reject that form explicitly:
|
|
103
|
+
|
|
104
|
+
```swift
|
|
105
|
+
func credential(_ key: String) -> String? {
|
|
106
|
+
guard let v = Bundle.main.infoDictionary?[key] as? String,
|
|
107
|
+
!v.isEmpty, !v.hasPrefix("$(") else { return nil } // reject the un-substituted form
|
|
108
|
+
return v
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Step 5 — verify the substitution before blaming CometChat
|
|
113
|
+
|
|
114
|
+
Build, then print `Bundle.main.infoDictionary?["COMETCHAT_APP_ID"]`. A real App ID means the chain
|
|
115
|
+
works. The literal `$(COMETCHAT_APP_ID)` means step 2 or step 3 is missing — the credentials are
|
|
116
|
+
fine and the wiring is not. An init/login failure here is NOT a CometChat problem.
|
|
117
|
+
|
|
118
|
+
> For a shipping build, do not carry the Auth Key in the Release configuration at all — see §4.
|
|
119
|
+
|
|
120
|
+
## 3. `Info.plist` usage descriptions
|
|
121
|
+
|
|
122
|
+
The kit's media affordances call system pickers, and iOS terminates the app if the matching
|
|
123
|
+
usage string is absent. Add the ones your chosen features actually need:
|
|
124
|
+
|
|
125
|
+
| Key | Needed by |
|
|
126
|
+
|---|---|
|
|
127
|
+
| `NSCameraUsageDescription` | camera attachments, video calling |
|
|
128
|
+
| `NSMicrophoneUsageDescription` | voice notes, voice/video calling |
|
|
129
|
+
| `NSPhotoLibraryUsageDescription` | image/video attachments |
|
|
130
|
+
|
|
131
|
+
Write a real sentence for each ("Take photos to send in chat") — App Review rejects placeholders.
|
|
132
|
+
|
|
133
|
+
## 4. Auth Key vs auth token — the production rule
|
|
134
|
+
|
|
135
|
+
- **Auth Key** authenticates as ANY user. It is a development convenience only. Shipping it in
|
|
136
|
+
an app binary hands every account to anyone who unzips the IPA.
|
|
137
|
+
- **Production**: mint an auth token **server-side** and log in with it. The client never holds
|
|
138
|
+
the Auth Key.
|
|
139
|
+
|
|
140
|
+
`login(uid:)` does NOT create users. On a fresh app the docs' pre-created test users are
|
|
141
|
+
`cometchat-uid-1 … 5`; for any real app, ASK which UID to use rather than guessing.
|
|
142
|
+
|
|
143
|
+
## 5. version_conflict
|
|
144
|
+
|
|
145
|
+
CocoaPods distribution is winding down and its spec repo is going read-only, so **SPM is the
|
|
146
|
+
only supported integration path**. A `Podfile` is a DETECTION signal, never an instruction.
|
|
147
|
+
|
|
148
|
+
If the project already integrates via CocoaPods, STOP and surface the choice — do not silently
|
|
149
|
+
add SPM alongside it. Two package managers resolving the same binary xcframework is the
|
|
150
|
+
`version_conflict` case: state it, recommend migrating to SPM, and let the user decide.
|
|
151
|
+
|
|
152
|
+
The kit is a prebuilt binary compiled against ONE SDK version, and SPM does not resolve that
|
|
153
|
+
transitively — pin `CometChatSDK` to the exact version the kit requires, or you get link errors
|
|
154
|
+
that look like missing symbols.
|
|
155
|
+
|
|
156
|
+
## 6. `cometchat-settings.json` — telemetry attribution
|
|
157
|
+
|
|
158
|
+
Separate from the xcconfig chain above, and required for CometChat to attribute the integration
|
|
159
|
+
to the skills rather than to a hand-written one.
|
|
160
|
+
|
|
161
|
+
`CometChatUIKit.initFromSettings` takes **no parameters**. That is not a limitation — it reads a
|
|
162
|
+
JSON file from the app bundle. Create `cometchat-settings.json` and add it to the target's **Copy
|
|
163
|
+
Bundle Resources**:
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
{
|
|
167
|
+
"appId": "<your app id>",
|
|
168
|
+
"region": "<your region>",
|
|
169
|
+
"authKey": "<dev only — see §4>",
|
|
170
|
+
"presenceSubscription": { "type": "ALL_USERS" }
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Valid `presenceSubscription.type` values are `ALL_USERS`, `ROLES`, `FRIENDS`, `NONE` — the SDK
|
|
175
|
+
rejects anything else by name. **Gitignore this file**: it carries the Auth Key, exactly like
|
|
176
|
+
`Secrets.xcconfig`.
|
|
177
|
+
|
|
178
|
+
### Call it BEFORE the classic init, not instead of it
|
|
179
|
+
|
|
180
|
+
| init path | `integrationSource` | login / render |
|
|
181
|
+
|---|---|---|
|
|
182
|
+
| classic `CometChatUIKit(uiKitSettings:)` alone | *absent* — calls stamped **`"manual"`** | works |
|
|
183
|
+
| `initFromSettings` alone | `"ai-agent"` | **fails — `Err_101`** |
|
|
184
|
+
| `initFromSettings` **then** classic | `"ai-agent"` | works |
|
|
185
|
+
|
|
186
|
+
Measured on 5.1.19 with the app container wiped between runs. On this version
|
|
187
|
+
`initFromSettings` initialises the Chat SDK but leaves the UI Kit layer uninitialised, so using it
|
|
188
|
+
alone breaks login — a kit defect, and the reason the recipe runs both.
|
|
189
|
+
|
|
190
|
+
> Why this is worth the extra call: without it every app you build is attributed to
|
|
191
|
+
> `"manual"`. That is not merely missing attribution, it is **wrong** attribution.
|
|
192
|
+
|
|
193
|
+
> A note on verifying this API: `integrationSource` appears **nowhere** in the shipped
|
|
194
|
+
> `.swiftinterface`, and an earlier version of this pack concluded from that fact that attribution
|
|
195
|
+
> was impossible on iOS. That was wrong. The interface lists which SYMBOLS EXIST; it says nothing
|
|
196
|
+
> about runtime behaviour or where a function's inputs come from. Both facts here came from the
|
|
197
|
+
> shipped binaries and from measuring `UserDefaults`, not from the interface.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# SwiftUI, and where `init → login` actually goes
|
|
2
|
+
|
|
3
|
+
The kit is **UIKit-only**: every component is a `UIView`/`UIViewController`. It works in a SwiftUI
|
|
4
|
+
app, but nothing about that is automatic, and the golden path in `SKILL.md` shows the code without
|
|
5
|
+
saying where it lives. This file says where.
|
|
6
|
+
|
|
7
|
+
> Verified on 5.1.22 by building and running a SwiftUI app from scratch: login succeeded and
|
|
8
|
+
> `CometChatConversations` rendered with live data.
|
|
9
|
+
|
|
10
|
+
## Where init and login go
|
|
11
|
+
|
|
12
|
+
`init → login` must complete **before** any component renders, and it must run **once** for the
|
|
13
|
+
process — not per view. SwiftUI views are values and their bodies re-evaluate freely, so a `.task`
|
|
14
|
+
or `.onAppear` on a view is the wrong home for it.
|
|
15
|
+
|
|
16
|
+
| lifecycle | put `init → login` in |
|
|
17
|
+
|---|---|
|
|
18
|
+
| **UIKit** (`AppDelegate` + `SceneDelegate`) | `application(_:didFinishLaunchingWithOptions:)` |
|
|
19
|
+
| **SwiftUI** (`@main struct App`) | an `AppDelegate` attached with `@UIApplicationDelegateAdaptor` |
|
|
20
|
+
|
|
21
|
+
A stock Xcode project today has **no `AppDelegate` and no `SceneDelegate`** — it is a SwiftUI
|
|
22
|
+
`App`. Adding the adaptor is how you get a launch hook back.
|
|
23
|
+
|
|
24
|
+
```swift
|
|
25
|
+
final class AppDelegate: NSObject, UIApplicationDelegate {
|
|
26
|
+
func application(_ app: UIApplication,
|
|
27
|
+
didFinishLaunchingWithOptions opts: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
|
|
28
|
+
CometChatUIKit.initFromSettings { _, _ in // attribution — see setup-credentials §6
|
|
29
|
+
CometChatUIKit.init(uiKitSettings: settings) { result in
|
|
30
|
+
if case .success = result {
|
|
31
|
+
CometChatUIKit.login(uid: uid) { _ in
|
|
32
|
+
DispatchQueue.main.async { AppState.shared.ready = true }
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return true
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@main
|
|
42
|
+
struct MyApp: App {
|
|
43
|
+
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
|
|
44
|
+
@ObservedObject private var state = AppState.shared
|
|
45
|
+
var body: some Scene {
|
|
46
|
+
WindowGroup {
|
|
47
|
+
if state.ready { ChatScreen() } // render ONLY after login resolves
|
|
48
|
+
else { ProgressView() }
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`AppState` is any `ObservableObject` with a `ready` flag. Gating on it is not optional: rendering a
|
|
55
|
+
component before login resolves is the silent-failure case the ordering rule exists to prevent.
|
|
56
|
+
|
|
57
|
+
## Showing a UIKit component from SwiftUI
|
|
58
|
+
|
|
59
|
+
Wrap it in `UIViewControllerRepresentable`. Wrap it in a `UINavigationController` too — the kit
|
|
60
|
+
composes by navigation (list pushes the message pane), so without one the push has nowhere to go.
|
|
61
|
+
|
|
62
|
+
```swift
|
|
63
|
+
struct ConversationsView: UIViewControllerRepresentable {
|
|
64
|
+
func makeUIViewController(context: Context) -> UINavigationController {
|
|
65
|
+
let list = CometChatConversations()
|
|
66
|
+
// wire onItemClick here exactly as in the golden path
|
|
67
|
+
return UINavigationController(rootViewController: list)
|
|
68
|
+
}
|
|
69
|
+
func updateUIViewController(_ vc: UINavigationController, context: Context) {}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Qualify `CometChatSDK.User` / `CometChatSDK.Group` in any file that imports SwiftUI.** SwiftUI
|
|
74
|
+
declares its own `Group`, so a bare `as? Group` is `'Group' is ambiguous for type lookup` — a
|
|
75
|
+
guaranteed compile error in the wrapper file this page tells you to write. A live test hit exactly
|
|
76
|
+
that. Host apps also very often define their own `User` model, so qualify both:
|
|
77
|
+
|
|
78
|
+
```swift
|
|
79
|
+
vc.user = conversation.conversationWith as? CometChatSDK.User
|
|
80
|
+
vc.group = conversation.conversationWith as? CometChatSDK.Group
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The golden path in `SKILL.md` and the recipe in `layout.md` are already written this way; keep them
|
|
84
|
+
qualified rather than "tidying" the module prefix away.
|
|
85
|
+
|
|
86
|
+
`NavigationStack` does **not** substitute for this. The kit pushes with
|
|
87
|
+
`UINavigationController.pushViewController`, which a SwiftUI `NavigationStack` does not provide.
|
|
88
|
+
|
|
89
|
+
Rule 5 still applies inside that navigation controller — see `layout.md`. The coordinator goes on
|
|
90
|
+
the `UINavigationController` you create in `makeUIViewController`, and something must hold it: the
|
|
91
|
+
`delegate` is weak, and a coordinator created inline is deallocated immediately.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Troubleshooting — symptom → cause → fix
|
|
2
|
+
|
|
3
|
+
Every entry here is a RUNTIME failure that compiled cleanly. That is the character of this kit:
|
|
4
|
+
the compiler will not catch composition mistakes.
|
|
5
|
+
|
|
6
|
+
## Blank screen, nothing renders
|
|
7
|
+
|
|
8
|
+
**Cause:** `login()` ran before `init()` finished, or it failed and nothing surfaced the error.
|
|
9
|
+
`login()` called early fails SILENTLY.
|
|
10
|
+
|
|
11
|
+
**Fix:** nest them — never sequence with a timer. Render only after login succeeds:
|
|
12
|
+
|
|
13
|
+
```swift
|
|
14
|
+
CometChatUIKit.init(uiKitSettings: settings) { result in
|
|
15
|
+
switch result {
|
|
16
|
+
case .success:
|
|
17
|
+
CometChatUIKit.login(uid: uid) { loginResult in
|
|
18
|
+
switch loginResult {
|
|
19
|
+
case .success: DispatchQueue.main.async { mountChat() }
|
|
20
|
+
case .onError(let e): print("login failed:", e.errorDescription)
|
|
21
|
+
@unknown default: break
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
case .failure(let e): print("init failed:", e.localizedDescription)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Also check credentials actually resolved — an unsubstituted xcconfig value arrives as the
|
|
30
|
+
literal `$(COMETCHAT_APP_ID)`, not nil (see `setup-credentials.md`).
|
|
31
|
+
|
|
32
|
+
## The list renders but tapping a row does nothing
|
|
33
|
+
|
|
34
|
+
**Cause:** `set(onItemClick:)` was never wired. The rows are real; the destination is not.
|
|
35
|
+
|
|
36
|
+
**Fix:** push the message screen from the click handler, taking exactly one of user/group —
|
|
37
|
+
see `layout.md`.
|
|
38
|
+
|
|
39
|
+
## Tapping the composer makes the conversation disappear
|
|
40
|
+
|
|
41
|
+
**Cause:** the composer is pinned to `view.keyboardLayoutGuide.topAnchor`. The kit's composer
|
|
42
|
+
already adjusts for the keyboard, so this double-applies it — the message list collapses to height
|
|
43
|
+
0 and the composer's own text field goes with it, leaving only the attachment/mic/send icons
|
|
44
|
+
jammed under the header.
|
|
45
|
+
|
|
46
|
+
**Fix:** pin the composer to `view.safeAreaLayoutGuide.bottomAnchor`, as the published recipe
|
|
47
|
+
shows. The kit handles the keyboard from there.
|
|
48
|
+
|
|
49
|
+
## Two navigation bars stacked on the message screen
|
|
50
|
+
|
|
51
|
+
**Cause:** `CometChatMessageHeader` carries its own title and back control, and the
|
|
52
|
+
`UINavigationController` bar is still visible above it.
|
|
53
|
+
|
|
54
|
+
**Fix:** hide the nav bar on the message screen in `viewDidLoad`, restore it in
|
|
55
|
+
`viewWillDisappear`. Do not hide it globally.
|
|
56
|
+
|
|
57
|
+
## The message pane is a thin strip / everything is squashed at the top
|
|
58
|
+
|
|
59
|
+
**Cause:** the list is not pinned both top AND bottom, so it sizes to its intrinsic content
|
|
60
|
+
instead of filling the space between header and composer.
|
|
61
|
+
|
|
62
|
+
**Fix:** add both constraints (Rule 4 in `layout.md`). Verify by opening a conversation, not by
|
|
63
|
+
looking at the list screen — the collapse is only visible on the pushed screen.
|
|
64
|
+
|
|
65
|
+
## An empty list that might be an error
|
|
66
|
+
|
|
67
|
+
**Cause:** no `set(onError:)`, so a failed fetch looks exactly like an empty account.
|
|
68
|
+
|
|
69
|
+
**Fix:** wire `set(onError:)` on every list component and surface the failure.
|
|
70
|
+
|
|
71
|
+
## Replies render but never send
|
|
72
|
+
|
|
73
|
+
**Cause:** the thread's parent was set through two different APIs — see `anti-patterns.md` §4.
|
|
74
|
+
|
|
75
|
+
**Fix:** set the parent one way, per the docs for that component, then actually send a reply to
|
|
76
|
+
confirm.
|
|
77
|
+
|
|
78
|
+
## Link errors / missing symbols after adding the package
|
|
79
|
+
|
|
80
|
+
**Cause:** `CometChatSDK` is not pinned to the exact version the binary kit was compiled
|
|
81
|
+
against, or (on 5.1.19) `CometChatCallsSDK` is absent — the shipped interface hard-imports it,
|
|
82
|
+
so even a chat-only app fails to compile without it.
|
|
83
|
+
|
|
84
|
+
**Fix:** pin both exactly. See `anti-patterns.md` §5.
|
|
85
|
+
|
|
86
|
+
## The group-members screen cannot be dismissed
|
|
87
|
+
|
|
88
|
+
**Symptom:** you push `CometChatGroupMembers`, it renders correctly, and then there is no way back
|
|
89
|
+
— the kit's Cancel control does nothing, a wired `set(onBack:)` never fires, and edge-swipe back is
|
|
90
|
+
inert.
|
|
91
|
+
|
|
92
|
+
**Status: reported and NOT reproduced by us.** An acceptance pass measured it (Cancel
|
|
93
|
+
`action=didTapBackButton` inert across 3 taps, `set(onBack:)` instrumented and never called); an
|
|
94
|
+
attempt to reproduce it in the review harness did not get far enough to confirm or refute. So there
|
|
95
|
+
is no verified fix here, and none is invented: we do not know whether the fault is the recipe or
|
|
96
|
+
the kit.
|
|
97
|
+
|
|
98
|
+
**What to do:** treat "can the user leave this screen?" as a test you run, not a property you
|
|
99
|
+
assume. If you hit it, give yourself a dismissal path you control — your own bar button, or
|
|
100
|
+
presenting rather than pushing — and please report the exact flow so this can be pinned down.
|