@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,210 +0,0 @@
1
- # CometChat Calls Flutter SDK v4 → v5 migration (raw SDK)
2
-
3
- Moving the **Calls SDK** from 4.x to **`cometchat_calls_sdk ^5.0.2`** on the Flutter V5 (GetX) chat UI Kit — per the product decision that all families use the V5 calls SDK.
4
-
5
- **Important:** This migrates the **Calls SDK** (4.x → 5.x), not the chat UI Kit cohort (V5 GetX → V6 Bloc, which is `cometchat-flutter-v6-migration`). The chat UI Kit stays on V5 GetX; only the calls layer changes.
6
-
7
- > **Why you can't just bump `cometchat_calls_uikit`.** The latest `cometchat_calls_uikit` (5.0.16) still transitively pins `cometchat_calls_sdk ^4.2.2`, and its prebuilt call widgets (`CometChatCallButtons`/`CometChatIncomingCall`/`CometChatOutgoingCall`/`CometChatOngoingCall`) are compiled against the 4.x API. To run the 5.x calls SDK you **drop `cometchat_calls_uikit`** and integrate the **raw `cometchat_calls_sdk ^5.0.2`** directly with a custom call surface.
8
-
9
- **Substrate of record:** `~/.pub-cache/hosted/pub.dev/cometchat_calls_sdk-5.0.2/lib/`
10
- **Canonical docs:** https://www.cometchat.com/docs/calls/flutter/migration-guide-v5
11
-
12
- ---
13
-
14
- ## Step 1 — Swap the dependency
15
-
16
- ```diff
17
- # pubspec.yaml
18
- dependencies:
19
- cometchat_chat_uikit: ^5.2.14 # chat UI Kit stays on V5 (GetX)
20
- - cometchat_calls_uikit: ^5.0.15 # 4.x-bound — remove
21
- + cometchat_calls_sdk: ^5.0.2 # raw 5.x calls SDK (direct dependency)
22
- ```
23
-
24
- ```bash
25
- flutter pub get
26
- cd ios && pod install # if you have iOS
27
- ```
28
-
29
- ---
30
-
31
- ## Step 2 — Migrate init
32
-
33
- `init` takes a `CallAppSettings` built via `CallAppSettingBuilder` (`src/builder/call_app_settings_request.dart:36`) and runs with `onSuccess`/`onError` callbacks (`cometchatcalls.dart:172`).
34
-
35
- ```diff
36
- - final callSettings = CallAppSettingsBuilder()
37
- - ..setAppId('APP_ID')
38
- - ..setRegion('REGION');
39
- - await CometChatCalls.init(callSettings);
40
-
41
- + final callAppSettings = (CallAppSettingBuilder()
42
- + ..appId = 'APP_ID'
43
- + ..region = 'REGION')
44
- + .build();
45
- + CometChatCalls.init(
46
- + callAppSettings,
47
- + onSuccess: (String s) {},
48
- + onError: (CometChatCallsException e) {},
49
- + );
50
- ```
51
-
52
- ---
53
-
54
- ## Step 3 — Add the 5.x Calls SDK login
55
-
56
- 4.x had no calls login (it took a per-call auth token). 5.x has its own login that caches the token internally (`cometchatcalls.dart:316`).
57
-
58
- ```dart
59
- // After CometChat.login completes:
60
- final authToken = await CometChat.getUserAuthToken(); // static; no User.getAuthToken() method
61
- if (authToken != null) {
62
- CometChatCalls.loginWithAuthToken(
63
- authToken: authToken,
64
- onSuccess: (user) {},
65
- onError: (CometChatCallsException e) {},
66
- );
67
- }
68
- ```
69
-
70
- ---
71
-
72
- ## Step 4 — Migrate session settings
73
-
74
- `SessionSettingsBuilder` replaces `CallSettingsBuilder` (the latter is `@Deprecated`, `src/builder/call_settings.dart:209`). Methods are chainable / cascade setters (`src/builder/session_settings.dart`).
75
-
76
- ```diff
77
- - final callSettings = (CallSettingsBuilder()
78
- - ..setSessionType(SessionType.video)
79
- - ..startWithAudioMuted(false)
80
- - ..showRecordingButton(true))
81
- - .build();
82
-
83
- + final sessionSettings = (SessionSettingsBuilder()
84
- + ..setType(SessionType.video) // session_settings.dart:197
85
- + ..startAudioMuted(false) // :173
86
- + ..startVideoPaused(false) // :167
87
- + ..setLayout(LayoutType.tile) // :179
88
- + ..hideRecordingButton(false)) // :227 (INVERTED sense vs show*)
89
- + .build();
90
- ```
91
-
92
- ---
93
-
94
- ## Step 5 — Migrate the listener to the 5 split listeners
95
-
96
- The single `CometChatCallsEventsListener` is `@Deprecated` (`src/listener/cometchat_calls_events_listener.dart:16`). 5.x splits events across `SessionStatusListeners`, `ParticipantEventListeners`, `MediaEventListeners`, `ButtonClickListeners`, `LayoutListeners` — registered on `CallSession.getInstance()` (after `joinSession.onSuccess`).
97
-
98
- ```diff
99
- - class MyEvents implements CometChatCallsEventsListener {
100
- - @override
101
- - void onCallEnded() { /* ... */ }
102
- - @override
103
- - void onUserJoined(RTCUser user) { /* ... */ }
104
- - // ...
105
- - }
106
- - CometChatCalls.addCallsEventListeners('id', MyEvents());
107
-
108
- + class MyEvents implements SessionStatusListeners, ParticipantEventListeners {
109
- + @override
110
- + void onSessionLeft() { /* was onCallEnded */ } // session_status_listeners.dart:10
111
- + @override
112
- + void onParticipantJoined(Participant p) { /* was onUserJoined */ } // participant_event_listeners.dart:12
113
- + @override
114
- + void onParticipantLeft(Participant p) { /* was onUserLeft */ } // :15
115
- + // ... remaining interface methods (no-ops or pass-through)
116
- + }
117
- +
118
- + // inside joinSession.onSuccess:
119
- + final events = MyEvents();
120
- + CallSession.getInstance()?.addSessionStatusListener(events); // call_session.dart:66
121
- + CallSession.getInstance()?.addParticipantEventListener(events); // :74
122
- +
123
- + @override
124
- + void dispose() {
125
- + CallSession.getInstance()?.removeSessionStatusListener(events);
126
- + CallSession.getInstance()?.removeParticipantEventListener(events);
127
- + super.dispose();
128
- + }
129
- ```
130
-
131
- ---
132
-
133
- ## Step 6 — Start/join + control method renames + receiver shift
134
-
135
- The two-step `generateToken` + `startSession` collapses into a single `joinSession` (`cometchatcalls.dart:735`). In-call controls move from static methods on `CometChatCalls` to **instance methods on `CallSession`** (the singleton via `CallSession.getInstance()`).
136
-
137
- ```diff
138
- // start the session
139
- - CometChatCalls.generateToken(sessionId, authToken, onSuccess: (t) {
140
- - CometChatCalls.startSession(t.token!, callSettings, onSuccess: (w) {}, onError: (e) {});
141
- - }, onError: (e) {});
142
- + CometChatCalls.joinSession(
143
- + sessionId: sessionId, // SDK mints the call token internally
144
- + sessionSettings: sessionSettings,
145
- + onSuccess: (Widget? w) {},
146
- + onError: (CometChatCallsException e) {},
147
- + );
148
-
149
- // teardown — receiver changes from CometChatCalls (static) to CallSession (singleton)
150
- - CometChatCalls.endSession(onSuccess: (_) {}, onError: (e) {})
151
- + await CallSession.getInstance()?.leaveSession() // call_session.dart:272
152
-
153
- // media controls — same receiver shift, now no-arg
154
- - CometChatCalls.muteAudio()
155
- + CallSession.getInstance()?.muteAudio() // call_session.dart:131
156
- + CallSession.getInstance()?.unMuteAudio() // :145
157
- - CometChatCalls.pauseVideo() / resumeVideo()
158
- + CallSession.getInstance()?.pauseVideo() / resumeVideo() // :168 / :182
159
-
160
- // layout — also moves to the instance (NOT static in 5.x)
161
- - CometChatCalls.setLayout(CallLayout.spotlight)
162
- + CallSession.getInstance()?.setLayout(LayoutType.spotlight) // :394
163
- ```
164
-
165
- **`CallSession.getInstance()` returns `CallSession?` (nullable)** — null when there's no active session. Use `?.` to safely chain.
166
-
167
- ---
168
-
169
- ## Step 7 — GetX state preservation
170
-
171
- If you use GetX controllers around the calls (per `cometchat-flutter-v5-calls/SKILL.md`), the state shape doesn't change — only the underlying SDK calls. Sample diff in a GetX controller:
172
-
173
- ```diff
174
- class CallController extends GetxController {
175
- void startCall(String sessionId) async {
176
- - await CometChatCalls.startSession(callToken, settings: callSettings);
177
- + CometChatCalls.joinSession(sessionId: sessionId, sessionSettings: sessionSettings,
178
- + onSuccess: (w) {}, onError: (e) {});
179
- }
180
-
181
- void endCall() async {
182
- - CometChatCalls.endSession();
183
- + await CallSession.getInstance()?.leaveSession();
184
- }
185
- }
186
- ```
187
-
188
- ---
189
-
190
- ## Verification checklist
191
-
192
- - [ ] `pubspec.yaml` lists `cometchat_calls_sdk: ^5.0.2` and NO `cometchat_calls_uikit`
193
- - [ ] `flutter pub get` + `pod install` succeed
194
- - [ ] `CometChatCalls.loginWithAuthToken(authToken:)` called after `CometChat.login`
195
- - [ ] `CallSettingsBuilder` replaced with `SessionSettingsBuilder`
196
- - [ ] Single `CometChatCallsEventsListener` replaced with the 5 split listeners on `CallSession.getInstance()`
197
- - [ ] `generateToken` + `startSession` collapsed into `joinSession(sessionId:, sessionSettings:, ...)`
198
- - [ ] In-call controls + `leaveSession` moved to `CallSession.getInstance()?.X()`
199
- - [ ] Prebuilt `cometchat_calls_uikit` call widgets removed; custom call surface in place
200
- - [ ] Real-device smoke: iOS + Android, incoming/outgoing/mute/layout/leave
201
-
202
- ---
203
-
204
- ## Pointers
205
-
206
- - Canonical migration: https://www.cometchat.com/docs/calls/flutter/migration-guide-v5
207
- - `cometchat-flutter-v5-calls/SKILL.md` — Flutter calls architecture on the 5.x SDK (GetX patterns)
208
- - `cometchat-flutter-v5-calls/references/call-session.md` — canonical 5.x SDK API surface
209
- - `cometchat-flutter-v6-calls/` — V6 cohort (Bloc) on the SAME 5.0.2 calls SDK
210
- ```
@@ -1,255 +0,0 @@
1
- # Raise hand on Flutter (UIKit V5, GetX-based)
2
-
3
- Same SDK conceptual API as web/native. Flutter V5 uses GetX for state management — the canonical pattern is a `GetxController` that wraps the call event listener and publishes raised-hand state via `Rx<List<RaisedParticipant>>`.
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/flutter/raise-hand
6
- **Read first:** `cometchat-react-calls/references/raise-hand.md` — UX shape + anti-patterns are identical; this is the V5 GetX-specific wiring.
7
-
8
- ---
9
-
10
- ## SDK API
11
-
12
- Raise/lower hand are **instance methods on the `CallSession` singleton**, NOT static on `CometChatCalls` (`cometchat_calls_sdk-5.0.2` `src/call_session.dart:292,306`). Participant hand events arrive via `ParticipantEventListeners`, registered through `CallSession.getInstance()?.addParticipantEventListener(...)` (`src/call_session.dart:74`).
13
-
14
- ```dart
15
- import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';
16
-
17
- // Local user
18
- CallSession.getInstance()?.raiseHand(); // call_session.dart:292
19
- CallSession.getInstance()?.lowerHand(); // call_session.dart:306
20
-
21
- // Listener — implement the split ParticipantEventListeners interface
22
- class HandListener implements ParticipantEventListeners {
23
- @override
24
- void onParticipantHandRaised(Participant participant) { // participant_event_listeners.dart:30
25
- // participant.uid, participant.name (both nullable)
26
- }
27
-
28
- @override
29
- void onParticipantHandLowered(Participant participant) { // :33
30
- // ...
31
- }
32
- // ... other ParticipantEventListeners methods (no-ops or pass-through)
33
- }
34
-
35
- // Register on the session singleton (inside joinSession.onSuccess):
36
- CallSession.getInstance()?.addParticipantEventListener(HandListener()); // :74
37
-
38
- // Settings flag — method on the (non-deprecated) SessionSettingsBuilder.
39
- final settings = (SessionSettingsBuilder()
40
- ..hideRaiseHandButton(true)) // session_settings.dart:215
41
- .build();
42
- ```
43
-
44
- ---
45
-
46
- ## GetX controller
47
-
48
- ```dart
49
- import 'package:get/get.dart';
50
- import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';
51
-
52
- class RaisedParticipant {
53
- final String uid;
54
- final String name;
55
- final DateTime raisedAt;
56
- RaisedParticipant({required this.uid, required this.name, required this.raisedAt});
57
- }
58
-
59
- class RaiseHandController extends GetxController implements ParticipantEventListeners {
60
- final localRaised = false.obs;
61
- final raised = <RaisedParticipant>[].obs;
62
-
63
- void toggle() {
64
- if (localRaised.value) {
65
- CallSession.getInstance()?.lowerHand();
66
- } else {
67
- CallSession.getInstance()?.raiseHand();
68
- }
69
- localRaised.value = !localRaised.value;
70
- }
71
-
72
- @override
73
- void onParticipantHandRaised(Participant p) {
74
- // Participant.uid / .name are nullable in 5.x.
75
- final uid = p.uid ?? '';
76
- final entry = RaisedParticipant(
77
- uid: uid, name: p.name ?? uid, raisedAt: DateTime.now(),
78
- );
79
- raised.removeWhere((r) => r.uid == uid);
80
- raised.add(entry);
81
- raised.sort((a, b) => a.raisedAt.compareTo(b.raisedAt));
82
- }
83
-
84
- @override
85
- void onParticipantHandLowered(Participant p) {
86
- raised.removeWhere((r) => r.uid == (p.uid ?? ''));
87
- }
88
-
89
- // ... implement other ParticipantEventListeners methods (no-ops or pass-through)
90
- }
91
- ```
92
-
93
- `.obs` is GetX's reactive marker. UI rebuilds automatically when these mutate.
94
-
95
- ---
96
-
97
- ## Toggle button widget
98
-
99
- ```dart
100
- class RaiseHandButton extends StatelessWidget {
101
- const RaiseHandButton({super.key});
102
-
103
- @override
104
- Widget build(BuildContext context) {
105
- final ctrl = Get.find<RaiseHandController>();
106
- return Obx(() => GestureDetector(
107
- onTap: () {
108
- ctrl.toggle();
109
- // Announce for screen readers
110
- SemanticsService.announce(
111
- ctrl.localRaised.value ? 'Hand raised' : 'Hand lowered',
112
- TextDirection.ltr,
113
- );
114
- },
115
- child: Semantics(
116
- button: true,
117
- selected: ctrl.localRaised.value,
118
- label: ctrl.localRaised.value ? 'Lower hand' : 'Raise hand',
119
- child: Container(
120
- padding: const EdgeInsets.all(12),
121
- decoration: BoxDecoration(
122
- color: ctrl.localRaised.value
123
- ? const Color(0xFFFFD60A)
124
- : Colors.white24,
125
- borderRadius: BorderRadius.circular(32),
126
- ),
127
- child: Row(
128
- children: [
129
- const Text('✋'),
130
- const SizedBox(width: 4),
131
- Text(ctrl.localRaised.value ? 'Lower' : 'Raise'),
132
- ],
133
- ),
134
- ),
135
- ),
136
- ));
137
- }
138
- }
139
- ```
140
-
141
- `SemanticsService.announce` is the Flutter equivalent of `aria-live` / `UIAccessibility.post(.announcement, ...)` — TalkBack and VoiceOver pick up the announcement.
142
-
143
- `Semantics` wrapper sets `button: true`, `selected:`, `label:` — these map to platform a11y conventions.
144
-
145
- ---
146
-
147
- ## Raised-hands sheet (DraggableScrollableSheet)
148
-
149
- ```dart
150
- class RaisedHandsSheet extends StatelessWidget {
151
- const RaisedHandsSheet({super.key});
152
-
153
- @override
154
- Widget build(BuildContext context) {
155
- final ctrl = Get.find<RaiseHandController>();
156
- return DraggableScrollableSheet(
157
- initialChildSize: 0.1,
158
- minChildSize: 0.1,
159
- maxChildSize: 0.5,
160
- builder: (context, scrollController) => Container(
161
- decoration: const BoxDecoration(
162
- color: Colors.white,
163
- borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
164
- ),
165
- child: Obx(() => ListView(
166
- controller: scrollController,
167
- padding: const EdgeInsets.all(16),
168
- children: [
169
- Text(
170
- 'Raised hands (${ctrl.raised.length})',
171
- style: const TextStyle(fontWeight: FontWeight.w600),
172
- ),
173
- const SizedBox(height: 8),
174
- for (final p in ctrl.raised)
175
- ListTile(
176
- leading: const Text('✋', style: TextStyle(fontSize: 20)),
177
- title: Text(p.name),
178
- trailing: Text(
179
- '${DateTime.now().difference(p.raisedAt).inSeconds}s ago',
180
- style: const TextStyle(color: Colors.grey),
181
- ),
182
- ),
183
- ],
184
- )),
185
- ),
186
- );
187
- }
188
- }
189
- ```
190
-
191
- ---
192
-
193
- ## Wiring to the call session
194
-
195
- ```dart
196
- RaiseHandController? _handCtrl;
197
-
198
- @override
199
- void initState() {
200
- super.initState();
201
- _handCtrl = Get.put(RaiseHandController());
202
- // NOTE: attach the listener inside joinSession.onSuccess (CallSession.getInstance()
203
- // is null until the session exists). If this widget is mounted only after the
204
- // session is live, attach here:
205
- CallSession.getInstance()?.addParticipantEventListener(_handCtrl!); // call_session.dart:74
206
- }
207
-
208
- @override
209
- void dispose() {
210
- if (_handCtrl != null) {
211
- CallSession.getInstance()?.removeParticipantEventListener(_handCtrl!); // call_session.dart:78
212
- }
213
- Get.delete<RaiseHandController>();
214
- super.dispose();
215
- }
216
- ```
217
-
218
- The 5.x SDK identifies listeners by object identity (a `Set`), not a string ID — keep the same controller instance you registered and pass it to `removeParticipantEventListener` on dispose.
219
-
220
- ---
221
-
222
- ## Anti-patterns
223
-
224
- Web sister reference rules apply, plus Flutter V5-specific:
225
-
226
- 1. **Forgetting `Get.delete<RaiseHandController>()` on dispose.** GetX retains the controller across navigation — listeners survive past the call view, fire stale events.
227
- 2. **`Get.put(RaiseHandController(), permanent: true)` for the call.** Lifetime is too long; controller survives logout. Use scoped `Get.put` without permanent.
228
- 3. **Skipping `Semantics` wrapper on the button.** TalkBack reads the GestureDetector as untyped — bad a11y.
229
- 4. **`Obx` rebuilding the entire widget tree** when only one `.obs` field changes. Wrap minimally — the `Obx` should hug only the reactive part.
230
- 5. **DraggableScrollableSheet without `initialChildSize` < `minChildSize`** — sheet pops above the screen on render, looks broken.
231
-
232
- ---
233
-
234
- ## Verification checklist
235
-
236
- - [ ] `RaiseHandController` is a `GetxController`
237
- - [ ] `localRaised` and `raised` are `.obs` reactive
238
- - [ ] `Obx` wraps only reactive parts of the UI
239
- - [ ] `Semantics` wrapper on toggle button with `button: true, selected:, label:`
240
- - [ ] `SemanticsService.announce` on toggle
241
- - [ ] Same controller instance registered via `CallSession.getInstance()?.addParticipantEventListener(ctrl)` and removed via `removeParticipantEventListener(ctrl)` on dispose
242
- - [ ] `Get.delete<RaiseHandController>()` in `dispose()`
243
- - [ ] `SessionSettingsBuilder()..hideRaiseHandButton(true)` if custom UI
244
- - [ ] Real-device smoke: 3 devices (mix of iOS + Android), raise from 2 → host sees both
245
- - [ ] TalkBack / VoiceOver announces "Hand raised" / "Hand lowered" on toggle
246
-
247
- ---
248
-
249
- ## Pointers
250
-
251
- - `cometchat-react-calls/references/raise-hand.md` — sister reference (UX shape)
252
- - `cometchat-flutter-v5-calls` SKILL.md — V5 hard rules + GetX scope rules
253
- - `cometchat-flutter-v6-calls/references/raise-hand.md` — V6 sibling (Bloc-based — different state shape)
254
- - `cometchat-a11y` — Flutter Semantics + SemanticsService
255
- - Canonical docs: https://www.cometchat.com/docs/calls/flutter/raise-hand
@@ -1,196 +0,0 @@
1
- # Ringing — call signaling with custom UI (Flutter V5 / GetX)
2
-
3
- Same SDK shape as web/RN. Flutter-specific deltas: GetX-controlled state, flutter_callkit_incoming for OS-level backgrounded UI, just_audio for foreground ringtone.
4
-
5
- **Read first:** `cometchat-react-calls/references/ringing-integration.md` — full architecture, hard rules.
6
-
7
- ---
8
-
9
- ## SDK API + GetX controller
10
-
11
- ```dart
12
- import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
13
- import 'package:cometchat_sdk/cometchat_sdk.dart'; // Call, CallListener (Chat SDK signaling)
14
-
15
- class CallSignalingController extends GetxController implements CallListener {
16
- final incoming = Rx<Call?>(null);
17
- final outgoing = Rx<Call?>(null);
18
- final activeSessionId = Rx<String?>(null);
19
-
20
- static const _listenerId = 'app';
21
-
22
- @override
23
- void onInit() {
24
- super.onInit();
25
- CometChat.addCallListener(_listenerId, this);
26
- }
27
-
28
- @override
29
- void onIncomingCallReceived(Call call) {
30
- incoming.value = call;
31
- }
32
-
33
- @override
34
- void onOutgoingCallAccepted(Call call) {
35
- outgoing.value = null;
36
- activeSessionId.value = call.sessionId;
37
- }
38
-
39
- @override
40
- void onOutgoingCallRejected(Call call) {
41
- outgoing.value = null;
42
- }
43
-
44
- @override
45
- void onIncomingCallCancelled(Call call) {
46
- incoming.value = null;
47
- }
48
-
49
- @override
50
- void onCallEndedMessageReceived(Call call) {
51
- incoming.value = null;
52
- outgoing.value = null;
53
- activeSessionId.value = null;
54
- }
55
-
56
- Future<void> initiate(String receiverUid, {String type = 'video'}) async {
57
- final call = Call(
58
- receiverUid: receiverUid,
59
- type: type == 'video' ? CometChatCallType.video : CometChatCallType.audio, // ctor param is `type`, not `callType`
60
- receiverType: CometChatReceiverType.user,
61
- );
62
- // initiateCall is void + callback: the Call comes back in onSuccess, not via await.
63
- CometChat.initiateCall(call,
64
- onSuccess: (Call result) => outgoing.value = result,
65
- onError: (CometChatException e) => debugPrint(e.message ?? ''));
66
- }
67
-
68
- Future<void> accept(Call call) async {
69
- // acceptCall takes the sessionID POSITIONALLY + onSuccess/onError; it returns void.
70
- CometChat.acceptCall(call.sessionId!,
71
- onSuccess: (Call result) {
72
- incoming.value = null;
73
- activeSessionId.value = result.sessionId;
74
- },
75
- onError: (CometChatException e) => debugPrint(e.message ?? ''));
76
- }
77
-
78
- Future<void> reject(Call call) async {
79
- // rejectCall: positional sessionID + status String + onSuccess/onError (void).
80
- CometChat.rejectCall(call.sessionId!, CometChatCallStatus.rejected,
81
- onSuccess: (Call result) => incoming.value = null,
82
- onError: (CometChatException e) => debugPrint(e.message ?? ''));
83
- }
84
-
85
- @override
86
- void onClose() {
87
- CometChat.removeCallListener(_listenerId);
88
- super.onClose();
89
- }
90
- }
91
- ```
92
-
93
- Initialize at app start via `Get.put(CallSignalingController(), permanent: true);` so the listener survives navigation.
94
-
95
- ---
96
-
97
- ## Incoming-call overlay
98
-
99
- ```dart
100
- class IncomingCallOverlay extends StatelessWidget {
101
- const IncomingCallOverlay({super.key});
102
-
103
- @override
104
- Widget build(BuildContext context) {
105
- final ctrl = Get.find<CallSignalingController>();
106
-
107
- return Obx(() {
108
- final call = ctrl.incoming.value;
109
- if (call == null) return const SizedBox.shrink();
110
-
111
- return Material(
112
- color: Colors.black.withOpacity(0.85),
113
- child: Center(
114
- child: Column(
115
- mainAxisSize: MainAxisSize.min,
116
- children: [
117
- CircleAvatar(
118
- radius: 60,
119
- backgroundImage: NetworkImage(call.callInitiator?.avatar ?? ''),
120
- ),
121
- const SizedBox(height: 16),
122
- Text(
123
- call.callInitiator?.name ?? 'Unknown',
124
- style: const TextStyle(color: Colors.white, fontSize: 24),
125
- ),
126
- Text('Incoming ${call.type} call', style: const TextStyle(color: Colors.white70)),
127
- const SizedBox(height: 32),
128
- Row(
129
- mainAxisAlignment: MainAxisAlignment.center,
130
- children: [
131
- Semantics(
132
- label: 'Decline call',
133
- button: true,
134
- child: FloatingActionButton(
135
- backgroundColor: Colors.red,
136
- onPressed: () => ctrl.reject(call),
137
- child: const Icon(Icons.call_end),
138
- ),
139
- ),
140
- const SizedBox(width: 32),
141
- Semantics(
142
- label: 'Accept call',
143
- button: true,
144
- child: FloatingActionButton(
145
- backgroundColor: Colors.green,
146
- onPressed: () => ctrl.accept(call),
147
- child: const Icon(Icons.call),
148
- ),
149
- ),
150
- ],
151
- ),
152
- ],
153
- ),
154
- ),
155
- );
156
- });
157
- }
158
- }
159
- ```
160
-
161
- Wrap above the navigator (typically in `MaterialApp.builder` or as a sibling Stack item) so it surfaces over any route.
162
-
163
- ---
164
-
165
- ## Backgrounded ring — flutter_callkit_incoming + push (mandatory)
166
-
167
- GetX listeners only fire while the app is alive. For backgrounded/killed ring, server fires push (APNs PushKit on iOS, FCM data-message on Android) → `flutter_callkit_incoming` shows OS-level UI. See `cometchat-flutter-v5-calls/references/server-push-bridge.md`.
168
-
169
- ---
170
-
171
- ## Anti-patterns
172
-
173
- Web sister rules apply, plus Flutter-specific:
174
-
175
- 1. **`Get.put` without `permanent: true`.** Controller disposed on route change → listener gone → backgrounded calls miss.
176
- 2. **`StatefulWidget` with `setState` instead of `Obx`.** Rx values won't trigger rebuild without `Obx` wrapper.
177
- 3. **JS-style ringtone via `audioplayers` during a CallKit ring.** Both play at once.
178
-
179
- ---
180
-
181
- ## Verification checklist
182
-
183
- - [ ] `Get.put(CallSignalingController(), permanent: true)` at app start
184
- - [ ] `IncomingCallOverlay` mounted in `MaterialApp.builder`
185
- - [ ] `removeCallListener` in `onClose`
186
- - [ ] `flutter_callkit_incoming` wired for backgrounded ring
187
- - [ ] Real-device smoke (iOS + Android): foreground, backgrounded, killed ring all surface UI
188
-
189
- ---
190
-
191
- ## Pointers
192
-
193
- - `cometchat-react-calls/references/ringing-integration.md` — canonical
194
- - `cometchat-flutter-v5-calls/SKILL.md` — Flutter calls architecture
195
- - `cometchat-flutter-v5-calls/references/server-push-bridge.md` — backgrounded ring
196
- - Canonical docs: https://www.cometchat.com/docs/calls/flutter/ringing