@cometchat/skills 4.4.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +36 -0
  4. package/README.md +41 -163
  5. package/RULES.md +114 -0
  6. package/bin/cometchat-skills.mjs +1180 -0
  7. package/bin/legacy-skills.json +95 -0
  8. package/catalogs/android-v6.json +1646 -0
  9. package/catalogs/flutter-v6.json +651 -0
  10. package/catalogs/ios-v5.json +1383 -0
  11. package/catalogs/rn-calls-v5.json +134 -0
  12. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  13. package/catalogs/rn-sdk-v4.json +672 -0
  14. package/catalogs/rn-v5.json +449 -0
  15. package/catalogs/rn-v5.symbols.txt +216 -0
  16. package/catalogs/sdk-android-v5.json +514 -0
  17. package/contracts.android-calls-v5.json +122 -0
  18. package/contracts.android-v6.json +135 -0
  19. package/contracts.angular-v5.json +694 -0
  20. package/contracts.flutter-calls-v5.json +77 -0
  21. package/contracts.flutter-v6.json +126 -0
  22. package/contracts.ios-calls-v5.json +67 -0
  23. package/contracts.ios-v5.json +436 -0
  24. package/contracts.json +82 -0
  25. package/contracts.rn-calls-v5.json +77 -0
  26. package/contracts.rn-v5.json +727 -0
  27. package/contracts.sdk-android-v5.json +15 -0
  28. package/contracts.web-calls-v5.json +45 -0
  29. package/features.android-calls-v5.json +246 -0
  30. package/features.android-v6.json +65 -0
  31. package/features.angular-v5.json +521 -0
  32. package/features.flutter-calls-v5.json +286 -0
  33. package/features.flutter-v6.json +484 -0
  34. package/features.ios-calls-v5.json +236 -0
  35. package/features.ios-v5.json +573 -0
  36. package/features.json +61 -0
  37. package/features.rn-calls-v5.json +187 -0
  38. package/features.rn-v5.json +614 -0
  39. package/features.sdk-android-v5.json +40 -0
  40. package/features.sdk-jsv4.json +24 -0
  41. package/features.web-calls-v5.json +108 -0
  42. package/package.json +151 -74
  43. package/peers.yaml +312 -0
  44. package/registry/README.md +31 -0
  45. package/registry/android-calls-v5.json +54 -0
  46. package/registry/android-v6.json +137 -0
  47. package/registry/angular-v5.json +114 -0
  48. package/registry/flutter-calls-v5.json +54 -0
  49. package/registry/flutter-v6.json +119 -0
  50. package/registry/ios-calls-v5.json +59 -0
  51. package/registry/ios-v5.json +97 -0
  52. package/registry/rn-calls-v5.json +59 -0
  53. package/registry/rn-v5.json +129 -0
  54. package/registry/sdk-android-v5.json +53 -0
  55. package/registry/sdk-jsv4.json +53 -0
  56. package/registry/web-calls-v5.json +54 -0
  57. package/registry/web-v7.json +99 -0
  58. package/skills/cometchat/SKILL.md +42 -2096
  59. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  60. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  66. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  67. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  68. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  69. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  70. package/skills/cometchat-android-v6-calls/SKILL.md +128 -411
  71. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  72. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  73. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  74. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  75. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  76. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  77. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  78. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  79. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  80. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  81. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  82. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  83. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  84. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  85. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  86. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  87. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  88. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  89. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  90. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  91. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  92. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  93. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  94. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  95. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  96. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  97. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  98. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  99. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  100. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  101. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  102. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  103. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  104. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  105. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  106. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  107. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  108. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  109. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  110. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  111. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  112. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  113. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  114. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  115. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  116. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  117. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  118. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  119. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  120. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  121. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  122. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  123. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  127. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -387
  128. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  129. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  130. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  131. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  132. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  133. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  134. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  135. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  136. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  137. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  138. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  139. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  140. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  141. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  142. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  143. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  144. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  145. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  146. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  147. package/skills/cometchat-ios-calls/SKILL.md +105 -511
  148. package/skills/cometchat-ios-components/SKILL.md +44 -834
  149. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  150. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  151. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  152. package/skills/cometchat-ios-core/references/install.md +23 -0
  153. package/skills/cometchat-ios-core/references/layout.md +186 -0
  154. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  155. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  156. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  157. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  158. package/skills/cometchat-ios-features/SKILL.md +29 -738
  159. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  160. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  161. package/skills/cometchat-ios-push/SKILL.md +24 -602
  162. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  163. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  164. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  165. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  166. package/skills/cometchat-onboarding/SKILL.md +89 -0
  167. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  168. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  169. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  170. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  171. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  172. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  173. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  174. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  175. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  176. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  177. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  178. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  179. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  180. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  181. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  182. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  183. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  184. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  185. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  186. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  187. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  188. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  189. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  190. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  191. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  192. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  193. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  194. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  195. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  196. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  198. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  199. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  200. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  201. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  202. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  203. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  204. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  205. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  206. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  207. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  208. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  209. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  210. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  211. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  212. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  213. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  214. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  215. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  216. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  217. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  218. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  219. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  220. package/test-suite/README.md +70 -0
  221. package/test-suite/catalogs/android-calls-v5.json +830 -0
  222. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  223. package/test-suite/catalogs/android-v6.json +1646 -0
  224. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  225. package/test-suite/catalogs/angular-v5.json +7587 -0
  226. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  227. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  228. package/test-suite/catalogs/flutter-v6.json +651 -0
  229. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  230. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  231. package/test-suite/catalogs/ios-v5.json +1383 -0
  232. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  233. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  234. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  235. package/test-suite/catalogs/rn-v5.json +449 -0
  236. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  237. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  238. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  239. package/test-suite/catalogs/web-calls-v5.json +195 -0
  240. package/test-suite/catalogs/web-v7.json +1243 -0
  241. package/test-suite/scripts/build-registry.mjs +113 -0
  242. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  243. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  244. package/test-suite/scripts/lint-skills.mjs +909 -0
  245. package/test-suite/scripts/measure-tokens.mjs +169 -0
  246. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  247. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  248. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  249. package/test-suite/scripts/verify-catalog.mjs +242 -0
  250. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  251. package/test-suite/scripts/verify-detection.mjs +178 -0
  252. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  253. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  254. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  255. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  256. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  257. package/test-suite/typecheck/angular-v5/package.json +21 -0
  258. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  259. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  260. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  261. package/test-suite/typecheck/web-v7/package.json +18 -0
  262. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  263. package/bin/install.js +0 -1003
  264. package/skills/.claude-plugin/marketplace.json +0 -86
  265. package/skills/cometchat/references/asking-questions.md +0 -48
  266. package/skills/cometchat-a11y/SKILL.md +0 -477
  267. package/skills/cometchat-android-v5/SKILL.md +0 -121
  268. package/skills/cometchat-android-v5-calls/SKILL.md +0 -427
  269. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  270. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  271. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  272. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  273. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  274. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  275. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  276. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  277. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  278. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  279. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  280. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  281. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  282. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  283. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  284. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  285. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  286. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  287. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  288. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  289. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  290. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  291. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  292. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  293. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  294. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  295. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  296. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  297. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  298. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  299. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  300. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  301. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  302. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  303. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  304. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  305. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  306. package/skills/cometchat-android-v6/SKILL.md +0 -108
  307. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  308. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  309. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  310. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  311. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  312. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  313. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  314. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  315. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  316. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  317. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  318. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  319. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  320. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  321. package/skills/cometchat-angular-calls/SKILL.md +0 -378
  322. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  323. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  324. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  325. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  326. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  327. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  328. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  329. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  330. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  331. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  332. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  333. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  334. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  335. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  336. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  337. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  338. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  339. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  340. package/skills/cometchat-angular-components/SKILL.md +0 -235
  341. package/skills/cometchat-angular-core/SKILL.md +0 -386
  342. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  343. package/skills/cometchat-angular-features/SKILL.md +0 -329
  344. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  345. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  346. package/skills/cometchat-angular-production/SKILL.md +0 -564
  347. package/skills/cometchat-angular-push/SKILL.md +0 -389
  348. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  349. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  350. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  351. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  352. package/skills/cometchat-calls/SKILL.md +0 -364
  353. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  354. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  355. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  356. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  357. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  358. package/skills/cometchat-components/SKILL.md +0 -1142
  359. package/skills/cometchat-core/SKILL.md +0 -1048
  360. package/skills/cometchat-customization/SKILL.md +0 -580
  361. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  362. package/skills/cometchat-features/SKILL.md +0 -861
  363. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  364. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -453
  365. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  366. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  367. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  368. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  369. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  370. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  371. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  372. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  373. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  374. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  375. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  376. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  377. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  378. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  379. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  380. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  381. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  382. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  383. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  384. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  385. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  386. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  387. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  388. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  389. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  390. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  391. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  392. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  393. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  394. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  395. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  396. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  397. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  398. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  399. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  400. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  401. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  402. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  403. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  404. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  405. package/skills/cometchat-i18n/SKILL.md +0 -419
  406. package/skills/cometchat-ios/SKILL.md +0 -325
  407. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -174
  408. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  409. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  410. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  411. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  412. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  413. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  414. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  415. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  416. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  417. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  418. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  419. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  420. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  421. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  422. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  423. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  424. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  425. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  426. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  427. package/skills/cometchat-ios-production/SKILL.md +0 -738
  428. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  429. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  430. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  431. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  432. package/skills/cometchat-native-calls/SKILL.md +0 -669
  433. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  434. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  435. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  436. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  437. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  438. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  439. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  440. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  441. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  442. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  443. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  444. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  445. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  446. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  447. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  448. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  449. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  450. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  451. package/skills/cometchat-native-components/SKILL.md +0 -628
  452. package/skills/cometchat-native-core/SKILL.md +0 -679
  453. package/skills/cometchat-native-customization/SKILL.md +0 -716
  454. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  455. package/skills/cometchat-native-features/SKILL.md +0 -638
  456. package/skills/cometchat-native-placement/SKILL.md +0 -509
  457. package/skills/cometchat-native-production/SKILL.md +0 -700
  458. package/skills/cometchat-native-push/SKILL.md +0 -594
  459. package/skills/cometchat-native-testing/SKILL.md +0 -582
  460. package/skills/cometchat-native-theming/SKILL.md +0 -681
  461. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  462. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  463. package/skills/cometchat-placement/SKILL.md +0 -1360
  464. package/skills/cometchat-production/SKILL.md +0 -1027
  465. package/skills/cometchat-react-calls/SKILL.md +0 -749
  466. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  467. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  468. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  469. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  470. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  471. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  472. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  473. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  474. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  475. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  476. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  477. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  478. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  479. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  480. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  481. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  482. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  483. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  484. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  485. package/skills/cometchat-react-push/SKILL.md +0 -634
  486. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  487. package/skills/cometchat-react-testing/SKILL.md +0 -413
  488. package/skills/cometchat-theming/SKILL.md +0 -498
  489. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -1,88 +0,0 @@
1
- # Idle timeout on Flutter V6 (Bloc-based)
2
-
3
- Same SDK API as V5; Bloc-based wiring. Read `cometchat-flutter-v5-calls/references/idle-timeout.md` first.
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/flutter/idle-timeout
6
-
7
- ---
8
-
9
- ## SDK API + listener bridge
10
-
11
- Set the idle period on `SessionSettingsBuilder().setIdleTimeoutPeriod(int)` (seconds — `cometchat_calls_sdk-5.0.2` `src/builder/session_settings.dart:185`). The monolithic `CometChatCallsEventsListener` is `@Deprecated` in 5.0.2 (`src/listener/cometchat_calls_events_listener.dart:16`) — use the v5 split listeners instead. `onSessionTimedOut()` lives on `SessionStatusListeners` (`src/listener/session_status_listeners.dart`), registered via `CallSession.getInstance()?.addSessionStatusListener(...)` (`src/call_session.dart:66`). There is no `CometChatCalls.addCallEventListener`.
12
-
13
- Listener via Bloc bridge (cf. `cometchat-flutter-v6-calls/references/raise-hand.md`):
14
-
15
- ```dart
16
- // Apply the idle timeout when building session settings:
17
- final settings = SessionSettingsBuilder().setIdleTimeoutPeriod(180).build();
18
-
19
- abstract class CallEvent {}
20
- class _SessionTimedOut extends CallEvent {}
21
-
22
- class CallBloc extends Bloc<CallEvent, CallState> implements SessionStatusListeners {
23
- CallBloc() : super(const CallState()) {
24
- on<_SessionTimedOut>(_onTimedOut);
25
- CallSession.getInstance()?.addSessionStatusListener(this);
26
- }
27
-
28
- @override
29
- void onSessionTimedOut() {
30
- add(_SessionTimedOut());
31
- }
32
-
33
- void _onTimedOut(_SessionTimedOut event, Emitter<CallState> emit) {
34
- emit(state.copyWith(timedOut: true));
35
- }
36
-
37
- // ... other SessionStatusListeners callbacks (onSessionJoined/onSessionLeft/...) as no-ops
38
-
39
- @override
40
- Future<void> close() {
41
- CallSession.getInstance()?.removeSessionStatusListener(this);
42
- return super.close();
43
- }
44
- }
45
- ```
46
-
47
- UI listens for `state.timedOut`:
48
-
49
- ```dart
50
- BlocListener<CallBloc, CallState>(
51
- listenWhen: (prev, curr) => !prev.timedOut && curr.timedOut,
52
- listener: (context, state) async {
53
- ScaffoldMessenger.of(context).showSnackBar(
54
- const SnackBar(content: Text('Call ended due to inactivity')),
55
- );
56
- Navigator.of(context).popUntil((route) => route.isFirst);
57
- },
58
- child: /* call surface */,
59
- )
60
- ```
61
-
62
- `BlocListener` is one-shot side effects (navigation, snackbars). `listenWhen` ensures the listener only fires on the transition.
63
-
64
- ---
65
-
66
- ## Custom prompt — same showDialog as V5
67
-
68
- Identical code; cite V5 sister reference.
69
-
70
- ---
71
-
72
- ## Verification checklist
73
-
74
- - [ ] `SessionSettingsBuilder().setIdleTimeoutPeriod(seconds)` sets the idle period
75
- - [ ] CallBloc implements `SessionStatusListeners` and bridges `onSessionTimedOut` to `_SessionTimedOut`
76
- - [ ] Listener registered via `CallSession.getInstance()?.addSessionStatusListener(this)`
77
- - [ ] BlocListener with `listenWhen` triggers nav + snackbar
78
- - [ ] Bloc `close()` removes the listener via `removeSessionStatusListener(this)`
79
- - [ ] Real-device smoke: same as V5
80
-
81
- ---
82
-
83
- ## Pointers
84
-
85
- - `cometchat-flutter-v5-calls/references/idle-timeout.md` — V5 sister
86
- - `cometchat-flutter-v6-calls` SKILL.md — V6 hard rules
87
- - `cometchat-flutter-v6-calls/references/raise-hand.md` — Bloc-bridge sibling pattern
88
- - Canonical docs: https://www.cometchat.com/docs/calls/flutter/idle-timeout
@@ -1,125 +0,0 @@
1
- # In-call chat on Flutter V6 (Bloc)
2
-
3
- Same SDK shape; Bloc-driven open/unread state.
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/flutter/in-call-chat
6
- **Read first:** `cometchat-flutter-v5-calls/references/in-call-chat.md` — sheet pattern + group-as-session helper.
7
-
8
- ---
9
-
10
- ## State + bloc
11
-
12
- ```dart
13
- class InCallChatState extends Equatable {
14
- final bool open;
15
- final int unread;
16
- final Group? group;
17
- const InCallChatState({this.open = false, this.unread = 0, this.group});
18
- InCallChatState copyWith({bool? open, int? unread, Group? group}) =>
19
- InCallChatState(open: open ?? this.open, unread: unread ?? this.unread, group: group ?? this.group);
20
- @override List<Object?> get props => [open, unread, group?.guid];
21
- }
22
-
23
- abstract class InCallChatEvent {}
24
- class InitChat extends InCallChatEvent { final String sessionId; InitChat(this.sessionId); }
25
- class OpenChat extends InCallChatEvent {}
26
- class CloseChat extends InCallChatEvent {}
27
- class _MessageReceived extends InCallChatEvent {}
28
-
29
- class InCallChatBloc extends Bloc<InCallChatEvent, InCallChatState> {
30
- InCallChatBloc() : super(const InCallChatState()) {
31
- on<InitChat>(_onInit);
32
- on<OpenChat>(_onOpen);
33
- on<CloseChat>(_onClose);
34
- on<_MessageReceived>(_onReceived);
35
- }
36
-
37
- Future<void> _onInit(InitChat event, Emitter<InCallChatState> emit) async {
38
- final group = await ensureCallGroup(event.sessionId);
39
- emit(state.copyWith(group: group));
40
- }
41
-
42
- void _onOpen(OpenChat event, Emitter<InCallChatState> emit) {
43
- emit(state.copyWith(open: true, unread: 0));
44
- // setChatButtonUnreadCount is an instance method on CallSession
45
- // (cometchat_calls_sdk-5.0.2 src/call_session.dart:489), not static.
46
- CallSession.getInstance()?.setChatButtonUnreadCount(0);
47
- }
48
-
49
- void _onClose(OpenChat event, Emitter<InCallChatState> emit) {
50
- emit(state.copyWith(open: false));
51
- }
52
-
53
- void _onReceived(_MessageReceived event, Emitter<InCallChatState> emit) {
54
- if (state.open) return;
55
- final next = state.unread + 1;
56
- emit(state.copyWith(unread: next));
57
- CallSession.getInstance()?.setChatButtonUnreadCount(next);
58
- }
59
- }
60
- ```
61
-
62
- ---
63
-
64
- ## Triggering open from SDK event
65
-
66
- `onChatButtonClicked()` is on `ButtonClickListeners` (v5 split listener), registered via `CallSession.getInstance()?.addButtonClickListener(...)` — NOT the deprecated `CometChatCallsEventsListener`:
67
-
68
- ```dart
69
- // class ... implements ButtonClickListeners
70
- @override
71
- void onChatButtonClicked() {
72
- context.read<InCallChatBloc>().add(OpenChat());
73
- }
74
- ```
75
-
76
- ---
77
-
78
- ## Sheet UI
79
-
80
- Same `showModalBottomSheet` shape as V5. Use `BlocSelector` to react to `state.open`:
81
-
82
- ```dart
83
- BlocListener<InCallChatBloc, InCallChatState>(
84
- listenWhen: (prev, curr) => !prev.open && curr.open,
85
- listener: (context, state) {
86
- if (state.group == null) return;
87
- showModalBottomSheet(
88
- context: context,
89
- isScrollControlled: true,
90
- barrierColor: Colors.transparent,
91
- builder: (_) => InCallChatPanel(group: state.group!),
92
- ).whenComplete(() {
93
- context.read<InCallChatBloc>().add(CloseChat());
94
- });
95
- },
96
- child: /* call surface */,
97
- )
98
- ```
99
-
100
- ---
101
-
102
- ## Anti-patterns
103
-
104
- V5 sister rules apply, plus V6-specific:
105
-
106
- 1. **`BlocBuilder` instead of `BlocListener` for opening the sheet.** BlocBuilder is for rebuilding UI; sheet-open is a one-shot side effect → BlocListener.
107
- 2. **`listenWhen` omitted.** Sheet opens on every state change.
108
-
109
- ---
110
-
111
- ## Verification checklist
112
-
113
- - [ ] InCallChatBloc with `InitChat`, `OpenChat`, `CloseChat`, `_MessageReceived` events
114
- - [ ] BlocListener with `listenWhen` for the open transition
115
- - [ ] `showModalBottomSheet.whenComplete` dispatches `CloseChat`
116
- - [ ] Real-device smoke: same as V5
117
-
118
- ---
119
-
120
- ## Pointers
121
-
122
- - `cometchat-flutter-v5-calls/references/in-call-chat.md` — V5 sister (sheet pattern)
123
- - `cometchat-flutter-v6-calls` SKILL.md
124
- - `cometchat-flutter-v6-calls/references/raise-hand.md` — Bloc bridge sibling
125
- - Canonical docs: https://www.cometchat.com/docs/calls/flutter/in-call-chat
@@ -1,275 +0,0 @@
1
- # Raise hand on Flutter (UIKit V6, Bloc-based)
2
-
3
- Same SDK conceptual API as V5; the difference is state management — V6 uses `flutter_bloc` rather than GetX. The reactive shape is `RaiseHandBloc → emit(state)` where state is an immutable record of `localRaised + raisedParticipants`.
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/flutter/raise-hand
6
- **Read first:** `cometchat-flutter-v5-calls/references/raise-hand.md` — UX shape is identical; this is the V6 Bloc translation.
7
-
8
- ---
9
-
10
- ## SDK API (same as V5)
11
-
12
- Raise/lower hand are **instance methods on the `CallSession` singleton**, NOT static on `CometChatCalls` (verified `cometchat_calls_sdk-5.0.2` `src/call_session.dart:292,306`; the static `CometChatCalls` class has no `raiseHand`/`lowerHand`). Participant hand events arrive via `ParticipantEventListeners`, registered through `CallSession.getInstance()?.addParticipantEventListener(...)` (`src/call_session.dart:78`) — there is no `CometChatCalls.addCallEventListener`.
13
-
14
- ```dart
15
- import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
16
- import 'package:cometchat_chat_uikit/cometchat_calls_uikit.dart';
17
-
18
- CallSession.getInstance()?.raiseHand();
19
- CallSession.getInstance()?.lowerHand();
20
-
21
- // Register a ParticipantEventListeners implementation:
22
- CallSession.getInstance()?.addParticipantEventListener(myListener);
23
-
24
- // In your ParticipantEventListeners implementation:
25
- @override
26
- void onParticipantHandRaised(Participant p) { /* ... */ }
27
- @override
28
- void onParticipantHandLowered(Participant p) { /* ... */ }
29
-
30
- // hideRaiseHandButton is a METHOD on the (non-deprecated) SessionSettingsBuilder.
31
- // `CallSettingsBuilder` is @Deprecated in 5.0.2 (src/builder/call_settings.dart:208).
32
- final settings = SessionSettingsBuilder().hideRaiseHandButton(true).build();
33
- ```
34
-
35
- ---
36
-
37
- ## Bloc setup
38
-
39
- ```dart
40
- import 'package:bloc/bloc.dart';
41
- import 'package:equatable/equatable.dart';
42
- import 'package:cometchat_chat_uikit/cometchat_calls_uikit.dart';
43
-
44
- // State
45
- class RaiseHandState extends Equatable {
46
- final bool localRaised;
47
- final List<RaisedParticipant> raised;
48
- const RaiseHandState({this.localRaised = false, this.raised = const []});
49
-
50
- RaiseHandState copyWith({bool? localRaised, List<RaisedParticipant>? raised}) =>
51
- RaiseHandState(
52
- localRaised: localRaised ?? this.localRaised,
53
- raised: raised ?? this.raised,
54
- );
55
-
56
- @override
57
- List<Object> get props => [localRaised, raised];
58
- }
59
-
60
- class RaisedParticipant extends Equatable {
61
- final String uid;
62
- final String name;
63
- final DateTime raisedAt;
64
- const RaisedParticipant({required this.uid, required this.name, required this.raisedAt});
65
- @override
66
- List<Object> get props => [uid, name, raisedAt];
67
- }
68
-
69
- // Events
70
- abstract class RaiseHandEvent {}
71
- class ToggleHand extends RaiseHandEvent {}
72
- class _ParticipantRaised extends RaiseHandEvent {
73
- final Participant participant;
74
- _ParticipantRaised(this.participant);
75
- }
76
- class _ParticipantLowered extends RaiseHandEvent {
77
- final Participant participant;
78
- _ParticipantLowered(this.participant);
79
- }
80
- ```
81
-
82
- ---
83
-
84
- ## Bloc implementation
85
-
86
- ```dart
87
- class RaiseHandBloc extends Bloc<RaiseHandEvent, RaiseHandState>
88
- implements ParticipantEventListeners {
89
-
90
- RaiseHandBloc() : super(const RaiseHandState()) {
91
- on<ToggleHand>(_onToggle);
92
- on<_ParticipantRaised>(_onParticipantRaised);
93
- on<_ParticipantLowered>(_onParticipantLowered);
94
-
95
- // Self-register as the participant event listener (v5 split listener).
96
- CallSession.getInstance()?.addParticipantEventListener(this);
97
- }
98
-
99
- void _onToggle(ToggleHand event, Emitter<RaiseHandState> emit) {
100
- if (state.localRaised) {
101
- CallSession.getInstance()?.lowerHand();
102
- } else {
103
- CallSession.getInstance()?.raiseHand();
104
- }
105
- emit(state.copyWith(localRaised: !state.localRaised));
106
- }
107
-
108
- void _onParticipantRaised(_ParticipantRaised event, Emitter<RaiseHandState> emit) {
109
- final entry = RaisedParticipant(
110
- uid: event.participant.uid,
111
- name: event.participant.name,
112
- raisedAt: DateTime.now(),
113
- );
114
- final next = [...state.raised.where((r) => r.uid != entry.uid), entry];
115
- next.sort((a, b) => a.raisedAt.compareTo(b.raisedAt));
116
- emit(state.copyWith(raised: next));
117
- }
118
-
119
- void _onParticipantLowered(_ParticipantLowered event, Emitter<RaiseHandState> emit) {
120
- final next = state.raised.where((r) => r.uid != event.participant.uid).toList();
121
- emit(state.copyWith(raised: next));
122
- }
123
-
124
- // ParticipantEventListeners — bridge to Bloc events
125
- @override
126
- void onParticipantHandRaised(Participant p) {
127
- add(_ParticipantRaised(p));
128
- }
129
-
130
- @override
131
- void onParticipantHandLowered(Participant p) {
132
- add(_ParticipantLowered(p));
133
- }
134
-
135
- // ... implement other ParticipantEventListeners methods (no-ops or pass-through)
136
-
137
- @override
138
- Future<void> close() {
139
- CallSession.getInstance()?.removeParticipantEventListener(this);
140
- return super.close();
141
- }
142
- }
143
- ```
144
-
145
- The bridge pattern: the bloc IS the SDK listener. SDK callbacks call `add()` on the bloc, which dispatches an event handler that emits new state. This keeps Bloc's "single source of truth" intact — no parallel state outside the bloc.
146
-
147
- ---
148
-
149
- ## Toggle button widget
150
-
151
- ```dart
152
- class RaiseHandButton extends StatelessWidget {
153
- const RaiseHandButton({super.key});
154
-
155
- @override
156
- Widget build(BuildContext context) {
157
- return BlocBuilder<RaiseHandBloc, RaiseHandState>(
158
- buildWhen: (prev, curr) => prev.localRaised != curr.localRaised,
159
- builder: (context, state) => Semantics(
160
- button: true,
161
- selected: state.localRaised,
162
- label: state.localRaised ? 'Lower hand' : 'Raise hand',
163
- child: GestureDetector(
164
- onTap: () {
165
- context.read<RaiseHandBloc>().add(ToggleHand());
166
- SemanticsService.announce(
167
- state.localRaised ? 'Hand lowered' : 'Hand raised',
168
- TextDirection.ltr,
169
- );
170
- },
171
- child: Container(
172
- padding: const EdgeInsets.all(12),
173
- decoration: BoxDecoration(
174
- color: state.localRaised ? const Color(0xFFFFD60A) : Colors.white24,
175
- borderRadius: BorderRadius.circular(32),
176
- ),
177
- child: Row(
178
- children: [
179
- const Text('✋'),
180
- const SizedBox(width: 4),
181
- Text(state.localRaised ? 'Lower' : 'Raise'),
182
- ],
183
- ),
184
- ),
185
- ),
186
- ),
187
- );
188
- }
189
- }
190
- ```
191
-
192
- `buildWhen` ensures the button only rebuilds when `localRaised` changes — not on every roster update. Performance discipline matters in a video call.
193
-
194
- ---
195
-
196
- ## Raised-hands sheet
197
-
198
- Same `DraggableScrollableSheet` shape as V5; bind via `BlocBuilder` instead of `Obx`:
199
-
200
- ```dart
201
- BlocBuilder<RaiseHandBloc, RaiseHandState>(
202
- buildWhen: (prev, curr) => prev.raised != curr.raised,
203
- builder: (context, state) => ListView(
204
- children: [
205
- Text('Raised hands (${state.raised.length})'),
206
- for (final p in state.raised)
207
- ListTile(leading: const Text('✋'), title: Text(p.name)),
208
- ],
209
- ),
210
- )
211
- ```
212
-
213
- `buildWhen` again — only rebuild when the roster changes, not on toggle.
214
-
215
- ---
216
-
217
- ## Wiring to the call screen
218
-
219
- ```dart
220
- class CallScreen extends StatelessWidget {
221
- @override
222
- Widget build(BuildContext context) {
223
- return BlocProvider(
224
- create: (_) => RaiseHandBloc(),
225
- child: Scaffold(
226
- body: Stack(
227
- children: [
228
- // ... call surface (CometChatOngoingCall)
229
- const Positioned(bottom: 100, right: 20, child: RaiseHandButton()),
230
- const RaisedHandsSheet(),
231
- ],
232
- ),
233
- ),
234
- );
235
- }
236
- }
237
- ```
238
-
239
- `BlocProvider(create:)` scopes the bloc to the screen — disposed automatically on screen pop.
240
-
241
- ---
242
-
243
- ## Anti-patterns
244
-
245
- Web sister reference rules apply, plus V6-specific:
246
-
247
- 1. **`buildWhen` omitted.** Every state change rebuilds every BlocBuilder — lots of unnecessary work during a call. Add `buildWhen` for narrow rebuilds.
248
- 2. **Mutating `state.raised` directly** instead of creating a new list. `Equatable` props compare via `==`; mutation doesn't trigger rebuild.
249
- 3. **Calling `CallSession.getInstance()?.raiseHand()` outside the bloc.** Bypasses the state machine; UI doesn't update. Always go through `add(ToggleHand())`.
250
- 4. **Adding the SDK listener in `initState`** instead of the bloc constructor. Component-level lifecycle ≠ Bloc lifecycle. Bloc `close()` is the canonical place to clean up.
251
-
252
- ---
253
-
254
- ## Verification checklist
255
-
256
- - [ ] `RaiseHandBloc` extends `Bloc<RaiseHandEvent, RaiseHandState>`
257
- - [ ] `RaiseHandState` extends `Equatable` with proper `props`
258
- - [ ] Bloc registers itself as `ParticipantEventListeners` via `CallSession.getInstance()?.addParticipantEventListener(this)` in constructor
259
- - [ ] Bloc `close()` removes the listener via `removeParticipantEventListener(this)`
260
- - [ ] `BlocProvider(create:)` scopes the bloc to the call screen
261
- - [ ] `buildWhen` on every BlocBuilder narrows rebuilds
262
- - [ ] `Semantics` + `SemanticsService.announce` for a11y
263
- - [ ] `SessionSettingsBuilder().hideRaiseHandButton(true)` if custom UI
264
- - [ ] Real-device smoke: 3 devices (iOS + Android), 2 raise hands, host sees both
265
- - [ ] Hot-reload smoke: trigger raise → save code → bloc state survives (bloc is created via `create:`, persists across hot reload)
266
-
267
- ---
268
-
269
- ## Pointers
270
-
271
- - `cometchat-react-calls/references/raise-hand.md` — sister reference (UX shape)
272
- - `cometchat-flutter-v5-calls/references/raise-hand.md` — V5 sibling (GetX-based)
273
- - `cometchat-flutter-v6-calls` SKILL.md — V6 hard rules + Bloc patterns
274
- - `cometchat-a11y` — Flutter Semantics + SemanticsService
275
- - Canonical docs: https://www.cometchat.com/docs/calls/flutter/raise-hand
@@ -1,171 +0,0 @@
1
- # Ringing — call signaling with custom UI (Flutter V6 / Bloc)
2
-
3
- Same SDK shape; Bloc-driven state instead of GetX.
4
-
5
- **Read first:**
6
- - `cometchat-flutter-v5-calls/references/ringing-integration.md` — V5 sister (GetX patterns)
7
- - `cometchat-react-calls/references/ringing-integration.md` — full architecture, hard rules
8
-
9
- ---
10
-
11
- ## Bloc
12
-
13
- ```dart
14
- class CallSignalingState extends Equatable {
15
- final Call? incoming;
16
- final Call? outgoing;
17
- final String? activeSessionId;
18
-
19
- const CallSignalingState({this.incoming, this.outgoing, this.activeSessionId});
20
- CallSignalingState copyWith({Call? incoming, Call? outgoing, String? activeSessionId}) =>
21
- CallSignalingState(
22
- incoming: incoming ?? this.incoming,
23
- outgoing: outgoing ?? this.outgoing,
24
- activeSessionId: activeSessionId ?? this.activeSessionId,
25
- );
26
- CallSignalingState clear() => const CallSignalingState();
27
- @override
28
- List<Object?> get props => [incoming?.sessionId, outgoing?.sessionId, activeSessionId];
29
- }
30
-
31
- abstract class CallSignalingEvent {}
32
- class _IncomingReceived extends CallSignalingEvent { final Call call; _IncomingReceived(this.call); }
33
- class _OutgoingAccepted extends CallSignalingEvent { final Call call; _OutgoingAccepted(this.call); }
34
- class _OutgoingRejected extends CallSignalingEvent {}
35
- class _IncomingCancelled extends CallSignalingEvent {}
36
- class _CallEnded extends CallSignalingEvent {}
37
- class InitiateCall extends CallSignalingEvent { final String receiverUid; final String type; InitiateCall(this.receiverUid, {this.type = 'video'}); }
38
- class AcceptCall extends CallSignalingEvent { final Call call; AcceptCall(this.call); }
39
- class RejectCall extends CallSignalingEvent { final Call call; RejectCall(this.call); }
40
-
41
- class CallSignalingBloc extends Bloc<CallSignalingEvent, CallSignalingState> implements CallListener {
42
- static const _listenerId = 'app';
43
-
44
- CallSignalingBloc() : super(const CallSignalingState()) {
45
- on<_IncomingReceived>((e, emit) => emit(state.copyWith(incoming: e.call)));
46
- on<_OutgoingAccepted>((e, emit) => emit(state.copyWith(outgoing: null, activeSessionId: e.call.sessionId)));
47
- on<_OutgoingRejected>((_, emit) => emit(state.copyWith(outgoing: null)));
48
- on<_IncomingCancelled>((_, emit) => emit(state.copyWith(incoming: null)));
49
- on<_CallEnded>((_, emit) => emit(state.clear()));
50
- on<InitiateCall>(_onInitiate);
51
- on<AcceptCall>(_onAccept);
52
- on<RejectCall>(_onReject);
53
-
54
- CometChat.addCallListener(_listenerId, this);
55
- }
56
-
57
- @override
58
- void onIncomingCallReceived(Call call) => add(_IncomingReceived(call));
59
- @override
60
- void onOutgoingCallAccepted(Call call) => add(_OutgoingAccepted(call));
61
- @override
62
- void onOutgoingCallRejected(Call call) => add(_OutgoingRejected());
63
- @override
64
- void onIncomingCallCancelled(Call call) => add(_IncomingCancelled());
65
- @override
66
- void onCallEndedMessageReceived(Call call) => add(_CallEnded());
67
-
68
- Future<void> _onInitiate(InitiateCall e, Emitter<CallSignalingState> emit) async {
69
- final call = Call(
70
- receiverUid: e.receiverUid,
71
- callType: e.type == 'video' ? CometChatCallType.video : CometChatCallType.audio,
72
- receiverType: CometChatReceiverType.user,
73
- );
74
- final result = await CometChat.initiateCall(call: call);
75
- if (result is Call) emit(state.copyWith(outgoing: result));
76
- }
77
-
78
- Future<void> _onAccept(AcceptCall e, Emitter<CallSignalingState> emit) async {
79
- final result = await CometChat.acceptCall(sessionId: e.call.sessionId!);
80
- if (result is Call) emit(state.copyWith(incoming: null, activeSessionId: result.sessionId));
81
- }
82
-
83
- Future<void> _onReject(RejectCall e, Emitter<CallSignalingState> emit) async {
84
- await CometChat.rejectCall(sessionId: e.call.sessionId!, status: CallStatus.rejected);
85
- emit(state.copyWith(incoming: null));
86
- }
87
-
88
- @override
89
- Future<void> close() {
90
- CometChat.removeCallListener(_listenerId);
91
- return super.close();
92
- }
93
- }
94
- ```
95
-
96
- ---
97
-
98
- ## Provide above the router
99
-
100
- ```dart
101
- BlocProvider<CallSignalingBloc>(
102
- create: (_) => CallSignalingBloc(),
103
- child: MaterialApp.router(...),
104
- );
105
- ```
106
-
107
- ---
108
-
109
- ## Incoming-call overlay
110
-
111
- ```dart
112
- class IncomingCallOverlay extends StatelessWidget {
113
- const IncomingCallOverlay({super.key});
114
-
115
- @override
116
- Widget build(BuildContext context) {
117
- return BlocBuilder<CallSignalingBloc, CallSignalingState>(
118
- buildWhen: (prev, curr) => prev.incoming?.sessionId != curr.incoming?.sessionId,
119
- builder: (context, state) {
120
- final call = state.incoming;
121
- if (call == null) return const SizedBox.shrink();
122
- // Same UI as V5 sister; replace ctrl.accept/reject with bloc.add(...)
123
- return Material(/* ... see V5 sister ... */);
124
- },
125
- );
126
- }
127
- }
128
- ```
129
-
130
- Mount in `MaterialApp.builder`:
131
-
132
- ```dart
133
- MaterialApp.router(
134
- builder: (context, child) => Stack(
135
- children: [
136
- child ?? const SizedBox.shrink(),
137
- const IncomingCallOverlay(),
138
- ],
139
- ),
140
- routerConfig: ...,
141
- );
142
- ```
143
-
144
- ---
145
-
146
- ## Anti-patterns
147
-
148
- V5 sister rules apply, plus V6-specific:
149
-
150
- 1. **`BlocBuilder` without `buildWhen`.** Rebuilds on every state change — listener events for outgoing/active also retrigger incoming UI.
151
- 2. **Calling SDK methods from UI directly.** Adds back to bloc — use `bloc.add(InitiateCall(...))`.
152
- 3. **Provider scoped to a feature module.** Backgrounded ring path can't find the bloc when push fires.
153
-
154
- ---
155
-
156
- ## Verification checklist
157
-
158
- - [ ] `BlocProvider<CallSignalingBloc>` above `MaterialApp`
159
- - [ ] `IncomingCallOverlay` in `MaterialApp.builder`'s Stack
160
- - [ ] `BlocBuilder` uses `buildWhen` to scope rebuilds to `incoming` changes
161
- - [ ] `close()` calls `removeCallListener`
162
- - [ ] Real-device smoke: same as V5 sister
163
-
164
- ---
165
-
166
- ## Pointers
167
-
168
- - `cometchat-flutter-v5-calls/references/ringing-integration.md` — V5 sister (GetX)
169
- - `cometchat-flutter-v6-calls/SKILL.md` — V6 Bloc patterns
170
- - `cometchat-flutter-v6-calls/references/server-push-bridge.md` — backgrounded ring
171
- - Canonical docs: https://www.cometchat.com/docs/calls/flutter/ringing