stream-chat-react-native-core 5.5.1 → 5.6.0-beta.1

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 (321) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +21 -16
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/GalleryImage.js +19 -3
  4. package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
  5. package/lib/commonjs/components/Channel/Channel.js +535 -149
  6. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  7. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +6 -0
  8. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  9. package/lib/commonjs/components/ChannelList/ChannelList.js +4 -15
  10. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  11. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +112 -38
  12. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  13. package/lib/commonjs/components/Chat/Chat.js +16 -20
  14. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  15. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +2 -4
  16. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  17. package/lib/commonjs/components/Message/Message.js +21 -10
  18. package/lib/commonjs/components/Message/Message.js.map +1 -1
  19. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +14 -12
  20. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  21. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js +9 -30
  22. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  23. package/lib/commonjs/components/Message/hooks/useMessageActions.js +21 -19
  24. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  25. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +28 -21
  26. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  27. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +23 -16
  28. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  29. package/lib/commonjs/components/MessageInput/MessageInput.js +39 -27
  30. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  31. package/lib/commonjs/components/MessageInput/SendButton.js +1 -1
  32. package/lib/commonjs/components/MessageInput/SendButton.js.map +1 -1
  33. package/lib/commonjs/components/index.js +1 -14
  34. package/lib/commonjs/components/index.js.map +1 -1
  35. package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
  36. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  37. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +134 -86
  38. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  39. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
  40. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  41. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  42. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  43. package/lib/commonjs/hooks/useTranslatedMessage.js +1 -1
  44. package/lib/commonjs/hooks/useTranslatedMessage.js.map +1 -1
  45. package/lib/commonjs/mock-builders/DB/mock.js +2 -2
  46. package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
  47. package/lib/commonjs/mock-builders/api/deleteMessage.js +20 -0
  48. package/lib/commonjs/mock-builders/api/deleteMessage.js.map +1 -0
  49. package/lib/commonjs/mock-builders/api/deleteReaction.js +21 -0
  50. package/lib/commonjs/mock-builders/api/deleteReaction.js.map +1 -0
  51. package/lib/commonjs/mock-builders/api/sendReaction.js +21 -0
  52. package/lib/commonjs/mock-builders/api/sendReaction.js.map +1 -0
  53. package/lib/commonjs/mock-builders/event/connectionChanged.js +2 -0
  54. package/lib/commonjs/mock-builders/event/connectionChanged.js.map +1 -1
  55. package/lib/commonjs/store/QuickSqliteClient.js +40 -51
  56. package/lib/commonjs/store/QuickSqliteClient.js.map +1 -1
  57. package/lib/commonjs/store/apis/addPendingTask.js +37 -0
  58. package/lib/commonjs/store/apis/addPendingTask.js.map +1 -0
  59. package/lib/commonjs/store/apis/deleteMessage.js +26 -0
  60. package/lib/commonjs/store/apis/deleteMessage.js.map +1 -0
  61. package/lib/commonjs/store/apis/deletePendingTask.js +22 -0
  62. package/lib/commonjs/store/apis/deletePendingTask.js.map +1 -0
  63. package/lib/commonjs/store/apis/deleteReaction.js +30 -0
  64. package/lib/commonjs/store/apis/deleteReaction.js.map +1 -0
  65. package/lib/commonjs/store/apis/getChannelMessages.js +3 -3
  66. package/lib/commonjs/store/apis/getChannelMessages.js.map +1 -1
  67. package/lib/commonjs/store/apis/getChannels.js +1 -1
  68. package/lib/commonjs/store/apis/getChannels.js.map +1 -1
  69. package/lib/commonjs/store/apis/getPendingTasks.js +26 -0
  70. package/lib/commonjs/store/apis/getPendingTasks.js.map +1 -0
  71. package/lib/commonjs/store/apis/index.js +13 -0
  72. package/lib/commonjs/store/apis/index.js.map +1 -1
  73. package/lib/commonjs/store/apis/insertReaction.js +28 -0
  74. package/lib/commonjs/store/apis/insertReaction.js.map +1 -0
  75. package/lib/commonjs/store/apis/updateMessage.js.map +1 -1
  76. package/lib/commonjs/store/apis/updateReaction.js.map +1 -1
  77. package/lib/commonjs/store/mappers/mapDateTimeToStorable.js.map +1 -1
  78. package/lib/commonjs/store/mappers/mapMessageToStorable.js +3 -1
  79. package/lib/commonjs/store/mappers/mapMessageToStorable.js.map +1 -1
  80. package/lib/commonjs/store/mappers/mapStorableToTask.js +23 -0
  81. package/lib/commonjs/store/mappers/mapStorableToTask.js.map +1 -0
  82. package/lib/commonjs/store/mappers/mapTaskToStorable.js +18 -0
  83. package/lib/commonjs/store/mappers/mapTaskToStorable.js.map +1 -0
  84. package/lib/commonjs/store/schema.js +11 -0
  85. package/lib/commonjs/store/schema.js.map +1 -1
  86. package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js +24 -0
  87. package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js.map +1 -0
  88. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js +1 -1
  89. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
  90. package/lib/commonjs/store/sqlite-utils/createSelectQuery.js +8 -1
  91. package/lib/commonjs/store/sqlite-utils/createSelectQuery.js.map +1 -1
  92. package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js +2 -2
  93. package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js.map +1 -1
  94. package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js +1 -1
  95. package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js.map +1 -1
  96. package/lib/commonjs/utils/DBSyncManager.js +436 -0
  97. package/lib/commonjs/utils/DBSyncManager.js.map +1 -0
  98. package/lib/commonjs/utils/addReactionToLocalState.js +92 -0
  99. package/lib/commonjs/utils/addReactionToLocalState.js.map +1 -0
  100. package/lib/commonjs/utils/removeReactionFromLocalState.js +39 -0
  101. package/lib/commonjs/utils/removeReactionFromLocalState.js.map +1 -0
  102. package/lib/{module/components/Message → commonjs}/utils/removeReservedFields.js +1 -1
  103. package/lib/commonjs/utils/removeReservedFields.js.map +1 -0
  104. package/lib/commonjs/utils/utils.js +9 -3
  105. package/lib/commonjs/utils/utils.js.map +1 -1
  106. package/lib/commonjs/version.json +1 -1
  107. package/lib/module/components/Attachment/Gallery.js +21 -16
  108. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  109. package/lib/module/components/Attachment/GalleryImage.js +19 -3
  110. package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
  111. package/lib/module/components/Channel/Channel.js +535 -149
  112. package/lib/module/components/Channel/Channel.js.map +1 -1
  113. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +6 -0
  114. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  115. package/lib/module/components/ChannelList/ChannelList.js +4 -15
  116. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  117. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +112 -38
  118. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  119. package/lib/module/components/Chat/Chat.js +16 -20
  120. package/lib/module/components/Chat/Chat.js.map +1 -1
  121. package/lib/module/components/Chat/hooks/useCreateChatContext.js +2 -4
  122. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  123. package/lib/module/components/Message/Message.js +21 -10
  124. package/lib/module/components/Message/Message.js.map +1 -1
  125. package/lib/module/components/Message/MessageSimple/MessageFooter.js +14 -12
  126. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  127. package/lib/module/components/Message/hooks/useMessageActionHandlers.js +9 -30
  128. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  129. package/lib/module/components/Message/hooks/useMessageActions.js +21 -19
  130. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  131. package/lib/module/components/MessageInput/FileUploadPreview.js +28 -21
  132. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  133. package/lib/module/components/MessageInput/ImageUploadPreview.js +23 -16
  134. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  135. package/lib/module/components/MessageInput/MessageInput.js +39 -27
  136. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  137. package/lib/module/components/MessageInput/SendButton.js +1 -1
  138. package/lib/module/components/MessageInput/SendButton.js.map +1 -1
  139. package/lib/module/components/index.js +1 -14
  140. package/lib/module/components/index.js.map +1 -1
  141. package/lib/module/contexts/chatContext/ChatContext.js +2 -2
  142. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  143. package/lib/module/contexts/messageInputContext/MessageInputContext.js +134 -86
  144. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  145. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
  146. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  147. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  148. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  149. package/lib/module/hooks/useTranslatedMessage.js +1 -1
  150. package/lib/module/hooks/useTranslatedMessage.js.map +1 -1
  151. package/lib/module/mock-builders/DB/mock.js +2 -2
  152. package/lib/module/mock-builders/DB/mock.js.map +1 -1
  153. package/lib/module/mock-builders/api/deleteMessage.js +20 -0
  154. package/lib/module/mock-builders/api/deleteMessage.js.map +1 -0
  155. package/lib/module/mock-builders/api/deleteReaction.js +21 -0
  156. package/lib/module/mock-builders/api/deleteReaction.js.map +1 -0
  157. package/lib/module/mock-builders/api/sendReaction.js +21 -0
  158. package/lib/module/mock-builders/api/sendReaction.js.map +1 -0
  159. package/lib/module/mock-builders/event/connectionChanged.js +2 -0
  160. package/lib/module/mock-builders/event/connectionChanged.js.map +1 -1
  161. package/lib/module/store/QuickSqliteClient.js +40 -51
  162. package/lib/module/store/QuickSqliteClient.js.map +1 -1
  163. package/lib/module/store/apis/addPendingTask.js +37 -0
  164. package/lib/module/store/apis/addPendingTask.js.map +1 -0
  165. package/lib/module/store/apis/deleteMessage.js +26 -0
  166. package/lib/module/store/apis/deleteMessage.js.map +1 -0
  167. package/lib/module/store/apis/deletePendingTask.js +22 -0
  168. package/lib/module/store/apis/deletePendingTask.js.map +1 -0
  169. package/lib/module/store/apis/deleteReaction.js +30 -0
  170. package/lib/module/store/apis/deleteReaction.js.map +1 -0
  171. package/lib/module/store/apis/getChannelMessages.js +3 -3
  172. package/lib/module/store/apis/getChannelMessages.js.map +1 -1
  173. package/lib/module/store/apis/getChannels.js +1 -1
  174. package/lib/module/store/apis/getChannels.js.map +1 -1
  175. package/lib/module/store/apis/getPendingTasks.js +26 -0
  176. package/lib/module/store/apis/getPendingTasks.js.map +1 -0
  177. package/lib/module/store/apis/index.js +13 -0
  178. package/lib/module/store/apis/index.js.map +1 -1
  179. package/lib/module/store/apis/insertReaction.js +28 -0
  180. package/lib/module/store/apis/insertReaction.js.map +1 -0
  181. package/lib/module/store/apis/updateMessage.js.map +1 -1
  182. package/lib/module/store/apis/updateReaction.js.map +1 -1
  183. package/lib/module/store/mappers/mapDateTimeToStorable.js.map +1 -1
  184. package/lib/module/store/mappers/mapMessageToStorable.js +3 -1
  185. package/lib/module/store/mappers/mapMessageToStorable.js.map +1 -1
  186. package/lib/module/store/mappers/mapStorableToTask.js +23 -0
  187. package/lib/module/store/mappers/mapStorableToTask.js.map +1 -0
  188. package/lib/module/store/mappers/mapTaskToStorable.js +18 -0
  189. package/lib/module/store/mappers/mapTaskToStorable.js.map +1 -0
  190. package/lib/module/store/schema.js +11 -0
  191. package/lib/module/store/schema.js.map +1 -1
  192. package/lib/module/store/sqlite-utils/appendOrderByClause.js +24 -0
  193. package/lib/module/store/sqlite-utils/appendOrderByClause.js.map +1 -0
  194. package/lib/module/store/sqlite-utils/createCreateTableQuery.js +1 -1
  195. package/lib/module/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
  196. package/lib/module/store/sqlite-utils/createSelectQuery.js +8 -1
  197. package/lib/module/store/sqlite-utils/createSelectQuery.js.map +1 -1
  198. package/lib/module/store/sqlite-utils/createUpdateQuery.js +2 -2
  199. package/lib/module/store/sqlite-utils/createUpdateQuery.js.map +1 -1
  200. package/lib/module/store/sqlite-utils/createUpsertQuery.js +1 -1
  201. package/lib/module/store/sqlite-utils/createUpsertQuery.js.map +1 -1
  202. package/lib/module/utils/DBSyncManager.js +436 -0
  203. package/lib/module/utils/DBSyncManager.js.map +1 -0
  204. package/lib/module/utils/addReactionToLocalState.js +92 -0
  205. package/lib/module/utils/addReactionToLocalState.js.map +1 -0
  206. package/lib/module/utils/removeReactionFromLocalState.js +39 -0
  207. package/lib/module/utils/removeReactionFromLocalState.js.map +1 -0
  208. package/lib/{commonjs/components/Message → module}/utils/removeReservedFields.js +1 -1
  209. package/lib/module/utils/removeReservedFields.js.map +1 -0
  210. package/lib/module/utils/utils.js +9 -3
  211. package/lib/module/utils/utils.js.map +1 -1
  212. package/lib/module/version.json +1 -1
  213. package/lib/typescript/components/Channel/Channel.d.ts +1 -1
  214. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  215. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +2 -1
  216. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  217. package/lib/typescript/components/Message/Message.d.ts +1 -1
  218. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
  219. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
  220. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +2 -1
  221. package/lib/typescript/components/MessageInput/ImageUploadPreview.d.ts +2 -1
  222. package/lib/typescript/components/MessageInput/MessageInput.d.ts +2 -1
  223. package/lib/typescript/components/index.d.ts +1 -2
  224. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +1 -2
  225. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
  226. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +3 -0
  227. package/lib/typescript/store/apis/addPendingTask.d.ts +2 -0
  228. package/lib/typescript/store/apis/deleteMessage.d.ts +4 -0
  229. package/lib/typescript/store/apis/deletePendingTask.d.ts +3 -0
  230. package/lib/typescript/store/apis/deleteReaction.d.ts +6 -0
  231. package/lib/typescript/store/apis/getChannelMessages.d.ts +1 -1
  232. package/lib/typescript/store/apis/getPendingTasks.d.ts +3 -0
  233. package/lib/typescript/store/apis/index.d.ts +1 -0
  234. package/lib/typescript/store/apis/insertReaction.d.ts +6 -0
  235. package/lib/typescript/store/apis/updateMessage.d.ts +2 -2
  236. package/lib/typescript/store/apis/updateReaction.d.ts +2 -2
  237. package/lib/typescript/store/mappers/mapDateTimeToStorable.d.ts +1 -1
  238. package/lib/typescript/store/mappers/mapMessageToStorable.d.ts +2 -2
  239. package/lib/typescript/store/mappers/mapStorableToTask.d.ts +2 -0
  240. package/lib/typescript/store/mappers/mapTaskToStorable.d.ts +26 -0
  241. package/lib/typescript/store/schema.d.ts +12 -1
  242. package/lib/typescript/store/sqlite-utils/appendOrderByClause.d.ts +3 -0
  243. package/lib/typescript/store/sqlite-utils/createSelectQuery.d.ts +1 -1
  244. package/lib/typescript/store/types.d.ts +21 -0
  245. package/lib/typescript/types/types.d.ts +3 -1
  246. package/lib/typescript/utils/DBSyncManager.d.ts +47 -0
  247. package/lib/typescript/utils/addReactionToLocalState.d.ts +9 -0
  248. package/lib/typescript/utils/removeReactionFromLocalState.d.ts +8 -0
  249. package/lib/typescript/{components/Message/utils → utils}/removeReservedFields.d.ts +2 -2
  250. package/lib/typescript/utils/utils.d.ts +3 -3
  251. package/package.json +4 -3
  252. package/src/__tests__/offline-feature.test.js +19 -2
  253. package/src/__tests__/optimistic-update.test.js +368 -0
  254. package/src/components/Attachment/Gallery.tsx +5 -1
  255. package/src/components/Attachment/GalleryImage.tsx +16 -2
  256. package/src/components/Channel/Channel.tsx +266 -57
  257. package/src/components/Channel/hooks/useCreateMessagesContext.ts +6 -0
  258. package/src/components/ChannelList/ChannelList.tsx +2 -10
  259. package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +0 -1
  260. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +76 -26
  261. package/src/components/Chat/Chat.tsx +5 -9
  262. package/src/components/Chat/__tests__/Chat.test.js +1 -1
  263. package/src/components/Chat/hooks/useCreateChatContext.ts +0 -2
  264. package/src/components/Message/Message.tsx +18 -2
  265. package/src/components/Message/MessageSimple/MessageFooter.tsx +2 -1
  266. package/src/components/Message/hooks/useMessageActionHandlers.ts +10 -21
  267. package/src/components/Message/hooks/useMessageActions.tsx +10 -5
  268. package/src/components/MessageInput/FileUploadPreview.tsx +7 -2
  269. package/src/components/MessageInput/ImageUploadPreview.tsx +7 -3
  270. package/src/components/MessageInput/MessageInput.tsx +17 -3
  271. package/src/components/MessageInput/SendButton.tsx +1 -1
  272. package/src/components/index.ts +1 -2
  273. package/src/contexts/chatContext/ChatContext.tsx +1 -2
  274. package/src/contexts/messageInputContext/MessageInputContext.tsx +95 -57
  275. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +29 -3
  276. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +1 -0
  277. package/src/contexts/messagesContext/MessagesContext.tsx +4 -1
  278. package/src/hooks/useTranslatedMessage.ts +1 -1
  279. package/src/mock-builders/DB/mock.ts +2 -2
  280. package/src/mock-builders/api/deleteMessage.js +18 -0
  281. package/src/mock-builders/api/deleteReaction.js +19 -0
  282. package/src/mock-builders/api/sendReaction.tsx +19 -0
  283. package/src/mock-builders/event/connectionChanged.js +2 -1
  284. package/src/store/QuickSqliteClient.ts +39 -37
  285. package/src/store/apis/addPendingTask.ts +24 -0
  286. package/src/store/apis/deleteMessage.ts +13 -0
  287. package/src/store/apis/deletePendingTask.ts +12 -0
  288. package/src/store/apis/deleteReaction.ts +26 -0
  289. package/src/store/apis/getChannelMessages.ts +1 -1
  290. package/src/store/apis/getChannels.ts +2 -2
  291. package/src/store/apis/getPendingTasks.ts +13 -0
  292. package/src/store/apis/index.ts +1 -0
  293. package/src/store/apis/insertReaction.ts +29 -0
  294. package/src/store/apis/updateMessage.ts +2 -2
  295. package/src/store/apis/updateReaction.ts +2 -2
  296. package/src/store/mappers/mapDateTimeToStorable.ts +1 -1
  297. package/src/store/mappers/mapMessageToStorable.ts +8 -2
  298. package/src/store/mappers/mapStorableToTask.ts +13 -0
  299. package/src/store/mappers/mapTaskToStorable.ts +7 -0
  300. package/src/store/schema.ts +25 -1
  301. package/src/store/sqlite-utils/appendOrderByClause.ts +24 -0
  302. package/src/store/sqlite-utils/createCreateTableQuery.ts +2 -2
  303. package/src/store/sqlite-utils/createSelectQuery.ts +4 -1
  304. package/src/store/sqlite-utils/createUpdateQuery.ts +3 -2
  305. package/src/store/sqlite-utils/createUpsertQuery.ts +1 -1
  306. package/src/store/types.ts +28 -0
  307. package/src/types/types.ts +4 -1
  308. package/src/utils/DBSyncManager.ts +222 -0
  309. package/src/utils/addReactionToLocalState.ts +87 -0
  310. package/src/utils/removeReactionFromLocalState.ts +39 -0
  311. package/src/{components/Message/utils → utils}/removeReservedFields.ts +7 -3
  312. package/src/utils/utils.ts +14 -5
  313. package/src/version.json +1 -1
  314. package/lib/commonjs/components/Chat/hooks/useConnectionRecovered.js +0 -171
  315. package/lib/commonjs/components/Chat/hooks/useConnectionRecovered.js.map +0 -1
  316. package/lib/commonjs/components/Message/utils/removeReservedFields.js.map +0 -1
  317. package/lib/module/components/Chat/hooks/useConnectionRecovered.js +0 -171
  318. package/lib/module/components/Chat/hooks/useConnectionRecovered.js.map +0 -1
  319. package/lib/module/components/Message/utils/removeReservedFields.js.map +0 -1
  320. package/lib/typescript/components/Chat/hooks/useConnectionRecovered.d.ts +0 -10
  321. package/src/components/Chat/hooks/useConnectionRecovered.ts +0 -92
@@ -3,10 +3,9 @@ import { Image, Platform } from 'react-native';
3
3
 
4
4
  import Dayjs from 'dayjs';
5
5
 
6
- import type { Channel } from 'stream-chat';
6
+ import type { Channel, StreamChat } from 'stream-chat';
7
7
 
8
8
  import { useAppSettings } from './hooks/useAppSettings';
9
- import { useConnectionRecovered } from './hooks/useConnectionRecovered';
10
9
  import { useCreateChatContext } from './hooks/useCreateChatContext';
11
10
  import { useIsOnline } from './hooks/useIsOnline';
12
11
  import { useMutedUsers } from './hooks/useMutedUsers';
@@ -30,6 +29,7 @@ import init from '../../init';
30
29
  import { SDK } from '../../native';
31
30
  import { QuickSqliteClient } from '../../store/QuickSqliteClient';
32
31
  import type { DefaultStreamChatGenerics } from '../../types/types';
32
+ import { DBSyncManager } from '../../utils/DBSyncManager';
33
33
  import type { Streami18n } from '../../utils/Streami18n';
34
34
  import { version } from '../../version.json';
35
35
 
@@ -197,10 +197,6 @@ const ChatWithContext = <
197
197
  const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);
198
198
 
199
199
  const appSettings = useAppSettings(client, isOnline);
200
- const { subscribeConnectionRecoveredCallback } = useConnectionRecovered<StreamChatGenerics>({
201
- client,
202
- enableOfflineSupport,
203
- });
204
200
 
205
201
  const chatContext = useCreateChatContext({
206
202
  appSettings,
@@ -212,14 +208,14 @@ const ChatWithContext = <
212
208
  isOnline,
213
209
  mutedUsers,
214
210
  setActiveChannel,
215
- subscribeConnectionRecoveredCallback,
216
211
  });
217
212
 
218
213
  useEffect(() => {
219
- if (enableOfflineSupport) {
214
+ if (client.user?.id && enableOfflineSupport) {
220
215
  QuickSqliteClient.initializeDatabase();
216
+ DBSyncManager.init(client as unknown as StreamChat);
221
217
  }
222
- }, []);
218
+ }, [client?.user?.id]);
223
219
 
224
220
  useSyncDatabase({
225
221
  client,
@@ -55,7 +55,7 @@ describe('Chat', () => {
55
55
  await waitFor(() => expect(netInfoFetch).toHaveBeenCalledTimes(1));
56
56
 
57
57
  const { connectionRecovering } = context;
58
- act(() => dispatchConnectionChangedEvent(chatClient));
58
+ act(() => dispatchConnectionChangedEvent(chatClient, false));
59
59
  await waitFor(() => {
60
60
  expect(context.connectionRecovering).toStrictEqual(!connectionRecovering);
61
61
  expect(context.isOnline).toBeFalsy();
@@ -15,7 +15,6 @@ export const useCreateChatContext = <
15
15
  isOnline,
16
16
  mutedUsers,
17
17
  setActiveChannel,
18
- subscribeConnectionRecoveredCallback,
19
18
  }: ChatContextValue<StreamChatGenerics>) => {
20
19
  const channelId = channel?.id;
21
20
  const clientValues = client
@@ -36,7 +35,6 @@ export const useCreateChatContext = <
36
35
  isOnline,
37
36
  mutedUsers,
38
37
  setActiveChannel,
39
- subscribeConnectionRecoveredCallback,
40
38
  }),
41
39
  [channelId, clientValues, connectionRecovering, isOnline, mutedUsersLength],
42
40
  );
@@ -123,6 +123,8 @@ export type MessagePropsWithContext<
123
123
  Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &
124
124
  Pick<
125
125
  MessagesContextValue<StreamChatGenerics>,
126
+ | 'sendReaction'
127
+ | 'deleteMessage'
126
128
  | 'dismissKeyboardOnMessageTouch'
127
129
  | 'forceAlignMessages'
128
130
  | 'handleBlock'
@@ -145,6 +147,7 @@ export type MessagePropsWithContext<
145
147
  | 'onPressMessage'
146
148
  | 'OverlayReactionList'
147
149
  | 'removeMessage'
150
+ | 'deleteReaction'
148
151
  | 'retrySendMessage'
149
152
  | 'selectReaction'
150
153
  | 'setEditingState'
@@ -217,7 +220,9 @@ const MessageWithContext = <
217
220
  const isMessageTypeDeleted = props.message.type === 'deleted';
218
221
 
219
222
  const {
223
+ sendReaction,
220
224
  channel,
225
+ deleteMessage: deleteMessageFromContext,
221
226
  disabled,
222
227
  dismissKeyboard,
223
228
  dismissKeyboardOnMessageTouch,
@@ -256,6 +261,7 @@ const MessageWithContext = <
256
261
  OverlayReactionList,
257
262
  preventPress,
258
263
  removeMessage,
264
+ deleteReaction,
259
265
  retrySendMessage,
260
266
  selectReaction,
261
267
  setData,
@@ -460,14 +466,15 @@ const MessageWithContext = <
460
466
  } = useMessageActionHandlers({
461
467
  channel,
462
468
  client,
469
+ deleteMessage: deleteMessageFromContext,
470
+ deleteReaction,
463
471
  enforceUniqueReaction,
464
472
  message,
465
- removeMessage,
466
473
  retrySendMessage,
474
+ sendReaction,
467
475
  setEditingState,
468
476
  setQuotedMessageState,
469
477
  supportedReactions,
470
- updateMessage,
471
478
  });
472
479
 
473
480
  const {
@@ -486,6 +493,8 @@ const MessageWithContext = <
486
493
  } = useMessageActions({
487
494
  channel,
488
495
  client,
496
+ deleteMessage: deleteMessageFromContext,
497
+ deleteReaction,
489
498
  enforceUniqueReaction,
490
499
  handleBlock,
491
500
  handleCopy,
@@ -504,6 +513,7 @@ const MessageWithContext = <
504
513
  removeMessage,
505
514
  retrySendMessage,
506
515
  selectReaction,
516
+ sendReaction,
507
517
  setEditingState,
508
518
  setOverlay,
509
519
  setQuotedMessageState,
@@ -722,6 +732,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
722
732
  const {
723
733
  chatContext: { mutedUsers: prevMutedUsers },
724
734
  goToMessage: prevGoToMessage,
735
+ groupStyles: prevGroupStyles,
725
736
  isAttachmentEqual,
726
737
  isTargetedMessage: prevIsTargetedMessage,
727
738
  lastReceivedId: prevLastReceivedId,
@@ -733,6 +744,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
733
744
  const {
734
745
  chatContext: { mutedUsers: nextMutedUsers },
735
746
  goToMessage: nextGoToMessage,
747
+ groupStyles: nextGroupStyles,
736
748
  isTargetedMessage: nextIsTargetedMessage,
737
749
  lastReceivedId: nextLastReceivedId,
738
750
  members: nextMembers,
@@ -761,6 +773,10 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
761
773
 
762
774
  if (goToMessageChangedAndMatters) return false;
763
775
 
776
+ const groupStylesEqual =
777
+ prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];
778
+ if (!groupStylesEqual) return false;
779
+
764
780
  const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';
765
781
  const isNextMessageTypeDeleted = nextMessage.type === 'deleted';
766
782
 
@@ -21,6 +21,7 @@ import { useTranslationContext } from '../../../contexts/translationContext/Tran
21
21
  import { Eye } from '../../../icons';
22
22
 
23
23
  import type { DefaultStreamChatGenerics } from '../../../types/types';
24
+ import { MessageStatusTypes } from '../../../utils/utils';
24
25
  import type { MessageType } from '../../MessageList/hooks/useMessageList';
25
26
 
26
27
  type MessageFooterComponentProps = {
@@ -109,7 +110,7 @@ const MessageFooterWithContext = <
109
110
  );
110
111
  }
111
112
 
112
- if (lastGroupMessage === false) {
113
+ if (lastGroupMessage === false && message.status === MessageStatusTypes.RECEIVED) {
113
114
  return null;
114
115
  }
115
116
 
@@ -1,4 +1,4 @@
1
- import type { MessageResponse, Reaction } from 'stream-chat';
1
+ import type { MessageResponse } from 'stream-chat';
2
2
 
3
3
  import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';
4
4
  import type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';
@@ -9,29 +9,29 @@ import type {
9
9
  import type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';
10
10
 
11
11
  import type { DefaultStreamChatGenerics } from '../../../types/types';
12
- import { MessageStatusTypes } from '../../../utils/utils';
13
12
 
14
13
  export const useMessageActionHandlers = <
15
14
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
16
15
  >({
17
16
  channel,
18
17
  client,
19
- enforceUniqueReaction,
18
+ deleteMessage,
19
+ deleteReaction,
20
20
  message,
21
- removeMessage,
22
21
  retrySendMessage,
22
+ sendReaction,
23
23
  setEditingState,
24
24
  setQuotedMessageState,
25
25
  supportedReactions,
26
- updateMessage,
27
26
  }: Pick<
28
27
  MessagesContextValue<StreamChatGenerics>,
29
- | 'removeMessage'
28
+ | 'sendReaction'
29
+ | 'deleteMessage'
30
+ | 'deleteReaction'
30
31
  | 'retrySendMessage'
31
32
  | 'setEditingState'
32
33
  | 'setQuotedMessageState'
33
34
  | 'supportedReactions'
34
- | 'updateMessage'
35
35
  > &
36
36
  Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &
37
37
  Pick<ChatContextValue<StreamChatGenerics>, 'client'> &
@@ -48,12 +48,7 @@ export const useMessageActionHandlers = <
48
48
  );
49
49
 
50
50
  const handleDeleteMessage = async () => {
51
- if (message.status === MessageStatusTypes.FAILED) {
52
- removeMessage(message);
53
- } else {
54
- const data = await client.deleteMessage(message.id);
55
- updateMessage(data.message);
56
- }
51
+ await deleteMessage(message as MessageResponse<StreamChatGenerics>);
57
52
  };
58
53
 
59
54
  const handleToggleMuteUser = async () => {
@@ -128,15 +123,9 @@ export const useMessageActionHandlers = <
128
123
  try {
129
124
  if (channel && messageId) {
130
125
  if (ownReaction) {
131
- await channel.deleteReaction(messageId, reactionType);
126
+ await deleteReaction(reactionType, messageId);
132
127
  } else {
133
- await channel.sendReaction(
134
- messageId,
135
- {
136
- type: reactionType,
137
- } as Reaction<StreamChatGenerics>,
138
- { enforce_unique: enforceUniqueReaction },
139
- );
128
+ await sendReaction(reactionType, messageId);
140
129
  }
141
130
  }
142
131
  } catch (err) {
@@ -26,17 +26,19 @@ import {
26
26
  } from '../../../icons';
27
27
  import { setClipboardString } from '../../../native';
28
28
  import type { DefaultStreamChatGenerics } from '../../../types/types';
29
+ import { removeReservedFields } from '../../../utils/removeReservedFields';
29
30
  import { MessageStatusTypes } from '../../../utils/utils';
30
31
 
31
32
  import type { MessageType } from '../../MessageList/hooks/useMessageList';
32
33
  import type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';
33
- import { removeReservedFields } from '../utils/removeReservedFields';
34
34
 
35
35
  export const useMessageActions = <
36
36
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
37
37
  >({
38
38
  channel,
39
39
  client,
40
+ deleteMessage: deleteMessageFromContext,
41
+ deleteReaction,
40
42
  enforceUniqueReaction,
41
43
  handleBlock,
42
44
  handleCopy,
@@ -52,17 +54,18 @@ export const useMessageActions = <
52
54
  message,
53
55
  onThreadSelect,
54
56
  openThread,
55
- removeMessage,
56
57
  retrySendMessage,
57
58
  selectReaction,
59
+ sendReaction,
58
60
  setEditingState,
59
61
  setOverlay,
60
62
  setQuotedMessageState,
61
63
  supportedReactions,
62
64
  t,
63
- updateMessage,
64
65
  }: Pick<
65
66
  MessagesContextValue<StreamChatGenerics>,
67
+ | 'deleteMessage'
68
+ | 'sendReaction'
66
69
  | 'handleBlock'
67
70
  | 'handleCopy'
68
71
  | 'handleDelete'
@@ -75,6 +78,7 @@ export const useMessageActions = <
75
78
  | 'handleReaction'
76
79
  | 'handleThreadReply'
77
80
  | 'removeMessage'
81
+ | 'deleteReaction'
78
82
  | 'retrySendMessage'
79
83
  | 'setEditingState'
80
84
  | 'setQuotedMessageState'
@@ -107,14 +111,15 @@ export const useMessageActions = <
107
111
  } = useMessageActionHandlers({
108
112
  channel,
109
113
  client,
114
+ deleteMessage: deleteMessageFromContext,
115
+ deleteReaction,
110
116
  enforceUniqueReaction,
111
117
  message,
112
- removeMessage,
113
118
  retrySendMessage,
119
+ sendReaction,
114
120
  setEditingState,
115
121
  setQuotedMessageState,
116
122
  supportedReactions,
117
- updateMessage,
118
123
  });
119
124
 
120
125
  const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;
@@ -3,6 +3,7 @@ import { FlatList, I18nManager, StyleSheet, Text, TouchableOpacity, View } from
3
3
 
4
4
  import { UploadProgressIndicator } from './UploadProgressIndicator';
5
5
 
6
+ import { ChatContextValue, useChatContext } from '../../contexts';
6
7
  import {
7
8
  FileUpload,
8
9
  MessageInputContextValue,
@@ -126,7 +127,8 @@ type FileUploadPreviewPropsWithContext<
126
127
  MessageInputContextValue<StreamChatGenerics>,
127
128
  'fileUploads' | 'removeFile' | 'uploadFile' | 'setFileUploads'
128
129
  > &
129
- Pick<MessagesContextValue<StreamChatGenerics>, 'AudioAttachment' | 'FileAttachmentIcon'>;
130
+ Pick<MessagesContextValue<StreamChatGenerics>, 'AudioAttachment' | 'FileAttachmentIcon'> &
131
+ Pick<ChatContextValue<StreamChatGenerics>, 'enableOfflineSupport'>;
130
132
 
131
133
  const FileUploadPreviewWithContext = <
132
134
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
@@ -135,6 +137,7 @@ const FileUploadPreviewWithContext = <
135
137
  ) => {
136
138
  const {
137
139
  AudioAttachment,
140
+ enableOfflineSupport,
138
141
  FileAttachmentIcon,
139
142
  fileUploads,
140
143
  removeFile,
@@ -211,7 +214,7 @@ const FileUploadPreviewWithContext = <
211
214
  } = useTheme();
212
215
 
213
216
  const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {
214
- const indicatorType = getIndicatorTypeForFileState(item.state);
217
+ const indicatorType = getIndicatorTypeForFileState(item.state, enableOfflineSupport);
215
218
 
216
219
  const lastIndexOfDot = item.file.name.lastIndexOf('.');
217
220
 
@@ -389,6 +392,7 @@ export const FileUploadPreview = <
389
392
  >(
390
393
  props: FileUploadPreviewProps<StreamChatGenerics>,
391
394
  ) => {
395
+ const { enableOfflineSupport } = useChatContext<StreamChatGenerics>();
392
396
  const { fileUploads, removeFile, setFileUploads, uploadFile } =
393
397
  useMessageInputContext<StreamChatGenerics>();
394
398
  const { AudioAttachment, FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();
@@ -403,6 +407,7 @@ export const FileUploadPreview = <
403
407
  setFileUploads,
404
408
  uploadFile,
405
409
  }}
410
+ {...{ enableOfflineSupport }}
406
411
  {...props}
407
412
  />
408
413
  );
@@ -11,6 +11,7 @@ import {
11
11
 
12
12
  import { UploadProgressIndicator } from './UploadProgressIndicator';
13
13
 
14
+ import { ChatContextValue, useChatContext } from '../../contexts';
14
15
  import {
15
16
  ImageUpload,
16
17
  MessageInputContextValue,
@@ -78,7 +79,8 @@ type ImageUploadPreviewPropsWithContext<
78
79
  > = Pick<
79
80
  MessageInputContextValue<StreamChatGenerics>,
80
81
  'imageUploads' | 'removeImage' | 'uploadImage'
81
- >;
82
+ > &
83
+ Pick<ChatContextValue<StreamChatGenerics>, 'enableOfflineSupport'>;
82
84
 
83
85
  export type ImageUploadPreviewProps<
84
86
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
@@ -91,7 +93,7 @@ const ImageUploadPreviewWithContext = <
91
93
  >(
92
94
  props: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,
93
95
  ) => {
94
- const { imageUploads, removeImage, uploadImage } = props;
96
+ const { enableOfflineSupport, imageUploads, removeImage, uploadImage } = props;
95
97
 
96
98
  const {
97
99
  theme: {
@@ -129,7 +131,7 @@ const ImageUploadPreviewWithContext = <
129
131
  };
130
132
 
131
133
  const renderItem = ({ index, item }: ImageUploadPreviewItem) => {
132
- const indicatorType = getIndicatorTypeForFileState(item.state);
134
+ const indicatorType = getIndicatorTypeForFileState(item.state, enableOfflineSupport);
133
135
  const itemMarginForIndex = index === imageUploads.length - 1 ? { marginRight: 8 } : {};
134
136
 
135
137
  return (
@@ -224,11 +226,13 @@ export const ImageUploadPreview = <
224
226
  >(
225
227
  props: ImageUploadPreviewProps<StreamChatGenerics>,
226
228
  ) => {
229
+ const { enableOfflineSupport } = useChatContext<StreamChatGenerics>();
227
230
  const { imageUploads, removeImage, uploadImage } = useMessageInputContext<StreamChatGenerics>();
228
231
 
229
232
  return (
230
233
  <MemoizedImageUploadPreviewWithContext
231
234
  {...{ imageUploads, removeImage, uploadImage }}
235
+ {...{ enableOfflineSupport }}
232
236
  {...props}
233
237
  />
234
238
  );
@@ -5,6 +5,7 @@ import type { UserResponse } from 'stream-chat';
5
5
 
6
6
  import { useCountdown } from './hooks/useCountdown';
7
7
 
8
+ import { ChatContextValue, useChatContext } from '../../contexts';
8
9
  import { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';
9
10
  import {
10
11
  ChannelContextValue,
@@ -78,7 +79,8 @@ const styles = StyleSheet.create({
78
79
 
79
80
  type MessageInputPropsWithContext<
80
81
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
81
- > = Pick<ChannelContextValue<StreamChatGenerics>, 'disabled' | 'members' | 'watchers'> &
82
+ > = Pick<ChatContextValue<StreamChatGenerics>, 'isOnline'> &
83
+ Pick<ChannelContextValue<StreamChatGenerics>, 'disabled' | 'members' | 'watchers'> &
82
84
  Pick<
83
85
  MessageInputContextValue<StreamChatGenerics>,
84
86
  | 'additionalTextInputProps'
@@ -159,6 +161,7 @@ const MessageInputWithContext = <
159
161
  InputEditingStateHeader,
160
162
  InputGiphySearch,
161
163
  InputReplyStateHeader,
164
+ isOnline,
162
165
  isValidMessage,
163
166
  maxNumberOfFiles,
164
167
  members,
@@ -526,7 +529,7 @@ const MessageInputWithContext = <
526
529
  ) : null}
527
530
  {fileUploads.length ? <FileUploadPreview /> : null}
528
531
  {giphyActive ? (
529
- <InputGiphySearch />
532
+ <InputGiphySearch disabled={!isOnline} />
530
533
  ) : (
531
534
  <View style={[styles.autoCompleteInputContainer, autoCompleteInputContainer]}>
532
535
  <AutoCompleteInput<StreamChatGenerics>
@@ -540,7 +543,11 @@ const MessageInputWithContext = <
540
543
  {cooldownRemainingSeconds ? (
541
544
  <CooldownTimer seconds={cooldownRemainingSeconds} />
542
545
  ) : (
543
- <SendButton disabled={disabled || sending.current || !isValidMessage()} />
546
+ <SendButton
547
+ disabled={
548
+ disabled || sending.current || !isValidMessage() || (giphyActive && !isOnline)
549
+ }
550
+ />
544
551
  )}
545
552
  </View>
546
553
  </>
@@ -598,6 +605,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
598
605
  fileUploads: prevFileUploads,
599
606
  giphyActive: prevGiphyActive,
600
607
  imageUploads: prevImageUploads,
608
+ isOnline: prevIsOnline,
601
609
  isValidMessage: prevIsValidMessage,
602
610
  mentionedUsers: prevMentionedUsers,
603
611
  quotedMessage: prevQuotedMessage,
@@ -616,6 +624,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
616
624
  fileUploads: nextFileUploads,
617
625
  giphyActive: nextGiphyActive,
618
626
  imageUploads: nextImageUploads,
627
+ isOnline: nextIsOnline,
619
628
  isValidMessage: nextIsValidMessage,
620
629
  mentionedUsers: nextMentionedUsers,
621
630
  quotedMessage: nextQuotedMessage,
@@ -661,6 +670,9 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
661
670
  const showMoreOptionsEqual = prevShowMoreOptions === nextShowMoreOptions;
662
671
  if (!showMoreOptionsEqual) return false;
663
672
 
673
+ const isOnlineEqual = prevIsOnline === nextIsOnline;
674
+ if (!isOnlineEqual) return false;
675
+
664
676
  const isValidMessageEqual = prevIsValidMessage() === nextIsValidMessage();
665
677
  if (!isValidMessageEqual) return false;
666
678
 
@@ -719,6 +731,7 @@ export const MessageInput = <
719
731
  >(
720
732
  props: MessageInputProps<StreamChatGenerics>,
721
733
  ) => {
734
+ const { isOnline } = useChatContext();
722
735
  const ownCapabilities = useOwnCapabilitiesContext();
723
736
 
724
737
  const { disabled = false, members, watchers } = useChannelContext<StreamChatGenerics>();
@@ -809,6 +822,7 @@ export const MessageInput = <
809
822
  InputEditingStateHeader,
810
823
  InputGiphySearch,
811
824
  InputReplyStateHeader,
825
+ isOnline,
812
826
  isValidMessage,
813
827
  maxNumberOfFiles,
814
828
  members,
@@ -38,7 +38,7 @@ const SendButtonWithContext = <
38
38
  style={[sendButton]}
39
39
  testID='send-button'
40
40
  >
41
- {giphyActive && <Search pathFill={accent_blue} />}
41
+ {giphyActive && <Search pathFill={disabled ? grey_gainsboro : accent_blue} />}
42
42
  {!giphyActive && disabled && <SendRight pathFill={grey_gainsboro} />}
43
43
  {!giphyActive && !disabled && <SendUp pathFill={accent_blue} />}
44
44
  </TouchableOpacity>
@@ -72,7 +72,6 @@ export * from './Chat/Chat';
72
72
  export * from './Chat/hooks/useCreateChatContext';
73
73
  export * from './Chat/hooks/useIsOnline';
74
74
  export * from './Chat/hooks/useMutedUsers';
75
- export * from './Chat/hooks/useConnectionRecovered';
76
75
  export * from './Chat/hooks/useSyncDatabase';
77
76
 
78
77
  export * from './ImageGallery/ImageGallery';
@@ -109,7 +108,7 @@ export * from './Message/MessageSimple/MessageTextContainer';
109
108
  export * from './Message/MessageSimple/ReactionList';
110
109
  export * from './Message/MessageSimple/utils/renderText';
111
110
  export * from './Message/utils/messageActions';
112
- export * from './Message/utils/removeReservedFields';
111
+ export * from '../utils/removeReservedFields';
113
112
 
114
113
  export * from './MessageInput/AttachButton';
115
114
  export * from './MessageInput/CommandsButton';
@@ -1,7 +1,7 @@
1
1
  import React, { PropsWithChildren, useContext } from 'react';
2
2
  import type { ImageProps } from 'react-native';
3
3
 
4
- import type { AppSettingsAPIResponse, Channel, EventHandler, Mute, StreamChat } from 'stream-chat';
4
+ import type { AppSettingsAPIResponse, Channel, Mute, StreamChat } from 'stream-chat';
5
5
 
6
6
  import type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';
7
7
  import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
@@ -44,7 +44,6 @@ export type ChatContextValue<
44
44
  * @overrideType Function
45
45
  */
46
46
  setActiveChannel: (newChannel?: Channel<StreamChatGenerics>) => void;
47
- subscribeConnectionRecoveredCallback: (callback: EventHandler<StreamChatGenerics>) => () => void;
48
47
  /**
49
48
  * Instance of channel object from stream-chat package.
50
49
  *