@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.
Files changed (490) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +36 -0
  4. package/LICENSE +21 -0
  5. package/README.md +41 -163
  6. package/RULES.md +114 -0
  7. package/bin/cometchat-skills.mjs +1180 -0
  8. package/bin/legacy-skills.json +95 -0
  9. package/catalogs/android-v6.json +1646 -0
  10. package/catalogs/flutter-v6.json +651 -0
  11. package/catalogs/ios-v5.json +1383 -0
  12. package/catalogs/rn-calls-v5.json +134 -0
  13. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  14. package/catalogs/rn-sdk-v4.json +672 -0
  15. package/catalogs/rn-v5.json +449 -0
  16. package/catalogs/rn-v5.symbols.txt +216 -0
  17. package/catalogs/sdk-android-v5.json +514 -0
  18. package/contracts.android-calls-v5.json +122 -0
  19. package/contracts.android-v6.json +135 -0
  20. package/contracts.angular-v5.json +694 -0
  21. package/contracts.flutter-calls-v5.json +77 -0
  22. package/contracts.flutter-v6.json +126 -0
  23. package/contracts.ios-calls-v5.json +67 -0
  24. package/contracts.ios-v5.json +436 -0
  25. package/contracts.json +82 -0
  26. package/contracts.rn-calls-v5.json +77 -0
  27. package/contracts.rn-v5.json +727 -0
  28. package/contracts.sdk-android-v5.json +15 -0
  29. package/contracts.web-calls-v5.json +45 -0
  30. package/features.android-calls-v5.json +246 -0
  31. package/features.android-v6.json +65 -0
  32. package/features.angular-v5.json +521 -0
  33. package/features.flutter-calls-v5.json +286 -0
  34. package/features.flutter-v6.json +484 -0
  35. package/features.ios-calls-v5.json +236 -0
  36. package/features.ios-v5.json +573 -0
  37. package/features.json +61 -0
  38. package/features.rn-calls-v5.json +187 -0
  39. package/features.rn-v5.json +614 -0
  40. package/features.sdk-android-v5.json +40 -0
  41. package/features.sdk-jsv4.json +24 -0
  42. package/features.web-calls-v5.json +108 -0
  43. package/package.json +151 -74
  44. package/peers.yaml +312 -0
  45. package/registry/README.md +31 -0
  46. package/registry/android-calls-v5.json +54 -0
  47. package/registry/android-v6.json +137 -0
  48. package/registry/angular-v5.json +114 -0
  49. package/registry/flutter-calls-v5.json +54 -0
  50. package/registry/flutter-v6.json +119 -0
  51. package/registry/ios-calls-v5.json +59 -0
  52. package/registry/ios-v5.json +97 -0
  53. package/registry/rn-calls-v5.json +59 -0
  54. package/registry/rn-v5.json +129 -0
  55. package/registry/sdk-android-v5.json +53 -0
  56. package/registry/sdk-jsv4.json +53 -0
  57. package/registry/web-calls-v5.json +54 -0
  58. package/registry/web-v7.json +99 -0
  59. package/skills/cometchat/SKILL.md +42 -2096
  60. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  66. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  67. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  68. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  69. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  70. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  71. package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
  72. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  73. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  74. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  75. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  76. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  77. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  78. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  79. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  80. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  81. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  82. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  83. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  84. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  85. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  86. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  87. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  88. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  89. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  90. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  91. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  92. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  93. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  94. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  95. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  96. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  97. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  98. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  99. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  100. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  101. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  102. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  103. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  104. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  105. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  106. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  107. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  108. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  109. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  110. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  111. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  112. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  113. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  114. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  115. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  116. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  117. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  118. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  119. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  120. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  121. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  122. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  123. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  127. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  128. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
  129. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  130. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  131. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  132. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  133. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  134. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  135. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  136. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  137. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  138. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  139. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  140. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  141. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  142. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  143. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  144. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  145. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  146. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  147. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  148. package/skills/cometchat-ios-calls/SKILL.md +112 -563
  149. package/skills/cometchat-ios-components/SKILL.md +44 -834
  150. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  151. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  152. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  153. package/skills/cometchat-ios-core/references/install.md +23 -0
  154. package/skills/cometchat-ios-core/references/layout.md +186 -0
  155. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  156. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  157. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  158. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  159. package/skills/cometchat-ios-features/SKILL.md +29 -738
  160. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  161. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  162. package/skills/cometchat-ios-push/SKILL.md +24 -602
  163. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  164. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  165. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  166. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  167. package/skills/cometchat-onboarding/SKILL.md +89 -0
  168. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  169. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  170. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  171. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  172. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  173. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  174. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  175. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  176. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  177. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  178. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  179. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  180. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  181. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  182. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  183. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  184. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  185. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  186. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  187. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  188. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  189. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  190. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  191. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  192. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  193. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  194. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  195. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  196. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  198. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  199. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  200. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  201. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  202. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  203. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  204. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  205. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  206. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  207. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  208. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  209. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  210. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  211. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  212. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  213. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  214. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  215. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  216. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  217. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  218. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  219. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  220. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  221. package/test-suite/README.md +70 -0
  222. package/test-suite/catalogs/android-calls-v5.json +830 -0
  223. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  224. package/test-suite/catalogs/android-v6.json +1646 -0
  225. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  226. package/test-suite/catalogs/angular-v5.json +7587 -0
  227. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  228. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  229. package/test-suite/catalogs/flutter-v6.json +651 -0
  230. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  231. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  232. package/test-suite/catalogs/ios-v5.json +1383 -0
  233. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  234. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  235. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  236. package/test-suite/catalogs/rn-v5.json +449 -0
  237. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  238. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  239. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  240. package/test-suite/catalogs/web-calls-v5.json +195 -0
  241. package/test-suite/catalogs/web-v7.json +1243 -0
  242. package/test-suite/scripts/build-registry.mjs +113 -0
  243. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  244. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  245. package/test-suite/scripts/lint-skills.mjs +909 -0
  246. package/test-suite/scripts/measure-tokens.mjs +169 -0
  247. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  248. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  249. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  250. package/test-suite/scripts/verify-catalog.mjs +242 -0
  251. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  252. package/test-suite/scripts/verify-detection.mjs +178 -0
  253. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  254. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  255. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  256. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  257. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  258. package/test-suite/typecheck/angular-v5/package.json +21 -0
  259. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  260. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  261. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  262. package/test-suite/typecheck/web-v7/package.json +18 -0
  263. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  264. package/bin/install.js +0 -1003
  265. package/skills/.claude-plugin/marketplace.json +0 -86
  266. package/skills/cometchat/references/asking-questions.md +0 -48
  267. package/skills/cometchat-a11y/SKILL.md +0 -477
  268. package/skills/cometchat-android-v5/SKILL.md +0 -121
  269. package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
  270. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  271. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  272. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  273. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  274. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  275. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  276. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  277. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  278. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  279. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  280. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  281. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  282. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  283. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  284. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  285. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  286. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  287. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  288. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  289. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  290. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  291. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  292. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  293. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  294. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  295. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  296. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  297. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  298. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  299. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  300. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  301. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  302. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  303. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  304. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  305. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  306. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  307. package/skills/cometchat-android-v6/SKILL.md +0 -108
  308. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  309. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  310. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  311. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  312. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  313. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  314. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  315. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  316. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  317. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  318. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  319. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  320. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  321. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  322. package/skills/cometchat-angular-calls/SKILL.md +0 -380
  323. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  324. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  325. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  326. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  327. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  328. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  329. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  330. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  331. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  332. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  333. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  334. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  335. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  336. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  337. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  338. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  339. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  340. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  341. package/skills/cometchat-angular-components/SKILL.md +0 -235
  342. package/skills/cometchat-angular-core/SKILL.md +0 -386
  343. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  344. package/skills/cometchat-angular-features/SKILL.md +0 -329
  345. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  346. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  347. package/skills/cometchat-angular-production/SKILL.md +0 -564
  348. package/skills/cometchat-angular-push/SKILL.md +0 -389
  349. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  350. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  351. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  352. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  353. package/skills/cometchat-calls/SKILL.md +0 -364
  354. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  355. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  356. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  357. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  358. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  359. package/skills/cometchat-components/SKILL.md +0 -1142
  360. package/skills/cometchat-core/SKILL.md +0 -1048
  361. package/skills/cometchat-customization/SKILL.md +0 -580
  362. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  363. package/skills/cometchat-features/SKILL.md +0 -861
  364. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  365. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
  366. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  367. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  368. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  369. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  370. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  371. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  372. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  373. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  374. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  375. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  376. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  377. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  378. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  379. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  380. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  381. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  382. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  383. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  384. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  385. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  386. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  387. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  388. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  389. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  390. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  391. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  392. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  393. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  394. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  395. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  396. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  397. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  398. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  399. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  400. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  401. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  402. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  403. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  404. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  405. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  406. package/skills/cometchat-i18n/SKILL.md +0 -419
  407. package/skills/cometchat-ios/SKILL.md +0 -325
  408. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
  409. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  410. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  411. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  412. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  413. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  414. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  415. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  416. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  417. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  418. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  419. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  420. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  421. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  422. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  423. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  424. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  425. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  426. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  427. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  428. package/skills/cometchat-ios-production/SKILL.md +0 -738
  429. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  430. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  431. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  432. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  433. package/skills/cometchat-native-calls/SKILL.md +0 -671
  434. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  435. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  436. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  437. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  438. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  439. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  440. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  441. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  442. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  443. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  444. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  445. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  446. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  447. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  448. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  449. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  450. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  451. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  452. package/skills/cometchat-native-components/SKILL.md +0 -628
  453. package/skills/cometchat-native-core/SKILL.md +0 -679
  454. package/skills/cometchat-native-customization/SKILL.md +0 -716
  455. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  456. package/skills/cometchat-native-features/SKILL.md +0 -638
  457. package/skills/cometchat-native-placement/SKILL.md +0 -509
  458. package/skills/cometchat-native-production/SKILL.md +0 -700
  459. package/skills/cometchat-native-push/SKILL.md +0 -594
  460. package/skills/cometchat-native-testing/SKILL.md +0 -582
  461. package/skills/cometchat-native-theming/SKILL.md +0 -681
  462. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  463. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  464. package/skills/cometchat-placement/SKILL.md +0 -1360
  465. package/skills/cometchat-production/SKILL.md +0 -1027
  466. package/skills/cometchat-react-calls/SKILL.md +0 -752
  467. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  468. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  469. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  470. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  471. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  472. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  473. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  474. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  475. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  476. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  477. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  478. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  479. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  480. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  481. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  482. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  483. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  484. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  485. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  486. package/skills/cometchat-react-push/SKILL.md +0 -634
  487. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  488. package/skills/cometchat-react-testing/SKILL.md +0 -413
  489. package/skills/cometchat-theming/SKILL.md +0 -498
  490. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -1,738 +0,0 @@
1
- ---
2
- name: cometchat-ios-production
3
- description: "Production-ready CometChat iOS setup — server-side auth tokens, security best practices, and deployment checklist."
4
- license: "MIT"
5
- compatibility: "CometChatUIKitSwift ^5; iOS 13+"
6
- metadata:
7
- author: "CometChat"
8
- version: "3.0.0"
9
- tags: "chat cometchat ios production auth tokens security deployment"
10
- ---
11
-
12
- > **Ground truth:** `CometChatUIKitSwift ~> 5` (+ `CometChatCallsSDK ~> 5`) — Pods/SPM `.swiftinterface` + `ui-kit/ios`. **Official docs:** https://www.cometchat.com/docs/fundamentals/user-auth · **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
- This skill teaches how to prepare your CometChat iOS integration for production. It covers replacing development Auth Keys with server-side auth tokens, security best practices, and a deployment checklist.
17
-
18
- ---
19
-
20
- ## 1. Development vs Production Authentication
21
-
22
- ### Development Mode (Auth Key)
23
-
24
- In development, you use the Auth Key directly in your app:
25
-
26
- ```swift
27
- // ⚠️ DEVELOPMENT ONLY — Never ship this to production
28
- CometChatUIKit.login(uid: "user-123") { result in
29
- // ...
30
- }
31
- ```
32
-
33
- **Problems with Auth Key in production:**
34
- - Auth Key is embedded in your app binary
35
- - Anyone can decompile your app and extract it
36
- - Attackers can impersonate any user
37
- - No server-side validation of user identity
38
-
39
- ### Production Mode (Auth Token)
40
-
41
- In production, your server generates short-lived auth tokens:
42
-
43
- ```
44
- ┌─────────────┐ 1. Login ┌─────────────┐
45
- │ iOS App │ ───────────────► │ Your Server │
46
- └─────────────┘ └─────────────┘
47
- │ │
48
- │ │ 2. Verify user
49
- │ │ Generate token
50
- │ ▼
51
- │ ┌─────────────┐
52
- │ │ CometChat │
53
- │ │ API │
54
- │ └─────────────┘
55
- │ │
56
- │ 3. Return auth token │
57
- │ ◄──────────────────────────────┘
58
-
59
- │ 4. Login with token
60
-
61
- ┌─────────────┐
62
- │ CometChat │
63
- │ SDK │
64
- └─────────────┘
65
- ```
66
-
67
- ---
68
-
69
- ## 2. Server-Side Token Generation
70
-
71
- ### Your Server Endpoint
72
-
73
- Create an endpoint that:
74
- 1. Authenticates the user (your existing auth system)
75
- 2. Calls CometChat API to generate an auth token
76
- 3. Returns the token to the iOS app
77
-
78
- **Example (Node.js/Express):**
79
-
80
- ```javascript
81
- const express = require('express');
82
- const axios = require('axios');
83
-
84
- const app = express();
85
-
86
- const COMETCHAT_APP_ID = process.env.COMETCHAT_APP_ID;
87
- const COMETCHAT_API_KEY = process.env.COMETCHAT_API_KEY; // REST API Key
88
- const COMETCHAT_REGION = process.env.COMETCHAT_REGION;
89
-
90
- app.post('/api/cometchat/token', async (req, res) => {
91
- try {
92
- // 1. Verify the user is authenticated (your auth system)
93
- const userId = req.user.id; // From your auth middleware
94
-
95
- if (!userId) {
96
- return res.status(401).json({ error: 'Unauthorized' });
97
- }
98
-
99
- // 2. Generate CometChat auth token
100
- const response = await axios.post(
101
- `https://${COMETCHAT_APP_ID}.api-${COMETCHAT_REGION}.cometchat.io/v3/users/${userId}/auth_tokens`,
102
- {},
103
- {
104
- headers: {
105
- 'apiKey': COMETCHAT_API_KEY,
106
- 'Content-Type': 'application/json'
107
- }
108
- }
109
- );
110
-
111
- // 3. Return the token
112
- res.json({
113
- authToken: response.data.data.authToken
114
- });
115
-
116
- } catch (error) {
117
- console.error('CometChat token error:', error.response?.data || error.message);
118
- res.status(500).json({ error: 'Failed to generate token' });
119
- }
120
- });
121
- ```
122
-
123
- **Example (Python/Flask):**
124
-
125
- ```python
126
- from flask import Flask, jsonify, request
127
- import requests
128
- import os
129
-
130
- app = Flask(__name__)
131
-
132
- COMETCHAT_APP_ID = os.environ.get('COMETCHAT_APP_ID')
133
- COMETCHAT_API_KEY = os.environ.get('COMETCHAT_API_KEY')
134
- COMETCHAT_REGION = os.environ.get('COMETCHAT_REGION')
135
-
136
- @app.route('/api/cometchat/token', methods=['POST'])
137
- def get_cometchat_token():
138
- # 1. Verify user is authenticated (your auth system)
139
- user_id = request.user.id # From your auth middleware
140
-
141
- if not user_id:
142
- return jsonify({'error': 'Unauthorized'}), 401
143
-
144
- # 2. Generate CometChat auth token
145
- url = f'https://{COMETCHAT_APP_ID}.api-{COMETCHAT_REGION}.cometchat.io/v3/users/{user_id}/auth_tokens'
146
-
147
- headers = {
148
- 'apiKey': COMETCHAT_API_KEY,
149
- 'Content-Type': 'application/json'
150
- }
151
-
152
- response = requests.post(url, headers=headers)
153
-
154
- if response.status_code == 200:
155
- data = response.json()
156
- return jsonify({'authToken': data['data']['authToken']})
157
- else:
158
- return jsonify({'error': 'Failed to generate token'}), 500
159
- ```
160
-
161
- ### CometChat REST API Reference
162
-
163
- **Create Auth Token:**
164
- ```
165
- POST https://{appId}.api-{region}.cometchat.io/v3/users/{uid}/auth_tokens
166
-
167
- Headers:
168
- apiKey: YOUR_REST_API_KEY
169
- Content-Type: application/json
170
-
171
- Response:
172
- {
173
- "data": {
174
- "uid": "user-123",
175
- "authToken": "user-123_abc123xyz..."
176
- }
177
- }
178
- ```
179
-
180
- **Create User (if needed):**
181
- ```
182
- POST https://{appId}.api-{region}.cometchat.io/v3/users
183
-
184
- Headers:
185
- apiKey: YOUR_REST_API_KEY
186
- Content-Type: application/json
187
-
188
- Body:
189
- {
190
- "uid": "user-123",
191
- "name": "John Doe",
192
- "avatar": "https://example.com/avatar.jpg"
193
- }
194
- ```
195
-
196
- ---
197
-
198
- ## 3. iOS Implementation
199
-
200
- ### CometChatManager for Production
201
-
202
- ```swift
203
- import Foundation
204
- import CometChatUIKitSwift
205
- import CometChatSDK
206
-
207
- final class CometChatManager {
208
-
209
- static let shared = CometChatManager()
210
-
211
- private(set) var isInitialized = false
212
- private(set) var currentUser: User?
213
-
214
- private init() {}
215
-
216
- // MARK: - Initialization (No Auth Key needed)
217
-
218
- func initialize(completion: @escaping (Result<Bool, Error>) -> Void) {
219
- guard !isInitialized else {
220
- completion(.success(true))
221
- return
222
- }
223
-
224
- // Note: No authKey in production!
225
- let uiKitSettings = UIKitSettings()
226
- .set(appID: AppConfig.cometChatAppID)
227
- .set(region: AppConfig.cometChatRegion)
228
- .subscribePresenceForAllUsers()
229
- .build()
230
-
231
- CometChatUIKit(uiKitSettings: uiKitSettings) { [weak self] result in
232
- DispatchQueue.main.async {
233
- switch result {
234
- case .success(let success):
235
- self?.isInitialized = success
236
- self?.currentUser = CometChatUIKit.getLoggedInUser()
237
- completion(.success(success))
238
- case .failure(let error):
239
- completion(.failure(error))
240
- }
241
- }
242
- }
243
- }
244
-
245
- // MARK: - Production Login
246
-
247
- func login(completion: @escaping (Result<User, Error>) -> Void) {
248
- guard isInitialized else {
249
- completion(.failure(CometChatError.notInitialized))
250
- return
251
- }
252
-
253
- // Check for existing session
254
- if let user = CometChatUIKit.getLoggedInUser() {
255
- currentUser = user
256
- completion(.success(user))
257
- return
258
- }
259
-
260
- // Fetch auth token from your server
261
- fetchAuthToken { [weak self] result in
262
- switch result {
263
- case .success(let authToken):
264
- self?.loginWithToken(authToken, completion: completion)
265
- case .failure(let error):
266
- completion(.failure(error))
267
- }
268
- }
269
- }
270
-
271
- private func fetchAuthToken(completion: @escaping (Result<String, Error>) -> Void) {
272
- guard let url = URL(string: "\(AppConfig.apiBaseURL)/api/cometchat/token") else {
273
- completion(.failure(CometChatError.invalidURL))
274
- return
275
- }
276
-
277
- var request = URLRequest(url: url)
278
- request.httpMethod = "POST"
279
- request.setValue("application/json", forHTTPHeaderField: "Content-Type")
280
-
281
- // Add your auth header (e.g., JWT token)
282
- if let authToken = AuthManager.shared.accessToken {
283
- request.setValue("Bearer \(authToken)", forHTTPHeaderField: "Authorization")
284
- }
285
-
286
- URLSession.shared.dataTask(with: request) { data, response, error in
287
- if let error = error {
288
- completion(.failure(error))
289
- return
290
- }
291
-
292
- guard let data = data else {
293
- completion(.failure(CometChatError.noData))
294
- return
295
- }
296
-
297
- do {
298
- let json = try JSONSerialization.jsonObject(with: data) as? [String: Any]
299
- if let authToken = json?["authToken"] as? String {
300
- completion(.success(authToken))
301
- } else {
302
- completion(.failure(CometChatError.invalidResponse))
303
- }
304
- } catch {
305
- completion(.failure(error))
306
- }
307
- }.resume()
308
- }
309
-
310
- private func loginWithToken(_ authToken: String, completion: @escaping (Result<User, Error>) -> Void) {
311
- CometChatUIKit.login(authToken: authToken) { [weak self] result in
312
- DispatchQueue.main.async {
313
- switch result {
314
- case .success(let user):
315
- self?.currentUser = user
316
- completion(.success(user))
317
- case .onError(let error):
318
- // CometChatException does NOT conform to Swift's Error, so it
319
- // can't go straight into Result<_, Error> — bridge it.
320
- completion(.failure(CometChatError.sdk(error)))
321
- }
322
- }
323
- }
324
- }
325
-
326
- // MARK: - Logout
327
-
328
- func logout(completion: @escaping (Result<Void, Error>) -> Void) {
329
- guard let user = currentUser else {
330
- completion(.success(()))
331
- return
332
- }
333
-
334
- CometChatUIKit.logout(user: user) { [weak self] result in
335
- DispatchQueue.main.async {
336
- switch result {
337
- case .success:
338
- self?.currentUser = nil
339
- completion(.success(()))
340
- case .onError(let error):
341
- // CometChatException does NOT conform to Swift's Error, so it
342
- // can't go straight into Result<_, Error> — bridge it.
343
- completion(.failure(CometChatError.sdk(error)))
344
- }
345
- }
346
- }
347
- }
348
- }
349
-
350
- // MARK: - Errors
351
-
352
- enum CometChatError: LocalizedError {
353
- case notInitialized
354
- case invalidURL
355
- case noData
356
- case invalidResponse
357
- case sdk(CometChatException) // bridges a CometChatException into Swift's Error
358
-
359
- var errorDescription: String? {
360
- switch self {
361
- case .notInitialized:
362
- return "CometChat is not initialized"
363
- case .invalidURL:
364
- return "Invalid API URL"
365
- case .noData:
366
- return "No data received from server"
367
- case .invalidResponse:
368
- return "Invalid response from server"
369
- case .sdk(let exception):
370
- return exception.errorDescription
371
- }
372
- }
373
- }
374
- ```
375
-
376
- ### App Configuration
377
-
378
- ```swift
379
- // AppConfig.swift
380
- import Foundation
381
-
382
- struct AppConfig {
383
-
384
- // CometChat
385
- static let cometChatAppID: String = {
386
- guard let appID = Bundle.main.object(forInfoDictionaryKey: "CometChatAppID") as? String else {
387
- fatalError("CometChatAppID not found in Info.plist")
388
- }
389
- return appID
390
- }()
391
-
392
- static let cometChatRegion: String = {
393
- guard let region = Bundle.main.object(forInfoDictionaryKey: "CometChatRegion") as? String else {
394
- fatalError("CometChatRegion not found in Info.plist")
395
- }
396
- return region
397
- }()
398
-
399
- // Your API
400
- static let apiBaseURL: String = {
401
- #if DEBUG
402
- return "https://api-staging.yourapp.com"
403
- #else
404
- return "https://api.yourapp.com"
405
- #endif
406
- }()
407
- }
408
- ```
409
-
410
- ### Info.plist Configuration
411
-
412
- ```xml
413
- <key>CometChatAppID</key>
414
- <string>$(COMETCHAT_APP_ID)</string>
415
- <key>CometChatRegion</key>
416
- <string>$(COMETCHAT_REGION)</string>
417
- ```
418
-
419
- ### xcconfig Files
420
-
421
- **Debug.xcconfig:**
422
- ```
423
- COMETCHAT_APP_ID = your_app_id
424
- COMETCHAT_REGION = us
425
- ```
426
-
427
- **Release.xcconfig:**
428
- ```
429
- COMETCHAT_APP_ID = your_app_id
430
- COMETCHAT_REGION = us
431
- ```
432
-
433
- ---
434
-
435
- ## 4. User Provisioning
436
-
437
- ### Create Users on Your Server
438
-
439
- When a user signs up in your app, create them in CometChat:
440
-
441
- ```javascript
442
- // On your server - user registration endpoint
443
- app.post('/api/register', async (req, res) => {
444
- const { email, password, name } = req.body;
445
-
446
- // 1. Create user in your database
447
- const user = await createUserInDatabase({ email, password, name });
448
-
449
- // 2. Create user in CometChat
450
- await axios.post(
451
- `https://${COMETCHAT_APP_ID}.api-${COMETCHAT_REGION}.cometchat.io/v3/users`,
452
- {
453
- uid: user.id,
454
- name: user.name,
455
- avatar: user.avatarUrl
456
- },
457
- {
458
- headers: {
459
- 'apiKey': COMETCHAT_API_KEY,
460
- 'Content-Type': 'application/json'
461
- }
462
- }
463
- );
464
-
465
- res.json({ success: true, userId: user.id });
466
- });
467
- ```
468
-
469
- ### Update User Profile
470
-
471
- When user updates their profile:
472
-
473
- ```javascript
474
- app.put('/api/profile', async (req, res) => {
475
- const { name, avatar } = req.body;
476
- const userId = req.user.id;
477
-
478
- // 1. Update in your database
479
- await updateUserInDatabase(userId, { name, avatar });
480
-
481
- // 2. Update in CometChat
482
- await axios.put(
483
- `https://${COMETCHAT_APP_ID}.api-${COMETCHAT_REGION}.cometchat.io/v3/users/${userId}`,
484
- { name, avatar },
485
- {
486
- headers: {
487
- 'apiKey': COMETCHAT_API_KEY,
488
- 'Content-Type': 'application/json'
489
- }
490
- }
491
- );
492
-
493
- res.json({ success: true });
494
- });
495
- ```
496
-
497
- ---
498
-
499
- ## 5. Security Best Practices
500
-
501
- ### Never Expose API Keys
502
-
503
- ❌ **Wrong:**
504
- ```swift
505
- // Never do this!
506
- let apiKey = "abc123xyz" // Hardcoded in app
507
- ```
508
-
509
- ✅ **Correct:**
510
- ```swift
511
- // API keys stay on your server
512
- // iOS app only receives short-lived auth tokens
513
- ```
514
-
515
- ### Validate User Identity
516
-
517
- Always verify user identity on your server before generating tokens:
518
-
519
- ```javascript
520
- app.post('/api/cometchat/token', authenticateMiddleware, async (req, res) => {
521
- // authenticateMiddleware verifies the user's JWT/session
522
- const userId = req.user.id; // Verified user ID
523
-
524
- // Generate token only for verified users
525
- // ...
526
- });
527
- ```
528
-
529
- ### Use HTTPS
530
-
531
- Always use HTTPS for API communication:
532
-
533
- ```swift
534
- // ✅ Correct
535
- let url = URL(string: "https://api.yourapp.com/api/cometchat/token")
536
-
537
- // ❌ Wrong
538
- let url = URL(string: "http://api.yourapp.com/api/cometchat/token")
539
- ```
540
-
541
- ### Token Expiration
542
-
543
- Auth tokens have a default expiration. Handle token refresh:
544
-
545
- ```swift
546
- func handleTokenExpired() {
547
- // Clear current session
548
- CometChatManager.shared.logout { _ in
549
- // Re-login to get new token
550
- CometChatManager.shared.login { result in
551
- switch result {
552
- case .success:
553
- print("Re-authenticated successfully")
554
- case .failure(let error):
555
- print("Re-authentication failed: \(error)")
556
- // Navigate to login screen
557
- }
558
- }
559
- }
560
- }
561
- ```
562
-
563
- ### App Transport Security
564
-
565
- Ensure ATS is properly configured in `Info.plist`:
566
-
567
- ```xml
568
- <key>NSAppTransportSecurity</key>
569
- <dict>
570
- <key>NSAllowsArbitraryLoads</key>
571
- <false/>
572
- </dict>
573
- ```
574
-
575
- ---
576
-
577
- ## 6. Error Handling
578
-
579
- ### Handle Authentication Errors
580
-
581
- ```swift
582
- func handleCometChatError(_ error: Error) {
583
- if let cometChatError = error as? CometChatException {
584
- switch cometChatError.errorCode {
585
- case "ERR_UID_NOT_FOUND":
586
- // User doesn't exist in CometChat
587
- // Create user on your server, then retry
588
- createUserAndRetry()
589
-
590
- case "AUTH_ERR_AUTH_TOKEN_NOT_FOUND":
591
- // Invalid or expired token
592
- refreshTokenAndRetry()
593
-
594
- case "ERR_NOT_LOGGED_IN":
595
- // User not logged in
596
- navigateToLogin()
597
-
598
- default:
599
- showError(cometChatError.errorDescription ?? "Unknown error")
600
- }
601
- }
602
- }
603
- ```
604
-
605
- ### Retry Logic
606
-
607
- ```swift
608
- func loginWithRetry(maxAttempts: Int = 3, completion: @escaping (Result<User, Error>) -> Void) {
609
- var attempts = 0
610
-
611
- func attempt() {
612
- attempts += 1
613
-
614
- CometChatManager.shared.login { result in
615
- switch result {
616
- case .success(let user):
617
- completion(.success(user))
618
- case .failure(let error):
619
- if attempts < maxAttempts {
620
- // Wait and retry
621
- DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
622
- attempt()
623
- }
624
- } else {
625
- completion(.failure(error))
626
- }
627
- }
628
- }
629
- }
630
-
631
- attempt()
632
- }
633
- ```
634
-
635
- ---
636
-
637
- ## 7. Deployment Checklist
638
-
639
- ### Before Submitting to App Store
640
-
641
- - [ ] **Remove Auth Key from code** — Use server-side tokens only
642
- - [ ] **Configure production API URL** — Point to production server
643
- - [ ] **Test with production CometChat app** — Create separate prod app in dashboard
644
- - [ ] **Enable required extensions** — Polls, stickers, AI features in dashboard
645
- - [ ] **Configure push notifications** — Upload APNs certificate to dashboard
646
- - [ ] **Test on real devices** — Calls and push don't work on simulator
647
- - [ ] **Review Info.plist permissions** — Camera, microphone, notifications
648
- - [ ] **Test logout flow** — Ensure clean session termination
649
- - [ ] **Test offline behavior** — App should handle network issues gracefully
650
- - [ ] **Review error messages** — User-friendly error handling
651
-
652
- ### CometChat Dashboard Configuration
653
-
654
- - [ ] **Create production app** — Separate from development
655
- - [ ] **Configure webhooks** — If using server-side events
656
- - [ ] **Set up push notifications** — APNs certificate uploaded
657
- - [ ] **Enable required extensions** — Only what you need
658
- - [ ] **Configure AI features** — If using AI capabilities
659
- - [ ] **Review rate limits** — Understand your plan limits
660
- - [ ] **Set up monitoring** — Enable analytics and logging
661
-
662
- ### Server Configuration
663
-
664
- - [ ] **Secure API keys** — Store in environment variables
665
- - [ ] **Implement rate limiting** — Prevent abuse
666
- - [ ] **Add request validation** — Validate all inputs
667
- - [ ] **Set up logging** — Monitor token generation
668
- - [ ] **Configure CORS** — If using web clients too
669
- - [ ] **Test error scenarios** — Handle CometChat API failures
670
-
671
- ---
672
-
673
- ## 8. Monitoring and Analytics
674
-
675
- ### Track CometChat Events
676
-
677
- ```swift
678
- // Listen for connection state
679
- CometChat.addConnectionListener("connection-listener", self)
680
-
681
- extension YourClass: CometChatConnectionDelegate {
682
- func connected() {
683
- Analytics.track("cometchat_connected")
684
- }
685
-
686
- func connecting() {
687
- Analytics.track("cometchat_connecting")
688
- }
689
-
690
- func disconnected() {
691
- Analytics.track("cometchat_disconnected")
692
- }
693
- }
694
- ```
695
-
696
- ### Track Message Events
697
-
698
- ```swift
699
- class AnalyticsListener: CometChatMessageEventListener {
700
-
701
- func ccMessageSent(message: BaseMessage, status: MessageStatus) {
702
- if status == .success {
703
- Analytics.track("message_sent", properties: [
704
- "type": message.messageType.rawValue,
705
- "receiver_type": message.receiverType.rawValue
706
- ])
707
- }
708
- }
709
- }
710
-
711
- CometChatMessageEvents.addListener("analytics", AnalyticsListener())
712
- ```
713
-
714
- ---
715
-
716
- ## 9. Common Production Issues
717
-
718
- | Issue | Cause | Solution |
719
- |---|---|---|
720
- | "User not found" | User not created in CometChat | Create user via REST API before login |
721
- | "Invalid auth token" | Token expired or malformed | Generate new token from server |
722
- | "Rate limit exceeded" | Too many API calls | Implement caching and rate limiting |
723
- | Push not working | Certificate mismatch | Verify APNs cert matches environment |
724
- | Calls failing | Missing SDK or permissions | Add CometChatCallsSDK and permissions |
725
-
726
- ---
727
-
728
- ## Summary
729
-
730
- **Development → Production Migration:**
731
-
732
- 1. Remove Auth Key from iOS app
733
- 2. Create server endpoint for token generation
734
- 3. Update iOS app to fetch tokens from your server
735
- 4. Create users in CometChat when they register
736
- 5. Test thoroughly before release
737
- 6. Monitor and handle errors gracefully
738
-