@cometchat/skills 4.4.1 → 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 (489) 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/README.md +41 -163
  5. package/RULES.md +114 -0
  6. package/bin/cometchat-skills.mjs +1180 -0
  7. package/bin/legacy-skills.json +95 -0
  8. package/catalogs/android-v6.json +1646 -0
  9. package/catalogs/flutter-v6.json +651 -0
  10. package/catalogs/ios-v5.json +1383 -0
  11. package/catalogs/rn-calls-v5.json +134 -0
  12. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  13. package/catalogs/rn-sdk-v4.json +672 -0
  14. package/catalogs/rn-v5.json +449 -0
  15. package/catalogs/rn-v5.symbols.txt +216 -0
  16. package/catalogs/sdk-android-v5.json +514 -0
  17. package/contracts.android-calls-v5.json +122 -0
  18. package/contracts.android-v6.json +135 -0
  19. package/contracts.angular-v5.json +694 -0
  20. package/contracts.flutter-calls-v5.json +77 -0
  21. package/contracts.flutter-v6.json +126 -0
  22. package/contracts.ios-calls-v5.json +67 -0
  23. package/contracts.ios-v5.json +436 -0
  24. package/contracts.json +82 -0
  25. package/contracts.rn-calls-v5.json +77 -0
  26. package/contracts.rn-v5.json +727 -0
  27. package/contracts.sdk-android-v5.json +15 -0
  28. package/contracts.web-calls-v5.json +45 -0
  29. package/features.android-calls-v5.json +246 -0
  30. package/features.android-v6.json +65 -0
  31. package/features.angular-v5.json +521 -0
  32. package/features.flutter-calls-v5.json +286 -0
  33. package/features.flutter-v6.json +484 -0
  34. package/features.ios-calls-v5.json +236 -0
  35. package/features.ios-v5.json +573 -0
  36. package/features.json +61 -0
  37. package/features.rn-calls-v5.json +187 -0
  38. package/features.rn-v5.json +614 -0
  39. package/features.sdk-android-v5.json +40 -0
  40. package/features.sdk-jsv4.json +24 -0
  41. package/features.web-calls-v5.json +108 -0
  42. package/package.json +151 -74
  43. package/peers.yaml +312 -0
  44. package/registry/README.md +31 -0
  45. package/registry/android-calls-v5.json +54 -0
  46. package/registry/android-v6.json +137 -0
  47. package/registry/angular-v5.json +114 -0
  48. package/registry/flutter-calls-v5.json +54 -0
  49. package/registry/flutter-v6.json +119 -0
  50. package/registry/ios-calls-v5.json +59 -0
  51. package/registry/ios-v5.json +97 -0
  52. package/registry/rn-calls-v5.json +59 -0
  53. package/registry/rn-v5.json +129 -0
  54. package/registry/sdk-android-v5.json +53 -0
  55. package/registry/sdk-jsv4.json +53 -0
  56. package/registry/web-calls-v5.json +54 -0
  57. package/registry/web-v7.json +99 -0
  58. package/skills/cometchat/SKILL.md +42 -2096
  59. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  60. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  66. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  67. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  68. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  69. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  70. package/skills/cometchat-android-v6-calls/SKILL.md +128 -411
  71. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  72. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  73. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  74. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  75. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  76. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  77. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  78. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  79. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  80. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  81. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  82. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  83. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  84. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  85. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  86. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  87. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  88. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  89. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  90. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  91. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  92. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  93. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  94. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  95. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  96. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  97. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  98. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  99. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  100. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  101. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  102. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  103. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  104. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  105. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  106. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  107. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  108. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  109. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  110. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  111. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  112. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  113. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  114. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  115. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  116. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  117. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  118. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  119. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  120. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  121. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  122. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  123. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  127. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -387
  128. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  129. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  130. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  131. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  132. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  133. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  134. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  135. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  136. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  137. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  138. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  139. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  140. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  141. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  142. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  143. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  144. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  145. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  146. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  147. package/skills/cometchat-ios-calls/SKILL.md +105 -511
  148. package/skills/cometchat-ios-components/SKILL.md +44 -834
  149. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  150. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  151. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  152. package/skills/cometchat-ios-core/references/install.md +23 -0
  153. package/skills/cometchat-ios-core/references/layout.md +186 -0
  154. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  155. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  156. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  157. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  158. package/skills/cometchat-ios-features/SKILL.md +29 -738
  159. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  160. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  161. package/skills/cometchat-ios-push/SKILL.md +24 -602
  162. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  163. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  164. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  165. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  166. package/skills/cometchat-onboarding/SKILL.md +89 -0
  167. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  168. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  169. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  170. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  171. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  172. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  173. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  174. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  175. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  176. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  177. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  178. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  179. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  180. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  181. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  182. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  183. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  184. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  185. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  186. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  187. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  188. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  189. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  190. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  191. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  192. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  193. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  194. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  195. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  196. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  198. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  199. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  200. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  201. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  202. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  203. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  204. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  205. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  206. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  207. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  208. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  209. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  210. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  211. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  212. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  213. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  214. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  215. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  216. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  217. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  218. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  219. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  220. package/test-suite/README.md +70 -0
  221. package/test-suite/catalogs/android-calls-v5.json +830 -0
  222. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  223. package/test-suite/catalogs/android-v6.json +1646 -0
  224. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  225. package/test-suite/catalogs/angular-v5.json +7587 -0
  226. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  227. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  228. package/test-suite/catalogs/flutter-v6.json +651 -0
  229. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  230. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  231. package/test-suite/catalogs/ios-v5.json +1383 -0
  232. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  233. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  234. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  235. package/test-suite/catalogs/rn-v5.json +449 -0
  236. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  237. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  238. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  239. package/test-suite/catalogs/web-calls-v5.json +195 -0
  240. package/test-suite/catalogs/web-v7.json +1243 -0
  241. package/test-suite/scripts/build-registry.mjs +113 -0
  242. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  243. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  244. package/test-suite/scripts/lint-skills.mjs +909 -0
  245. package/test-suite/scripts/measure-tokens.mjs +169 -0
  246. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  247. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  248. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  249. package/test-suite/scripts/verify-catalog.mjs +242 -0
  250. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  251. package/test-suite/scripts/verify-detection.mjs +178 -0
  252. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  253. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  254. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  255. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  256. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  257. package/test-suite/typecheck/angular-v5/package.json +21 -0
  258. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  259. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  260. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  261. package/test-suite/typecheck/web-v7/package.json +18 -0
  262. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  263. package/bin/install.js +0 -1003
  264. package/skills/.claude-plugin/marketplace.json +0 -86
  265. package/skills/cometchat/references/asking-questions.md +0 -48
  266. package/skills/cometchat-a11y/SKILL.md +0 -477
  267. package/skills/cometchat-android-v5/SKILL.md +0 -121
  268. package/skills/cometchat-android-v5-calls/SKILL.md +0 -427
  269. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  270. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  271. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  272. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  273. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  274. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  275. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  276. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  277. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  278. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  279. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  280. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  281. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  282. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  283. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  284. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  285. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  286. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  287. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  288. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  289. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  290. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  291. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  292. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  293. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  294. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  295. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  296. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  297. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  298. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  299. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  300. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  301. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  302. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  303. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  304. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  305. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  306. package/skills/cometchat-android-v6/SKILL.md +0 -108
  307. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  308. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  309. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  310. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  311. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  312. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  313. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  314. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  315. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  316. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  317. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  318. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  319. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  320. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  321. package/skills/cometchat-angular-calls/SKILL.md +0 -378
  322. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  323. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  324. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  325. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  326. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  327. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  328. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  329. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  330. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  331. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  332. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  333. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  334. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  335. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  336. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  337. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  338. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  339. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  340. package/skills/cometchat-angular-components/SKILL.md +0 -235
  341. package/skills/cometchat-angular-core/SKILL.md +0 -386
  342. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  343. package/skills/cometchat-angular-features/SKILL.md +0 -329
  344. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  345. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  346. package/skills/cometchat-angular-production/SKILL.md +0 -564
  347. package/skills/cometchat-angular-push/SKILL.md +0 -389
  348. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  349. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  350. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  351. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  352. package/skills/cometchat-calls/SKILL.md +0 -364
  353. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  354. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  355. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  356. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  357. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  358. package/skills/cometchat-components/SKILL.md +0 -1142
  359. package/skills/cometchat-core/SKILL.md +0 -1048
  360. package/skills/cometchat-customization/SKILL.md +0 -580
  361. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  362. package/skills/cometchat-features/SKILL.md +0 -861
  363. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  364. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -453
  365. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  366. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  367. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  368. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  369. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  370. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  371. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  372. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  373. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  374. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  375. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  376. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  377. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  378. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  379. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  380. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  381. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  382. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  383. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  384. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  385. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  386. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  387. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  388. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  389. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  390. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  391. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  392. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  393. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  394. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  395. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  396. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  397. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  398. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  399. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  400. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  401. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  402. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  403. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  404. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  405. package/skills/cometchat-i18n/SKILL.md +0 -419
  406. package/skills/cometchat-ios/SKILL.md +0 -325
  407. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -174
  408. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  409. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  410. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  411. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  412. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  413. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  414. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  415. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  416. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  417. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  418. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  419. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  420. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  421. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  422. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  423. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  424. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  425. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  426. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  427. package/skills/cometchat-ios-production/SKILL.md +0 -738
  428. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  429. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  430. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  431. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  432. package/skills/cometchat-native-calls/SKILL.md +0 -669
  433. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  434. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  435. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  436. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  437. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  438. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  439. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  440. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  441. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  442. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  443. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  444. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  445. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  446. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  447. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  448. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  449. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  450. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  451. package/skills/cometchat-native-components/SKILL.md +0 -628
  452. package/skills/cometchat-native-core/SKILL.md +0 -679
  453. package/skills/cometchat-native-customization/SKILL.md +0 -716
  454. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  455. package/skills/cometchat-native-features/SKILL.md +0 -638
  456. package/skills/cometchat-native-placement/SKILL.md +0 -509
  457. package/skills/cometchat-native-production/SKILL.md +0 -700
  458. package/skills/cometchat-native-push/SKILL.md +0 -594
  459. package/skills/cometchat-native-testing/SKILL.md +0 -582
  460. package/skills/cometchat-native-theming/SKILL.md +0 -681
  461. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  462. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  463. package/skills/cometchat-placement/SKILL.md +0 -1360
  464. package/skills/cometchat-production/SKILL.md +0 -1027
  465. package/skills/cometchat-react-calls/SKILL.md +0 -749
  466. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  467. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  468. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  469. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  470. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  471. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  472. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  473. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  474. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  475. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  476. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  477. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  478. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  479. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  480. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  481. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  482. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  483. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  484. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  485. package/skills/cometchat-react-push/SKILL.md +0 -634
  486. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  487. package/skills/cometchat-react-testing/SKILL.md +0 -413
  488. package/skills/cometchat-theming/SKILL.md +0 -498
  489. 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
-