@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,224 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cometchat-flutter-v6-users-groups
|
|
3
|
-
description: >
|
|
4
|
-
Use when implementing user lists, group lists, or group member management with
|
|
5
|
-
CometChat Flutter UIKit v6. Triggers on mentions of CometChatUsers, CometChatGroups,
|
|
6
|
-
CometChatGroupMembers, UsersBloc, GroupsBloc, UsersServiceLocator, GroupsServiceLocator,
|
|
7
|
-
user list, group list, contacts, members, group info, add members, ban members,
|
|
8
|
-
transfer ownership, change scope, UsersRequestBuilder, GroupsRequestBuilder,
|
|
9
|
-
GroupMembersRequestBuilder, or customizing user/group list items.
|
|
10
|
-
license: "MIT"
|
|
11
|
-
compatibility: "cometchat_chat_uikit ^6.0.0; flutter_bloc ^8.1.0"
|
|
12
|
-
metadata:
|
|
13
|
-
author: "CometChat"
|
|
14
|
-
version: "3.0.0"
|
|
15
|
-
tags: "cometchat flutter users groups members contacts"
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
> **Ground truth:** `cometchat_chat_uikit: ^6.0` — pub-cache source + `ui-kit/flutter`. **Official docs:** https://www.cometchat.com/docs/ui-kit/flutter/overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
|
|
19
|
-
|
|
20
|
-
# CometChat Flutter UIKit — Users & Groups
|
|
21
|
-
|
|
22
|
-
Components for displaying and managing users, groups, and group members.
|
|
23
|
-
|
|
24
|
-
## CometChatUsers
|
|
25
|
-
|
|
26
|
-
Displays a searchable, alphabetically-sorted list of users.
|
|
27
|
-
|
|
28
|
-
```dart
|
|
29
|
-
// MessagesScreen below is a user-defined wrapper around CometChatMessageHeader +
|
|
30
|
-
// CometChatMessageList + CometChatMessageComposer (no CometChatMessages exists in v6) —
|
|
31
|
-
// see the cometchat-flutter-v6-messages skill for the canonical pattern.
|
|
32
|
-
CometChatUsers(
|
|
33
|
-
onItemTap: (context, user) {
|
|
34
|
-
Navigator.push(context, MaterialPageRoute(
|
|
35
|
-
builder: (_) => MessagesScreen(user: user),
|
|
36
|
-
));
|
|
37
|
-
},
|
|
38
|
-
usersStyle: CometChatUsersStyle(
|
|
39
|
-
backgroundColor: colorPalette.background1,
|
|
40
|
-
),
|
|
41
|
-
usersStatusVisibility: true,
|
|
42
|
-
showBackButton: true,
|
|
43
|
-
onBack: () => Navigator.pop(context),
|
|
44
|
-
)
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### Custom Request Builder
|
|
48
|
-
|
|
49
|
-
```dart
|
|
50
|
-
CometChatUsers(
|
|
51
|
-
usersRequestBuilder: UsersRequestBuilder()
|
|
52
|
-
..limit = 30
|
|
53
|
-
..friendsOnly = true
|
|
54
|
-
..roles = ['default']
|
|
55
|
-
..searchKeyword = 'john',
|
|
56
|
-
)
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### View Slots
|
|
60
|
-
|
|
61
|
-
```dart
|
|
62
|
-
CometChatUsers(
|
|
63
|
-
listItemView: (user) => MyCustomUserItem(user),
|
|
64
|
-
subtitleView: (context, user) => Text(user.status ?? 'offline'),
|
|
65
|
-
trailingView: (context, user) => Icon(Icons.chat),
|
|
66
|
-
)
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## CometChatGroups
|
|
70
|
-
|
|
71
|
-
Displays a searchable list of groups with type indicators (public/private/password).
|
|
72
|
-
|
|
73
|
-
```dart
|
|
74
|
-
CometChatGroups(
|
|
75
|
-
onItemTap: (context, group) {
|
|
76
|
-
Navigator.push(context, MaterialPageRoute(
|
|
77
|
-
builder: (_) => MessagesScreen(group: group),
|
|
78
|
-
));
|
|
79
|
-
},
|
|
80
|
-
groupsStyle: CometChatGroupsStyle(
|
|
81
|
-
backgroundColor: colorPalette.background1,
|
|
82
|
-
),
|
|
83
|
-
groupTypeVisibility: true,
|
|
84
|
-
)
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Custom Request Builder
|
|
88
|
-
|
|
89
|
-
```dart
|
|
90
|
-
CometChatGroups(
|
|
91
|
-
groupsRequestBuilder: GroupsRequestBuilder()
|
|
92
|
-
..limit = 30
|
|
93
|
-
..joinedOnly = true
|
|
94
|
-
..searchKeyword = 'team'
|
|
95
|
-
..withTags = true
|
|
96
|
-
..tags = ['project'],
|
|
97
|
-
)
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## CometChatGroupMembers
|
|
101
|
-
|
|
102
|
-
Displays members of a specific group with role indicators and management actions.
|
|
103
|
-
|
|
104
|
-
```dart
|
|
105
|
-
CometChatGroupMembers(
|
|
106
|
-
group: group,
|
|
107
|
-
// ⚠️ Note: this prop is `style` (NOT `groupMembersStyle`) — the only
|
|
108
|
-
// V6 list component that breaks the {component}Style naming convention.
|
|
109
|
-
style: CometChatGroupMembersStyle(
|
|
110
|
-
backgroundColor: colorPalette.background1,
|
|
111
|
-
),
|
|
112
|
-
)
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Group Member Actions
|
|
116
|
-
|
|
117
|
-
The component supports scope changes, kick, and ban based on the logged-in user's role:
|
|
118
|
-
|
|
119
|
-
| Logged-in Role | Can Change Scope | Can Kick | Can Ban |
|
|
120
|
-
|----------------|-----------------|----------|---------|
|
|
121
|
-
| Owner | ✅ All members | ✅ All | ✅ All |
|
|
122
|
-
| Admin | ✅ Participants only | ✅ Participants | ✅ Participants |
|
|
123
|
-
| Participant | ❌ | ❌ | ❌ |
|
|
124
|
-
|
|
125
|
-
## Architecture (All Three)
|
|
126
|
-
|
|
127
|
-
All follow the same Clean Architecture + BLoC pattern:
|
|
128
|
-
|
|
129
|
-
```
|
|
130
|
-
{component}/
|
|
131
|
-
├── bloc/{component}_bloc.dart # State management + SDK listeners
|
|
132
|
-
├── domain/usecases/ # Get{Component}sUseCase, etc.
|
|
133
|
-
├── data/repositories/ # SDK wrapper
|
|
134
|
-
├── di/{component}_service_locator.dart # Singleton DI
|
|
135
|
-
└── widgets/ # List item, empty/error/loading views
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
## BLoC State Pattern
|
|
139
|
-
|
|
140
|
-
All three use the same state pattern:
|
|
141
|
-
|
|
142
|
-
```dart
|
|
143
|
-
// Status-based states
|
|
144
|
-
{Component}Initial → {Component}Loading → {Component}Loaded / {Component}Empty / {Component}Error
|
|
145
|
-
|
|
146
|
-
// Loaded state has:
|
|
147
|
-
final List<{Entity}> items;
|
|
148
|
-
final bool hasMore;
|
|
149
|
-
final Set<String> selectedItems; // For selection mode
|
|
150
|
-
final bool isLoadingMore;
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
## Selection Mode
|
|
154
|
-
|
|
155
|
-
All list components support selection:
|
|
156
|
-
|
|
157
|
-
```dart
|
|
158
|
-
CometChatUsers(
|
|
159
|
-
selectionMode: SelectionMode.multiple,
|
|
160
|
-
// ⚠️ CometChatUsers.onSelection passes TWO args (List<User>?, BuildContext).
|
|
161
|
-
// CometChatGroups.onSelection passes ONE (List<Group>?). The signatures differ.
|
|
162
|
-
onSelection: (selectedUsers, context) {
|
|
163
|
-
// Handle selected users
|
|
164
|
-
},
|
|
165
|
-
activateSelection: ActivateSelection.onLongClick,
|
|
166
|
-
)
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
## Gotchas
|
|
170
|
-
|
|
171
|
-
- `CometChatGroupMembers` has been fully migrated to BLoC + Clean Architecture (bloc/, data/, di/, domain/, widgets/). A `GroupMembersBlocAdapter` wraps the BLoC to implement the legacy `CometChatGroupMembersControllerProtocol` for backward compatibility. The old `cometchat_group_members_controller.dart` file still exists but the BLoC is the active implementation.
|
|
172
|
-
- Group type icons (lock for private, shield for password) are controlled by `groupTypeVisibility`. Setting it to `false` hides all type indicators.
|
|
173
|
-
- `friendsOnly: true` on `UsersRequestBuilder` only works if your CometChat plan supports the friends feature.
|
|
174
|
-
- When a user is blocked, they still appear in `CometChatUsers` unless you set `includeBlockedUsers: false` on the conversations BLoC or filter in the request builder.
|
|
175
|
-
|
|
176
|
-
## Anti-Patterns
|
|
177
|
-
|
|
178
|
-
```dart
|
|
179
|
-
// ❌ WRONG — not handling group join for password-protected groups
|
|
180
|
-
onItemTap: (context, group) => Navigator.push(context, MaterialPageRoute(
|
|
181
|
-
builder: (_) => MessagesScreen(group: group), // Fails if not joined
|
|
182
|
-
))
|
|
183
|
-
|
|
184
|
-
// ✅ CORRECT — check membership, handle password groups
|
|
185
|
-
onItemTap: (context, group) {
|
|
186
|
-
if (group.hasJoined) {
|
|
187
|
-
Navigator.push(context, MaterialPageRoute(
|
|
188
|
-
builder: (_) => MessagesScreen(group: group),
|
|
189
|
-
));
|
|
190
|
-
} else if (group.type == GroupTypeConstants.password) {
|
|
191
|
-
Navigator.push(context, MaterialPageRoute(
|
|
192
|
-
builder: (_) => JoinProtectedGroupScreen(group: group),
|
|
193
|
-
));
|
|
194
|
-
} else {
|
|
195
|
-
// Join public group first, then navigate
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
```dart
|
|
201
|
-
// ❌ WRONG — hardcoded role check strings
|
|
202
|
-
if (member.scope == 'admin') { ... }
|
|
203
|
-
|
|
204
|
-
// ✅ CORRECT — use SDK constants
|
|
205
|
-
if (member.scope == GroupMemberScope.admin) { ... }
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
```dart
|
|
209
|
-
// ❌ WRONG — creating ServiceLocator per widget instance
|
|
210
|
-
final locator = GroupsServiceLocator(); // New instance each time
|
|
211
|
-
|
|
212
|
-
// ✅ CORRECT — use singleton
|
|
213
|
-
final locator = GroupsServiceLocator.instance;
|
|
214
|
-
locator.setup();
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
## Checklist
|
|
218
|
-
|
|
219
|
-
- [ ] `onItemTap` handles group join state (joined vs password vs public)
|
|
220
|
-
- [ ] Group member actions respect role hierarchy
|
|
221
|
-
- [ ] Selection mode configured if multi-select needed
|
|
222
|
-
- [ ] Request builder customized for app's user/group filtering needs
|
|
223
|
-
- [ ] ServiceLocator accessed via `.instance` singleton
|
|
224
|
-
- [ ] Colors from `CometChatThemeHelper`, not hardcoded
|
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cometchat-i18n
|
|
3
|
-
description: Localization (i18n) across all CometChat UI Kit families — React, React Native, Angular, Android (V5/V6), iOS, Flutter (V5/V6). Covers CometChatLocalize.init signature differences (positional vs object), bundled languages, custom-language registration, RTL support, fallback to English, and cross-family drift risks. Cross-family — applies wherever the agent is configuring CometChat localization.
|
|
4
|
-
license: "MIT"
|
|
5
|
-
compatibility: "All CometChat UI Kit families v4.x / v5.x / v6.x"
|
|
6
|
-
metadata:
|
|
7
|
-
author: "CometChat"
|
|
8
|
-
version: "4.0.0"
|
|
9
|
-
tags: "cometchat i18n localization l10n cometchatlocalize languages rtl arabic hebrew bundled-languages custom-language fallback cross-family"
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
> **Ground truth:** the UI Kit `CometChatLocalize` API + `docs/fundamentals`. **Official docs:** https://www.cometchat.com/docs/fundamentals/overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
|
|
13
|
-
|
|
14
|
-
## Purpose
|
|
15
|
-
|
|
16
|
-
Localize the CometChat UI Kit to the user's language. Every kit ships with English + ~15 bundled languages (Arabic, Bengali, Chinese, German, Spanish, French, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Portuguese, Russian, Swedish, Turkish — exact set varies by kit version). Custom languages can be added at runtime.
|
|
17
|
-
|
|
18
|
-
The biggest gotcha: **the localization API differs across kits.** Web + Angular v5 use `CometChatLocalize.init({ ... })` (object); **React Native v5 uses a `<CometChatI18nProvider>` component + `useCometChatTranslation` hook (no `CometChatLocalize.init`)**; **Android uses `CometChatLocalize.setLocale(context, "es")`** (Context + code String); **iOS uses `CometChatLocalize.set(locale: "es")`**; **Flutter has no `CometChatLocalize` class at all — register the kit's `Translations` localization delegate.** (Angular's positional `init("es")` was a v4-only form — v5 moved to the object signature, matching React.) This skill is the canonical reference.
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## API surface per family
|
|
23
|
-
|
|
24
|
-
### React (v6) — object signature
|
|
25
|
-
|
|
26
|
-
```ts
|
|
27
|
-
import { CometChatLocalize } from "@cometchat/chat-uikit-react";
|
|
28
|
-
|
|
29
|
-
CometChatLocalize.init({
|
|
30
|
-
language: "es",
|
|
31
|
-
fallbackLanguage: "en",
|
|
32
|
-
});
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Object literal. `init({ ... })`.
|
|
36
|
-
|
|
37
|
-
### React Native (v5) — `CometChatI18nProvider` (NOT `CometChatLocalize.init`)
|
|
38
|
-
|
|
39
|
-
The RN v5 kit does **not** export a `CometChatLocalize` class with `.init(...)` (that was the v4 RN API). v5 localizes through a **provider component** + a hook. Wrap your app (inside `CometChatThemeProvider`) and read strings with `useCometChatTranslation`:
|
|
40
|
-
|
|
41
|
-
```tsx
|
|
42
|
-
import {
|
|
43
|
-
CometChatThemeProvider,
|
|
44
|
-
CometChatI18nProvider,
|
|
45
|
-
} from "@cometchat/chat-uikit-react-native";
|
|
46
|
-
|
|
47
|
-
const App = () => (
|
|
48
|
-
<CometChatThemeProvider theme={{ mode: "light" }}>
|
|
49
|
-
{/* autoDetectLanguage reads the device locale; or pin one with selectedLanguage="es" */}
|
|
50
|
-
<CometChatI18nProvider autoDetectLanguage={true} fallbackLanguage="en">
|
|
51
|
-
{/* your screens / kit components */}
|
|
52
|
-
</CometChatI18nProvider>
|
|
53
|
-
</CometChatThemeProvider>
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
// In a component:
|
|
57
|
-
import { useCometChatTranslation } from "@cometchat/chat-uikit-react-native";
|
|
58
|
-
const { t } = useCometChatTranslation();
|
|
59
|
-
// t("CHATS")
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
`CometChatI18nProviderProps`: `selectedLanguage?`, `autoDetectLanguage?: boolean`, `fallbackLanguage?`, `translations?: { [code]: {...} }` (verified vs `shared/resources/CometChatLocalizeNew/CometChatI18nProvider.tsx`). For imperative switching there's `setGlobalLanguage(language, translations?, fallback?)`.
|
|
63
|
-
|
|
64
|
-
### Angular (v5) — OBJECT signature
|
|
65
|
-
|
|
66
|
-
```ts
|
|
67
|
-
import { CometChatLocalize } from "@cometchat/chat-uikit-angular";
|
|
68
|
-
|
|
69
|
-
CometChatLocalize.init({ language: "es" });
|
|
70
|
-
// with more options:
|
|
71
|
-
CometChatLocalize.init({
|
|
72
|
-
language: "es",
|
|
73
|
-
fallbackLanguage: "en-US",
|
|
74
|
-
timezone: "Europe/Madrid",
|
|
75
|
-
});
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
**Object literal, not positional** — in v5 (`@cometchat/chat-uikit-angular@5`), `init(settings: LocalizationSettings)` takes an object, the same shape as React. (Verified in `projects/cometchat-uikit/src/lib/resources/CometChatLocalize/cometchat-localize.ts` — `static init(settings: LocalizationSettings)`.) The old positional `init("es")` form was the **v4** Angular API and no longer applies. Switch language at runtime with `CometChatLocalize.setCurrentLanguage("fr")`, read keys with `getLocalizedString(key)`, and add custom strings with `addTranslation({ ... })`.
|
|
79
|
-
|
|
80
|
-
### Android V5 — Java/Kotlin static method
|
|
81
|
-
|
|
82
|
-
```kotlin
|
|
83
|
-
// Kotlin — takes (Context, language-code String). Language.* are String constants.
|
|
84
|
-
CometChatLocalize.setLocale(context, Language.SPANISH) // or "es"
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
```java
|
|
88
|
-
// Java
|
|
89
|
-
CometChatLocalize.setLocale(context, Language.SPANISH); // or "es"
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
`setLocale`, not `init`. **Signature is `setLocale(Context, @Language.Code String)`** — a Context plus a two-letter language-code String (NOT a `java.util.Locale`). `Language` exposes `ENGLISH="en"`, `SPANISH="es"`, `FRENCH="fr"`, `GERMAN="de"`, … (verified vs `chatuikit/.../localise/CometChatLocalize.java` + `Language.kt`).
|
|
93
|
-
|
|
94
|
-
### Android V6 (stable) — same as V5
|
|
95
|
-
|
|
96
|
-
V6 keeps the same API: `CometChatLocalize.setLocale(context, "es")` (verified vs `chatuikit-kotlin/.../localise/CometChatLocalize.kt:22` — `fun setLocale(context: Context, language: String)`). No drift between V5 and V6.
|
|
97
|
-
|
|
98
|
-
### iOS V5
|
|
99
|
-
|
|
100
|
-
```swift
|
|
101
|
-
import CometChatUIKitSwift
|
|
102
|
-
|
|
103
|
-
CometChatLocalize.set(locale: "es") // or set(locale: Language.spanish)
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
The method is **`set(locale:)`**, not `setLocale(...)`. It takes a String (or a `Language`) — `public class func set(locale: String)` / `set(locale: Language)` (verified vs `Components/Shared/Helpers/CometChatLocalize/CometChatLocalize.swift:78,82`). There is no `setStringResources` — override individual strings via your app's `Localizable.strings`.
|
|
107
|
-
|
|
108
|
-
### Flutter V5 + V6 — there is NO `CometChatLocalize.init(...)`
|
|
109
|
-
|
|
110
|
-
> **Verified against the kit source + docs (`ui-kits/cometchat-uikit-flutter-v6`, `documentation/docs/ui-kit/flutter/localize.mdx`): Flutter does NOT expose a `CometChatLocalize` class.** Localization is wired the idiomatic Flutter way — register the kit's `Translations` localization delegate on your `MaterialApp` and drive the language through the app's `Locale`. Earlier drafts of this skill showed `CometChatLocalize.init(language: 'es')`; that symbol does not exist in the Flutter UI Kit (V5 or V6) — do not emit it.
|
|
111
|
-
|
|
112
|
-
```dart
|
|
113
|
-
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart' as cc; // V6
|
|
114
|
-
// V5: import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart' as cc; (5.2.x)
|
|
115
|
-
|
|
116
|
-
MaterialApp(
|
|
117
|
-
// Language follows the app Locale. Set `locale:` to force one, or omit to
|
|
118
|
-
// follow the device + supportedLocales.
|
|
119
|
-
locale: const Locale('es'),
|
|
120
|
-
supportedLocales: const [
|
|
121
|
-
Locale('en'), Locale('ar'), Locale('de'), Locale('es'), Locale('fr'),
|
|
122
|
-
Locale('hi'), Locale('ja'), Locale('ko'), Locale('pt'), Locale('ru'),
|
|
123
|
-
Locale('zh'), // …19 supported total — see the docs list
|
|
124
|
-
],
|
|
125
|
-
localizationsDelegates: const [
|
|
126
|
-
cc.Translations.delegate, // ← the CometChat UI Kit strings
|
|
127
|
-
GlobalMaterialLocalizations.delegate,
|
|
128
|
-
GlobalWidgetsLocalizations.delegate,
|
|
129
|
-
GlobalCupertinoLocalizations.delegate,
|
|
130
|
-
],
|
|
131
|
-
home: const YourHomeScreen(),
|
|
132
|
-
);
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
Read a translated string with `cc.Translations.of(context).users`. Add a custom
|
|
136
|
-
language or override one by subclassing `cc.Translations` and registering your
|
|
137
|
-
own `LocalizationsDelegate` *before* `cc.Translations.delegate` in the list
|
|
138
|
-
(full recipe in `documentation/docs/ui-kit/flutter/localize.mdx`).
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## Cross-family signature summary
|
|
143
|
-
|
|
144
|
-
| Family | Init call | Notes |
|
|
145
|
-
|---|---|---|
|
|
146
|
-
| React (v6) | `CometChatLocalize.init({ language, fallbackLanguage })` | Object |
|
|
147
|
-
| React Native (v5) | `<CometChatI18nProvider autoDetectLanguage selectedLanguage="es" fallbackLanguage="en">` + `useCometChatTranslation()` | **Provider component, NOT `CometChatLocalize.init`** |
|
|
148
|
-
| Angular (v5) | `CometChatLocalize.init({ language, fallbackLanguage })` | Object (same shape as React) |
|
|
149
|
-
| Android (V5/V6) | `CometChatLocalize.setLocale(context, "es")` | Method `setLocale(Context, String code)` — NOT a `Locale` |
|
|
150
|
-
| iOS (V5) | `CometChatLocalize.set(locale: "es")` | Method `set(locale:)` (String or `Language`) — NOT `setLocale` |
|
|
151
|
-
| Flutter (V5/V6) | `MaterialApp(localizationsDelegates: [cc.Translations.delegate, …], supportedLocales: […], locale: Locale('es'))` | **No `CometChatLocalize`** — register the kit's `Translations` delegate + drive via `Locale`; read with `Translations.of(context)` |
|
|
152
|
-
|
|
153
|
-
The agent must consult this table before writing any localization code. **Verify against the installed package's type definitions** if uncertain — the localization surface genuinely differs per family (e.g. React Native moved from a `CometChatLocalize` class to the `<CometChatI18nProvider>` component; Flutter never had a `CometChatLocalize` class).
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## When to call init/setLocale
|
|
158
|
-
|
|
159
|
-
After CometChat init is configured but before mounting any kit components:
|
|
160
|
-
|
|
161
|
-
```ts
|
|
162
|
-
// React example — in your provider
|
|
163
|
-
useEffect(() => {
|
|
164
|
-
CometChatUIKit.init(settings)?.then(() => {
|
|
165
|
-
CometChatLocalize.init({ language: getUserLocale(), fallbackLanguage: "en" });
|
|
166
|
-
// Now mount kit components
|
|
167
|
-
});
|
|
168
|
-
}, []);
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
```kotlin
|
|
172
|
-
// Android — in Application.onCreate. setLocale takes (Context, code String).
|
|
173
|
-
override fun onCreate() {
|
|
174
|
-
super.onCreate()
|
|
175
|
-
val settings = UIKitSettings.UIKitSettingsBuilder()/* ... */.build()
|
|
176
|
-
CometChatUIKit.init(this, settings, object : CometChat.CallbackListener<String>() {
|
|
177
|
-
override fun onSuccess(p: String) {
|
|
178
|
-
CometChatLocalize.setLocale(this@MyApp, getUserLocale()) // e.g. "es"
|
|
179
|
-
}
|
|
180
|
-
override fun onError(e: CometChatException) {}
|
|
181
|
-
})
|
|
182
|
-
}
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
```swift
|
|
186
|
-
// iOS — in App.init or AppDelegate. The method is set(locale:), takes a String.
|
|
187
|
-
CometChat.init(appId: ...) { _, error in
|
|
188
|
-
guard error == nil else { return }
|
|
189
|
-
let code = Locale.preferredLanguages.first?.split(separator: "-").first.map(String.init) ?? "en"
|
|
190
|
-
CometChatLocalize.set(locale: code)
|
|
191
|
-
}
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
Setting locale before init is harmless but the kit doesn't pick up the locale until init completes; some components read the locale at first render. Doing both in sequence is safest.
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## Custom languages / overriding strings
|
|
199
|
-
|
|
200
|
-
Each kit lets you register a custom language or override individual strings.
|
|
201
|
-
|
|
202
|
-
### React / React Native (v6)
|
|
203
|
-
|
|
204
|
-
```ts
|
|
205
|
-
CometChatLocalize.init({
|
|
206
|
-
language: "es",
|
|
207
|
-
fallbackLanguage: "en",
|
|
208
|
-
// FLAT key->value map for the ACTIVE language (NOT a nested `resources: { es: {...} }`
|
|
209
|
-
// object — LocalizationSettings has no `resources` field; it's silently ignored).
|
|
210
|
-
translationsForLanguage: {
|
|
211
|
-
"Chat": "Charla",
|
|
212
|
-
"Messages": "Mensajes",
|
|
213
|
-
// ... override only the strings you want, for the active language
|
|
214
|
-
},
|
|
215
|
-
});
|
|
216
|
-
// To add overrides for additional languages, call CometChatLocalize.addTranslation({...}) per language.
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
### React Native (v5) — `translations` prop on the provider
|
|
220
|
-
|
|
221
|
-
```tsx
|
|
222
|
-
<CometChatI18nProvider
|
|
223
|
-
selectedLanguage="es"
|
|
224
|
-
translations={{ es: { CHATS: "Charla", MESSAGES: "Mensajes" } }}
|
|
225
|
-
>
|
|
226
|
-
{/* … */}
|
|
227
|
-
</CometChatI18nProvider>
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
Add a brand-new language the same way: `translations={{ custom: { CHATS: "…" } }}` with `selectedLanguage="custom"`.
|
|
231
|
-
|
|
232
|
-
### Angular
|
|
233
|
-
|
|
234
|
-
Init with the object signature, then register custom strings via `addTranslation` (v5):
|
|
235
|
-
|
|
236
|
-
```ts
|
|
237
|
-
CometChatLocalize.init({ language: "es" });
|
|
238
|
-
CometChatLocalize.addTranslation({
|
|
239
|
-
es: { CHAT: "Charla", MESSAGES: "Mensajes" },
|
|
240
|
-
});
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
### Android
|
|
244
|
-
|
|
245
|
-
The Android kit has **no string-override API** on `CometChatLocalize` (no `addStringResources`/`setStringResources`). Override individual strings the Android-native way — add a `values-es/strings.xml` with the kit's string keys to your app resources; Android resource resolution picks them up for the active locale.
|
|
246
|
-
|
|
247
|
-
```kotlin
|
|
248
|
-
CometChatLocalize.setLocale(context, "es") // selects the locale; string overrides live in res/values-es/
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
### iOS
|
|
252
|
-
|
|
253
|
-
iOS has **no `setStringResources` API** either. Override strings via your app's `Localizable.strings` (per-locale `.lproj`) using the kit's string keys; `set(locale:)` only selects the active locale.
|
|
254
|
-
|
|
255
|
-
```swift
|
|
256
|
-
CometChatLocalize.set(locale: "es") // overrides live in es.lproj/Localizable.strings
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### Flutter
|
|
260
|
-
|
|
261
|
-
Flutter has **no `CometChatLocalize.init`** — subclass the kit's `Translations` delegate to override or add strings, and register your delegate *before* `cc.Translations.delegate` in `MaterialApp.localizationsDelegates` (full recipe in `documentation/docs/ui-kit/flutter/localize.mdx`):
|
|
262
|
-
|
|
263
|
-
```dart
|
|
264
|
-
class MyTranslations extends cc.Translations {
|
|
265
|
-
@override
|
|
266
|
-
String get chats => 'Charla'; // override individual getters
|
|
267
|
-
}
|
|
268
|
-
// register MyTranslationsDelegate() ahead of cc.Translations.delegate
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
---
|
|
272
|
-
|
|
273
|
-
## RTL languages
|
|
274
|
-
|
|
275
|
-
Arabic, Hebrew, Persian, Urdu render right-to-left. The kits handle layout direction automatically based on the locale, BUT:
|
|
276
|
-
|
|
277
|
-
1. **Native iOS / Android**: layout direction follows the device's locale OR the explicitly-set CometChat locale, whichever is set last. If your app sets the device locale to Arabic but the kit's locale is English, mismatched RTL is visible.
|
|
278
|
-
2. **Web (React / Angular)**: `<html dir="rtl">` is required for full RTL support. The kit reads this from the document root. Set it when locale changes:
|
|
279
|
-
|
|
280
|
-
```ts
|
|
281
|
-
useEffect(() => {
|
|
282
|
-
const lang = currentLocale;
|
|
283
|
-
document.documentElement.dir = ["ar", "he", "fa", "ur"].includes(lang) ? "rtl" : "ltr";
|
|
284
|
-
CometChatLocalize.init({ language: lang });
|
|
285
|
-
}, [currentLocale]);
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
3. **React Native**: `I18nManager.forceRTL(true)` for global RTL flip. Requires app restart to take effect (this is the one common production bug — set RTL, app doesn't visibly change, devs miss the "restart required" warning).
|
|
289
|
-
|
|
290
|
-
```ts
|
|
291
|
-
import { I18nManager, NativeModules, Platform } from "react-native";
|
|
292
|
-
|
|
293
|
-
if (isRTLLocale(language) && !I18nManager.isRTL) {
|
|
294
|
-
I18nManager.forceRTL(true);
|
|
295
|
-
if (__DEV__) {
|
|
296
|
-
console.warn("RTL set — app must restart for layout change to apply");
|
|
297
|
-
} else {
|
|
298
|
-
NativeModules.DevSettings.reload();
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
4. **Flutter**: handled automatically via `MaterialApp.localizationsDelegates` + `Locale('ar')`. Flutter's framework flips layout direction on locale change without restart.
|
|
304
|
-
|
|
305
|
-
---
|
|
306
|
-
|
|
307
|
-
## Fallback language
|
|
308
|
-
|
|
309
|
-
Every kit falls back to English when a translation is missing for the active locale. Make this explicit:
|
|
310
|
-
|
|
311
|
-
```ts
|
|
312
|
-
// React/RN/Angular (object signature) — fallbackLanguage is a settings field
|
|
313
|
-
CometChatLocalize.init({ language: "es", fallbackLanguage: "en-US" });
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
Angular v5's `LocalizationSettings` carries `fallbackLanguage` (verified in `cometchat-localize.ts` — defaults to `en-US`). RN's `<CometChatI18nProvider>` takes a `fallbackLanguage` prop. Flutter's `Translations` delegate and iOS's `set(locale:)` don't expose an explicit fallback arg — they fall back to English internally, so the skill doesn't try to override it there.
|
|
317
|
-
|
|
318
|
-
---
|
|
319
|
-
|
|
320
|
-
## Detecting the user's preferred language
|
|
321
|
-
|
|
322
|
-
```ts
|
|
323
|
-
// Web — browser language
|
|
324
|
-
const language = navigator.language.split("-")[0]; // "en-US" → "en"
|
|
325
|
-
|
|
326
|
-
// React Native — device language
|
|
327
|
-
import * as Localization from "expo-localization"; // Expo
|
|
328
|
-
const language = Localization.locale.split("-")[0];
|
|
329
|
-
|
|
330
|
-
// or react-native-localize for bare RN:
|
|
331
|
-
import { getLocales } from "react-native-localize";
|
|
332
|
-
const language = getLocales()[0]?.languageCode ?? "en";
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
```kotlin
|
|
336
|
-
// Android
|
|
337
|
-
val language = Locale.getDefault().language // "en"
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
```swift
|
|
341
|
-
// iOS
|
|
342
|
-
let language = Locale.preferredLanguages.first?.split(separator: "-").first.map(String.init) ?? "en"
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
```dart
|
|
346
|
-
// Flutter
|
|
347
|
-
import 'dart:ui';
|
|
348
|
-
final language = window.locale.languageCode; // 'en'
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
Map these to your kit's locale convention (most kits use ISO 639-1 two-letter codes; Flutter sometimes accepts BCP47 like `en-US`).
|
|
352
|
-
|
|
353
|
-
---
|
|
354
|
-
|
|
355
|
-
## Logout / language switch — re-init the kit
|
|
356
|
-
|
|
357
|
-
When the user changes language at runtime, simply call `init`/`setLocale` again with the new language. The kit re-renders kit components on the next render cycle. No need to logout/re-login.
|
|
358
|
-
|
|
359
|
-
For React/RN — wrap kit components in a `key={language}` to force re-mount if the kit doesn't auto-detect:
|
|
360
|
-
|
|
361
|
-
```tsx
|
|
362
|
-
<div key={language}>
|
|
363
|
-
<CometChatConversations />
|
|
364
|
-
</div>
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
This is the workaround for kits that cache localized strings at first render.
|
|
368
|
-
|
|
369
|
-
---
|
|
370
|
-
|
|
371
|
-
## Advanced init options + date/time formatting (web / JS family)
|
|
372
|
-
|
|
373
|
-
`CometChatLocalize.init(settings)` (web, RN, Angular) accepts more than a language — the `LocalizationSettings` carries options the basic recipe omits (all verified in `cometchat-uikit-react-v6/src/resources/CometChatLocalize/cometchat-localize.ts`):
|
|
374
|
-
|
|
375
|
-
- **`translationsForLanguage`** — inject custom string overrides at init (sugar for `addTranslation`).
|
|
376
|
-
- **`missingKeyHandler`** — a callback invoked with any key that has no translation (log it, or return a fallback). Great for catching gaps in custom languages.
|
|
377
|
-
- **`timezone`** — IANA zone string (e.g. `"America/New_York"`) used when the kit formats timestamps.
|
|
378
|
-
|
|
379
|
-
**Date/time formatting** is controlled with `CalendarObject` (exported from the kit, `utils/CalendarObject.ts`) — pass one globally or per-component (e.g. a component's `lastActiveAtDateTimeFormat`-style prop) to control how the kit renders relative/absolute times. Query the docs MCP / `ui-kit/react/localize` for the full `CalendarObject` field list and the `flag_message_reason_*` / `message_composer_mention_*` translation-key conventions.
|
|
380
|
-
|
|
381
|
-
> These are web/JS-family details. Native families (Android/iOS/Flutter) localize through their own resource/string mechanisms — see the per-family `-core`/`-troubleshooting` skills.
|
|
382
|
-
|
|
383
|
-
---
|
|
384
|
-
|
|
385
|
-
## Anti-patterns
|
|
386
|
-
|
|
387
|
-
1. **Using the wrong localization surface for the family.** Web + **Angular v5** take `CometChatLocalize.init({ language })` (object); **React Native v5** uses `<CometChatI18nProvider>` + `useCometChatTranslation` (NO `CometChatLocalize.init`); **Android** uses `CometChatLocalize.setLocale(context, "es")`; **iOS** uses `CometChatLocalize.set(locale: "es")`; **Flutter** has no `CometChatLocalize` — register the kit's `Translations` delegate. The legacy positional `init("es")` only ever applied to Angular **v4**. Verify against the installed package's types if unsure.
|
|
388
|
-
2. **Setting locale before kit init.** Some kits ignore the early call. Always sequence: kit init → localize init.
|
|
389
|
-
3. **No fallback language on web/RN/Flutter.** Missing translations show as raw keys (`CHAT_HEADER_TITLE` etc.) instead of English fallback.
|
|
390
|
-
4. **`document.dir` not synced with locale on web.** RTL languages render LTR — broken layout.
|
|
391
|
-
5. **`I18nManager.forceRTL` without app restart.** Layout doesn't flip; devs think the kit is broken.
|
|
392
|
-
6. **Hardcoding language in skill output.** Always read user preference (browser/device/explicit setting).
|
|
393
|
-
7. **Custom resources keyed by lowercase ID** (`"chat"` instead of `"CHAT"`). Kit string keys are uppercase by convention. Mismatched case = no override applied.
|
|
394
|
-
8. **Trusting the audit-fix-once mindset.** Localize signatures can drift in future minor versions. Re-verify on kit upgrade.
|
|
395
|
-
|
|
396
|
-
---
|
|
397
|
-
|
|
398
|
-
## Verification checklist
|
|
399
|
-
|
|
400
|
-
- [ ] `init` / `setLocale` signature matches the family in the table above
|
|
401
|
-
- [ ] Locale set AFTER kit init resolves
|
|
402
|
-
- [ ] `fallbackLanguage` set where supported (React, RN, Flutter)
|
|
403
|
-
- [ ] Web: `document.documentElement.dir` synced with RTL languages
|
|
404
|
-
- [ ] React Native: `I18nManager.forceRTL` warning + restart on RTL set
|
|
405
|
-
- [ ] Custom resources use uppercase string keys
|
|
406
|
-
- [ ] Language detection from browser/device, not hardcoded
|
|
407
|
-
- [ ] Re-init on language switch (or `key={language}` workaround)
|
|
408
|
-
- [ ] Smoke test: switch to a bundled non-English language, verify kit components localize
|
|
409
|
-
- [ ] Smoke test: switch to a missing-resource language, verify English fallback
|
|
410
|
-
- [ ] RTL smoke test: Arabic / Hebrew on web (with `dir="rtl"`) and RN (with `I18nManager.forceRTL`) and native Android/iOS — kit components mirror correctly
|
|
411
|
-
|
|
412
|
-
---
|
|
413
|
-
|
|
414
|
-
## Pointers
|
|
415
|
-
|
|
416
|
-
- `cometchat-{family}-core` — kit init order and conventions (localize hooks into the post-init phase)
|
|
417
|
-
- `cometchat-{family}-customization` — custom string resources / theme strings
|
|
418
|
-
- `cometchat-{family}-troubleshooting` — when localization doesn't apply (cache, sequence, fallback)
|
|
419
|
-
- `cometchat-a11y` — sister skill; localization + accessibility together cover the bulk of "production polish"
|