@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,161 +0,0 @@
1
- # Idle timeout on Angular
2
-
3
- Same SDK API as web. Angular-specific delta: NgZone wrap on the timeout event + Angular Material dialog or custom modal for the prompt.
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/javascript/idle-timeout
6
- **Read first:** `cometchat-react-calls/references/idle-timeout.md` — settings + archetype timeouts + custom prompt pattern.
7
-
8
- ---
9
-
10
- ## SDK API
11
-
12
- The idle timeout is configured on the **`SessionSettings` object** passed to
13
- `joinSession(callToken, sessionSettings, container)`, NOT on the builder.
14
-
15
- - The builder (`CallSettingsBuilder`) has a single `setIdleTimeoutPeriod(ms)` method — there is
16
- no `setIdleTimeoutPeriodBeforePrompt` / `setIdleTimeoutPeriodAfterPrompt` on it.
17
- - The before/after split exists ONLY as `SessionSettings` object fields:
18
- `idleTimeoutPeriodBeforePrompt` and `idleTimeoutPeriodAfterPrompt`.
19
- - There is no `setSessionID()` on the builder — the session is identified by the call token
20
- produced via `CometChatCalls.generateToken(sessionId, authToken)`.
21
-
22
- ```ts
23
- // 1. token carries the session id
24
- const { token } = await CometChatCalls.generateToken(sessionId, authToken);
25
-
26
- // 2. idle timeout lives on the SessionSettings object
27
- const sessionSettings = {
28
- sessionType: "VIDEO",
29
- idleTimeoutPeriodBeforePrompt: 60_000,
30
- idleTimeoutPeriodAfterPrompt: 120_000,
31
- } as const;
32
-
33
- // addEventListener returns an unsubscribe fn — capture it (there is no removeEventListener).
34
- const off = CometChatCalls.addEventListener("onSessionTimedOut", () => {
35
- this.zone.run(() => {
36
- this.router.navigate(["/"]);
37
- this.snackBar.open("Call ended due to inactivity", "Dismiss", { duration: 5000 });
38
- });
39
- });
40
-
41
- await CometChatCalls.joinSession(token, sessionSettings, container);
42
- // later: off();
43
- ```
44
-
45
- `NgZone.run` wrap is mandatory — without it, the navigation + snackbar don't fire because the SDK callback is outside Angular's zone.
46
-
47
- ---
48
-
49
- ## Service-level wiring
50
-
51
- ```ts
52
- // services/idle-timeout.service.ts
53
- import { Injectable, NgZone } from "@angular/core";
54
- import { Router } from "@angular/router";
55
- import { MatSnackBar } from "@angular/material/snack-bar";
56
- import { CometChatCalls } from "@cometchat/calls-sdk-javascript";
57
-
58
- @Injectable({ providedIn: "root" })
59
- export class IdleTimeoutService {
60
- // addEventListener returns the unsubscribe fn — there is no CometChatCalls.removeEventListener.
61
- private off?: () => void;
62
-
63
- constructor(
64
- private zone: NgZone,
65
- private router: Router,
66
- private snackBar: MatSnackBar,
67
- ) {}
68
-
69
- attachToCallSession() {
70
- this.off = CometChatCalls.addEventListener("onSessionTimedOut", () => {
71
- this.zone.run(() => {
72
- this.router.navigate(["/"]);
73
- this.snackBar.open("Call ended due to inactivity", "Dismiss", { duration: 5000 });
74
- });
75
- });
76
- }
77
-
78
- detach() {
79
- this.off?.();
80
- this.off = undefined;
81
- }
82
- }
83
- ```
84
-
85
- Call `attachToCallSession()` from the OngoingCallComponent's `ngOnInit`, `detach()` from `ngOnDestroy`.
86
-
87
- ---
88
-
89
- ## Custom prompt — Angular Material Dialog
90
-
91
- ```ts
92
- import { MatDialog } from "@angular/material/dialog";
93
- import { Component } from "@angular/core";
94
-
95
- @Component({
96
- template: `
97
- <h2 mat-dialog-title>Still there?</h2>
98
- <mat-dialog-content>
99
- You're alone in this call. It'll end in 60 seconds.
100
- </mat-dialog-content>
101
- <mat-dialog-actions>
102
- <button mat-button [mat-dialog-close]="'stay'">Stay</button>
103
- <button mat-button color="warn" [mat-dialog-close]="'end'">End now</button>
104
- </mat-dialog-actions>
105
- `,
106
- })
107
- export class IdleTimeoutDialogComponent {}
108
-
109
- // Use:
110
- @Component({ /* ... */ })
111
- export class OngoingCallComponent {
112
- constructor(private dialog: MatDialog) {}
113
-
114
- showIdlePrompt() {
115
- const ref = this.dialog.open(IdleTimeoutDialogComponent, {
116
- disableClose: true,
117
- ariaLabel: "Idle timeout warning",
118
- });
119
- ref.afterClosed().subscribe(result => {
120
- if (result === "end") {
121
- CometChatCalls.leaveSession(); // v5 canonical (endSession is deprecated)
122
- }
123
- // 'stay' → reset your custom timer (see Pattern A in web ref)
124
- });
125
- }
126
- }
127
- ```
128
-
129
- `disableClose: true` prevents the user from dismissing via Esc/backdrop — they must explicitly choose. `ariaLabel` for screen readers.
130
-
131
- ---
132
-
133
- ## Anti-patterns
134
-
135
- Web sister reference rules apply, plus Angular-specific:
136
-
137
- 1. **No `NgZone.run` wrap on the listener.** Navigation + snackbar fire silently because change detection doesn't trigger.
138
- 2. **`MatDialog` opened from `setTimeout` callback** without zone wrap. Dialog opens but template doesn't render.
139
- 3. **Subscription leaks** — `dialog.afterClosed()` returns an Observable; if you don't unsubscribe (or use `take(1)` / `first()`), it leaks across calls.
140
- 4. **Service NOT provided in `root`.** Lazy-loaded → listener attaches late.
141
-
142
- ---
143
-
144
- ## Verification checklist
145
-
146
- - [ ] `IdleTimeoutService` provided in root
147
- - [ ] Listener wraps in `NgZone.run`
148
- - [ ] Service `attachToCallSession()` called from OngoingCall `ngOnInit`
149
- - [ ] Service `detach()` called from `ngOnDestroy`
150
- - [ ] Dialog uses `disableClose: true` + `ariaLabel`
151
- - [ ] `dialog.afterClosed()` subscription doesn't leak (use `first()` or unsubscribe)
152
- - [ ] Browser smoke: 2 tabs in call, hangup one → other shows snackbar after configured delay
153
-
154
- ---
155
-
156
- ## Pointers
157
-
158
- - `cometchat-react-calls/references/idle-timeout.md` — sister reference
159
- - `cometchat-angular-calls` SKILL.md
160
- - `references/ngzone-and-async-callbacks.md` — NgZone primer
161
- - Canonical docs: https://www.cometchat.com/docs/calls/javascript/idle-timeout
@@ -1,148 +0,0 @@
1
- # In-call chat on Angular
2
-
3
- Same SDK API as web. Angular wraps panel state in a service + uses Angular Material's `MatSidenav` for the side-drawer chat panel pattern.
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/javascript/in-call-chat
6
- **Read first:** `cometchat-react-calls/references/in-call-chat.md` — group-as-session architecture, anti-patterns.
7
-
8
- ---
9
-
10
- ## SDK + service
11
-
12
- ```ts
13
- import { Injectable, NgZone } from "@angular/core";
14
- import { BehaviorSubject } from "rxjs";
15
- import { CometChatCalls } from "@cometchat/calls-sdk-javascript";
16
- import { CometChat } from "@cometchat/chat-sdk-javascript";
17
-
18
- @Injectable({ providedIn: "root" })
19
- export class InCallChatService {
20
- readonly open$ = new BehaviorSubject<boolean>(false);
21
- readonly unread$ = new BehaviorSubject<number>(0);
22
-
23
- constructor(private zone: NgZone) {
24
- CometChatCalls.addEventListener("onChatButtonClicked", () => {
25
- this.zone.run(() => this.open$.next(true));
26
- });
27
- }
28
-
29
- async ensureGroup(sessionId: string): Promise<CometChat.Group> {
30
- try {
31
- return await CometChat.getGroup(sessionId);
32
- } catch {
33
- const group = new CometChat.Group(sessionId, `Call ${sessionId}`, CometChat.GROUP_TYPE.PUBLIC);
34
- return await CometChat.createGroup(group);
35
- }
36
- }
37
-
38
- async joinGroup(sessionId: string): Promise<void> {
39
- await CometChat.joinGroup(sessionId, CometChat.GROUP_TYPE.PUBLIC, "");
40
- }
41
-
42
- trackUnread(sessionId: string): void {
43
- const listenerId = `in-call-chat-${sessionId}`;
44
- const listener = new CometChat.MessageListener({
45
- onTextMessageReceived: (msg: CometChat.TextMessage) => {
46
- if (
47
- msg.getReceiverType() === CometChat.RECEIVER_TYPE.GROUP &&
48
- msg.getReceiverId() === sessionId &&
49
- !this.open$.value
50
- ) {
51
- this.zone.run(() => {
52
- const next = this.unread$.value + 1;
53
- this.unread$.next(next);
54
- CometChatCalls.setChatButtonUnreadCount(next);
55
- });
56
- }
57
- },
58
- });
59
- CometChat.addMessageListener(listenerId, listener);
60
- }
61
-
62
- open(): void {
63
- this.open$.next(true);
64
- this.unread$.next(0);
65
- CometChatCalls.setChatButtonUnreadCount(0);
66
- }
67
-
68
- close(): void {
69
- this.open$.next(false);
70
- }
71
- }
72
- ```
73
-
74
- ---
75
-
76
- ## Panel component (MatSidenav)
77
-
78
- ```ts
79
- @Component({
80
- selector: "app-in-call-chat",
81
- template: `
82
- <mat-sidenav-container [hasBackdrop]="false">
83
- <mat-sidenav
84
- #drawer
85
- position="end"
86
- mode="side"
87
- [opened]="open$ | async"
88
- (closed)="svc.close()"
89
- role="dialog"
90
- aria-label="In-call chat"
91
- >
92
- <ng-container *ngIf="group">
93
- <cometchat-message-list [group]="group" [hideReplyInThreadOption]="true"></cometchat-message-list>
94
- <cometchat-message-composer [group]="group"></cometchat-message-composer>
95
- </ng-container>
96
- </mat-sidenav>
97
- <mat-sidenav-content>
98
- <!-- call surface goes here -->
99
- <ng-content></ng-content>
100
- </mat-sidenav-content>
101
- </mat-sidenav-container>
102
- `,
103
- })
104
- export class InCallChatComponent implements OnInit {
105
- @Input() sessionId!: string;
106
- open$ = this.svc.open$;
107
- group?: CometChat.Group;
108
-
109
- constructor(public svc: InCallChatService) {}
110
-
111
- async ngOnInit() {
112
- this.group = await this.svc.ensureGroup(this.sessionId);
113
- this.svc.trackUnread(this.sessionId);
114
- }
115
- }
116
- ```
117
-
118
- `mode="side"` makes the drawer slide out without an overlay backdrop — call view stays visible. `[hasBackdrop]="false"` doubles down.
119
-
120
- ---
121
-
122
- ## Anti-patterns
123
-
124
- Web sister rules apply, plus Angular-specific:
125
-
126
- 1. **No `NgZone.run` wrap on `onChatButtonClicked`.** Drawer doesn't open in OnPush components.
127
- 2. **`MatSidenav` `mode="over"`.** Backdrop blocks the call. Use `mode="side"`.
128
- 3. **Service NOT in `root`.** Lazy module → button events miss.
129
-
130
- ---
131
-
132
- ## Verification checklist
133
-
134
- - [ ] `InCallChatService` provided in root
135
- - [ ] `NgZone.run` wraps the chat-button event
136
- - [ ] `MatSidenav` uses `mode="side"` + `hasBackdrop="false"`
137
- - [ ] Group resolved on `ngOnInit`
138
- - [ ] Unread badge updates via service, clears on open
139
- - [ ] Browser smoke: 2 tabs, chat works, unread badge increments
140
-
141
- ---
142
-
143
- ## Pointers
144
-
145
- - `cometchat-react-calls/references/in-call-chat.md` — sister web reference
146
- - `cometchat-angular-calls` SKILL.md
147
- - `references/ngzone-and-async-callbacks.md`
148
- - Canonical docs: https://www.cometchat.com/docs/calls/javascript/in-call-chat
@@ -1,205 +0,0 @@
1
- # Lazy loading + calls in Angular — pitfalls
2
-
3
- Calls have a tighter relationship with bootstrap than chat does. Lazy-loading the calls module breaks several invariants.
4
-
5
- ---
6
-
7
- ## The core problem
8
-
9
- `APP_INITIALIZER` runs at app bootstrap, before any router activates. The Calls SDK init must complete BEFORE incoming calls can fire — otherwise the listener doesn't exist when the first call rings.
10
-
11
- If you lazy-load the calls module:
12
-
13
- ```ts
14
- // app-routing.module.ts
15
- { path: "calls", loadChildren: () => import("./calls/calls.module").then(m => m.CallsModule) }
16
- ```
17
-
18
- Then `CallInitService` (which lives in `CallsModule`) doesn't exist at bootstrap. APP_INITIALIZER can't reference it. Two failure modes:
19
-
20
- 1. **Init never runs** — until the user navigates to `/calls`, the SDK is uninitialized. Incoming calls miss.
21
- 2. **Race condition** — user navigates to `/calls`, the lazy module loads, init runs, but a call had been incoming during the navigation gap. That call is lost.
22
-
23
- ---
24
-
25
- ## Fix: split the service from the component
26
-
27
- Keep `CallInitService` in `AppModule` (eager). Keep the call UI components in `CallsModule` (lazy).
28
-
29
- ```ts
30
- // app.module.ts (eager)
31
- @NgModule({
32
- providers: [
33
- CallInitService, // EAGER — service is at bootstrap
34
- {
35
- provide: APP_INITIALIZER,
36
- useFactory: (svc: CallInitService) => () => svc.init(),
37
- deps: [CallInitService],
38
- multi: true,
39
- },
40
- ],
41
- })
42
- export class AppModule {}
43
- ```
44
-
45
- ```ts
46
- // calls/calls.module.ts (lazy)
47
- @NgModule({
48
- declarations: [
49
- OngoingCallComponent,
50
- CallLogsComponent,
51
- CallButtonComponent,
52
- ],
53
- imports: [
54
- RouterModule.forChild([
55
- { path: "ongoing/:id", component: OngoingCallComponent, canDeactivate: [CallDeactivateGuard] },
56
- { path: "logs", component: CallLogsComponent },
57
- ]),
58
- ],
59
- })
60
- export class CallsModule {}
61
- ```
62
-
63
- The components reference `CallInitService` via DI; Angular finds it from the parent injector (AppModule).
64
-
65
- ---
66
-
67
- ## Pitfall 2: `<cometchat-incoming-call>` in a lazy module
68
-
69
- Incoming calls must ring on every screen — not just `/calls`. Mounting `<cometchat-incoming-call>` inside `CallsModule`'s components means:
70
-
71
- - User on `/dashboard` → no incoming-call listener → calls miss
72
- - User navigates to `/calls/logs` → listener mounts → calls now ring
73
- - User navigates back to `/dashboard` → listener unmounts → calls miss again
74
-
75
- **Fix:** mount `<cometchat-incoming-call>` in `AppComponent`'s template (the root of the application, NOT in any feature module):
76
-
77
- ```html
78
- <!-- app.component.html -->
79
- <cometchat-incoming-call></cometchat-incoming-call>
80
- <router-outlet></router-outlet>
81
- ```
82
-
83
- `AppModule` must import enough of `@cometchat/chat-uikit-angular` to render this selector — usually `CometChatUIKitModule.forRoot({...})`. Schemas option `CUSTOM_ELEMENTS_SCHEMA` works too.
84
-
85
- ---
86
-
87
- ## Pitfall 3: standalone components + lazy-loaded calls
88
-
89
- Angular 14+ standalone components don't have a parent `NgModule`. The DI tree is different — APP_INITIALIZER lives at the bootstrap providers level:
90
-
91
- ```ts
92
- // main.ts
93
- bootstrapApplication(AppComponent, {
94
- providers: [
95
- CallInitService, // root-provided — visible everywhere
96
- {
97
- provide: APP_INITIALIZER,
98
- useFactory: (svc: CallInitService) => () => svc.init(),
99
- deps: [CallInitService],
100
- multi: true,
101
- },
102
- provideRouter([
103
- // Lazy-loaded standalone routes
104
- { path: "calls/ongoing/:id", loadComponent: () => import("./calls/ongoing-call.component").then(m => m.OngoingCallComponent) },
105
- ]),
106
- ],
107
- });
108
- ```
109
-
110
- The lazy `loadComponent` works fine because `CallInitService` is at the root.
111
-
112
- `<cometchat-incoming-call>` is a standalone component too:
113
-
114
- ```ts
115
- // app.component.ts
116
- import { CometChatIncomingCallComponent } from "@cometchat/chat-uikit-angular";
117
-
118
- @Component({
119
- standalone: true,
120
- selector: "app-root",
121
- imports: [RouterOutlet, CometChatIncomingCallComponent],
122
- template: `
123
- <cometchat-incoming-call></cometchat-incoming-call>
124
- <router-outlet></router-outlet>
125
- `,
126
- })
127
- export class AppComponent {}
128
- ```
129
-
130
- (Verify the export name in your installed `@cometchat/chat-uikit-angular` version — may differ between minor releases.)
131
-
132
- ---
133
-
134
- ## Pitfall 4: SSR (Angular Universal)
135
-
136
- The Calls SDK uses browser-only APIs (`getUserMedia`, `RTCPeerConnection`). If your app uses Angular Universal, the calls service must NOT initialize on the server:
137
-
138
- ```ts
139
- import { isPlatformBrowser } from "@angular/common";
140
- import { Inject, PLATFORM_ID } from "@angular/core";
141
-
142
- @Injectable({ providedIn: "root" })
143
- export class CallInitService {
144
- constructor(@Inject(PLATFORM_ID) private platformId: object) {}
145
-
146
- async init(): Promise<void> {
147
- if (!isPlatformBrowser(this.platformId)) return; // skip on server
148
- // ... actual init
149
- }
150
- }
151
- ```
152
-
153
- Without this guard, the SSR build crashes with `ReferenceError: window is not defined` at boot.
154
-
155
- ---
156
-
157
- ## Pitfall 5: Multiple `APP_INITIALIZER`s
158
-
159
- If your project already uses `APP_INITIALIZER` for chat init, calls init goes alongside — not as a replacement:
160
-
161
- ```ts
162
- providers: [
163
- ChatInitService,
164
- CallInitService,
165
- {
166
- provide: APP_INITIALIZER,
167
- useFactory: (chat: ChatInitService) => () => chat.init(),
168
- deps: [ChatInitService],
169
- multi: true, // ← multi: true is critical
170
- },
171
- {
172
- provide: APP_INITIALIZER,
173
- useFactory: (calls: CallInitService) => () => calls.init(),
174
- deps: [CallInitService],
175
- multi: true,
176
- },
177
- ]
178
- ```
179
-
180
- Both register; both run before bootstrap. They run in registration order — chat first, then calls (matches rule 1.1's chat-init-before-calls-init).
181
-
182
- ---
183
-
184
- ## Pitfall 6: Forgetting the route deactivate guard for ongoing calls
185
-
186
- Without `CanDeactivate`, the user can route away mid-call and the call screen unmounts but the SDK session keeps running. Camera light stays on (rule 1.5 violation).
187
-
188
- ```ts
189
- // calls-routing.module.ts
190
- { path: "ongoing/:id", component: OngoingCallComponent, canDeactivate: [CallDeactivateGuard] }
191
- ```
192
-
193
- The guard is in `references/custom-ui.md`.
194
-
195
- ---
196
-
197
- ## Summary
198
-
199
- | Place | What goes here |
200
- |---|---|
201
- | `AppModule` (eager) | `CallInitService`, `APP_INITIALIZER`, `<cometchat-incoming-call>` |
202
- | `CallsModule` (lazy) | UI components (OngoingCall, CallLogs, CallButton), feature routes |
203
- | App root template | `<cometchat-incoming-call>` mounted above `<router-outlet>` |
204
- | Routes | `canDeactivate` guard on the ongoing-call route |
205
- | SSR | `isPlatformBrowser` check inside init service |
@@ -1,53 +0,0 @@
1
- # Calls SDK v4 → v5 migration (Angular)
2
-
3
- Angular ships the same `@cometchat/calls-sdk-javascript` as React/Vue, so the migration steps are identical. Angular-specific deltas: NgZone wrapping for the new event listeners.
4
-
5
- **Read first:** `cometchat-react-calls/references/migration-v4-to-v5.md` — full step-by-step (init, login, settings, events, methods).
6
-
7
- ---
8
-
9
- ## Step 1 — Bump the package
10
-
11
- ```bash
12
- npm install @cometchat/calls-sdk-javascript@5
13
- ```
14
-
15
- ---
16
-
17
- ## Angular-specific delta: NgZone for new event listeners
18
-
19
- When migrating from `OngoingCallListener` to `addEventListener`, Angular needs `NgZone.run` to update OnPush components — listeners fire outside Angular's zone:
20
-
21
- ```ts
22
- @Injectable({ providedIn: "root" })
23
- export class CallEventService {
24
- constructor(private zone: NgZone) {
25
- // v4 — listener was inside CometChatCalls.OngoingCallListener; if your
26
- // current code already wraps callbacks with NgZone.run, keep that.
27
- // v5 — addEventListener fires outside zone:
28
- CometChatCalls.addEventListener("onSessionLeft", () => {
29
- this.zone.run(() => this.onSessionLeft$.next());
30
- });
31
- CometChatCalls.addEventListener("onParticipantJoined", (p) => {
32
- this.zone.run(() => this.participantJoined$.next(p));
33
- });
34
- }
35
- }
36
- ```
37
-
38
- If you skip the `NgZone.run` wrap, OnPush components don't re-render when call state changes.
39
-
40
- ---
41
-
42
- ## Verification checklist
43
-
44
- - [ ] All v5 event listeners wrapped in `NgZone.run`
45
- - [ ] All sister checks from the canonical migration guide
46
-
47
- ---
48
-
49
- ## Pointers
50
-
51
- - Canonical migration: `cometchat-react-calls/references/migration-v4-to-v5.md`
52
- - Canonical Web Push event handling: `references/ngzone-and-async-callbacks.md`
53
- - https://www.cometchat.com/docs/calls/javascript/migration-guide-v5