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
@@ -1,10 +1,11 @@
1
1
  import type { MessageLabel, Role } from 'stream-chat';
2
+ import type { PendingTaskTypes } from './types';
3
+ import type { ValueOf } from '../types/types';
2
4
  declare type Tables = {
3
5
  [P in keyof Schema]: {
4
6
  columns: {
5
7
  [K in keyof Schema[P]]: string;
6
8
  };
7
- primaryKey: Array<keyof Schema[P]>;
8
9
  foreignKeys?: Array<{
9
10
  column: `${Exclude<keyof Schema[P], symbol>}`;
10
11
  referenceTable: `${keyof Schema}`;
@@ -16,6 +17,7 @@ declare type Tables = {
16
17
  name: string;
17
18
  unique: boolean;
18
19
  }>;
20
+ primaryKey?: Array<keyof Schema[P]>;
19
21
  };
20
22
  };
21
23
  export declare const tables: Tables;
@@ -77,6 +79,15 @@ export declare type Schema = {
77
79
  text?: string;
78
80
  userId?: string;
79
81
  };
82
+ pendingTasks: {
83
+ channelId: string;
84
+ channelType: string;
85
+ createdAt: string;
86
+ id: number;
87
+ messageId: string;
88
+ payload: string;
89
+ type: ValueOf<PendingTaskTypes>;
90
+ };
80
91
  reactions: {
81
92
  createdAt: string;
82
93
  messageId: string;
@@ -0,0 +1,3 @@
1
+ import type { Schema } from '../schema';
2
+ import type { PreparedQueries } from '../types';
3
+ export declare const appendOrderByClause: <T extends keyof Schema>(selectQuery: string, orderBy?: Partial<{ [k in keyof Schema[T]]: 1 | -1; }> | undefined) => PreparedQueries;
@@ -10,4 +10,4 @@ import type { PreparedQueries, TableColumnNames, TableColumnValue } from '../typ
10
10
  * All the conditions will be joined with AND in final query.
11
11
  * @returns {string} Final select query
12
12
  */
13
- export declare const createSelectQuery: <T extends keyof Schema>(table: T, fields?: "*"[] | (keyof Schema[T])[], whereCondition?: Partial<{ [k in keyof Schema[T]]: TableColumnValue | TableColumnValue[]; }> | undefined) => PreparedQueries;
13
+ export declare const createSelectQuery: <T extends keyof Schema>(table: T, fields?: "*"[] | (keyof Schema[T])[], whereCondition?: Partial<{ [k in keyof Schema[T]]: TableColumnValue | TableColumnValue[]; }> | undefined, orderBy?: Partial<{ [k_1 in keyof Schema[T]]: 1 | -1; }> | undefined) => PreparedQueries;
@@ -1,3 +1,4 @@
1
+ import type { Channel, StreamChat } from 'stream-chat';
1
2
  import type { Schema } from './schema';
2
3
  export declare type Table = keyof Schema;
3
4
  export declare type TableRow<T extends Table> = Schema[T];
@@ -7,3 +8,23 @@ export declare type TableRowJoinedUser<T extends Table> = Schema[T] & {
7
8
  export declare type TableColumnNames<T extends Table> = keyof Schema[T];
8
9
  export declare type TableColumnValue = string | boolean | number | undefined;
9
10
  export declare type PreparedQueries = [string] | [string, Array<any>];
11
+ export declare type PendingTaskTypes = {
12
+ deleteMessage: 'delete-message';
13
+ deleteReaction: 'delete-reaction';
14
+ sendReaction: 'send-reaction';
15
+ };
16
+ export declare type PendingTask = {
17
+ channelId: string;
18
+ channelType: string;
19
+ messageId: string;
20
+ id?: number;
21
+ } & ({
22
+ payload: Parameters<Channel['sendReaction']>;
23
+ type: PendingTaskTypes['sendReaction'];
24
+ } | {
25
+ payload: Parameters<StreamChat['deleteMessage']>;
26
+ type: PendingTaskTypes['deleteMessage'];
27
+ } | {
28
+ payload: Parameters<Channel['deleteReaction']>;
29
+ type: PendingTaskTypes['deleteReaction'];
30
+ });
@@ -22,6 +22,7 @@ export declare type File = {
22
22
  export declare type DefaultAttachmentType = UnknownType & {
23
23
  file_size?: number | string;
24
24
  mime_type?: string;
25
+ originalFile?: File;
25
26
  };
26
27
  interface DefaultUserType extends UnknownType {
27
28
  image?: string;
@@ -31,7 +32,7 @@ interface DefaultChannelType extends UnknownType {
31
32
  image?: string;
32
33
  }
33
34
  export interface DefaultStreamChatGenerics extends ExtendableGenerics {
34
- attachmentType: UnknownType;
35
+ attachmentType: DefaultAttachmentType;
35
36
  channelType: DefaultChannelType;
36
37
  commandType: LiteralStringForUnion;
37
38
  eventType: UnknownType;
@@ -40,4 +41,5 @@ export interface DefaultStreamChatGenerics extends ExtendableGenerics {
40
41
  userType: DefaultUserType;
41
42
  }
42
43
  export declare type UnknownType = Record<string, unknown>;
44
+ export declare type ValueOf<T> = T[keyof T];
43
45
  export {};
@@ -0,0 +1,47 @@
1
+ import type { StreamChat } from 'stream-chat';
2
+ import type { PendingTask } from '../store/types';
3
+ import type { DefaultStreamChatGenerics } from '../types/types';
4
+ export declare class DBSyncManager {
5
+ static syncStatus: boolean;
6
+ static listeners: Array<(status: boolean) => void>;
7
+ static client: StreamChat | null;
8
+ /**
9
+ * Returns weather channel states in local DB are synced with backend or not.
10
+ * @returns boolean
11
+ */
12
+ static getSyncStatus: () => boolean;
13
+ /**
14
+ * Initializes the DBSyncManager. This function should be called only once
15
+ * throughout the lifetime of SDK.
16
+ *
17
+ * @param client
18
+ */
19
+ static init: (client: StreamChat) => Promise<void>;
20
+ /**
21
+ * Subscribes a listener for sync status change.
22
+ *
23
+ * @param listener {function}
24
+ * @returns {function} to unsubscribe the listener.
25
+ */
26
+ static onSyncStatusChange: (listener: (status: boolean) => void) => {
27
+ unsubscribe: () => void;
28
+ };
29
+ static sync: () => Promise<void>;
30
+ static syncAndExecutePendingTasks: () => Promise<void>;
31
+ static queueTask: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ client, task, }: {
32
+ client: StreamChat<StreamChatGenerics>;
33
+ task: PendingTask;
34
+ }) => Promise<(import("stream-chat").APIResponse & {
35
+ message: import("stream-chat").MessageResponse<StreamChatGenerics>;
36
+ }) | undefined>;
37
+ static executeTask: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ client, task, }: {
38
+ client: StreamChat<StreamChatGenerics>;
39
+ task: PendingTask;
40
+ }) => Promise<import("stream-chat").APIResponse & {
41
+ message: import("stream-chat").MessageResponse<StreamChatGenerics>;
42
+ }>;
43
+ static executePendingTasks: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(client: StreamChat<StreamChatGenerics>) => Promise<void>;
44
+ static dropPendingTasks: (conditions: {
45
+ messageId: string;
46
+ }) => void;
47
+ }
@@ -0,0 +1,9 @@
1
+ import type { Channel, UserResponse } from 'stream-chat';
2
+ import type { DefaultStreamChatGenerics } from '../types/types';
3
+ export declare const addReactionToLocalState: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, enforceUniqueReaction, messageId, reactionType, user, }: {
4
+ channel: Channel<StreamChatGenerics>;
5
+ enforceUniqueReaction: boolean;
6
+ messageId: string;
7
+ reactionType: string;
8
+ user: UserResponse<StreamChatGenerics>;
9
+ }) => void;
@@ -0,0 +1,8 @@
1
+ import type { Channel, UserResponse } from 'stream-chat';
2
+ import type { DefaultStreamChatGenerics } from '../types/types';
3
+ export declare const removeReactionFromLocalState: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, messageId, reactionType, user, }: {
4
+ channel: Channel<StreamChatGenerics>;
5
+ messageId: string;
6
+ reactionType: string;
7
+ user: UserResponse<StreamChatGenerics>;
8
+ }) => void;
@@ -1,3 +1,3 @@
1
- import type { DefaultStreamChatGenerics } from '../../../types/types';
2
- import type { MessageType } from '../../MessageList/hooks/useMessageList';
1
+ import type { MessageType } from '../components/MessageList/hooks/useMessageList';
2
+ import type { DefaultStreamChatGenerics } from '../types/types';
3
3
  export declare const removeReservedFields: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(message: MessageType<StreamChatGenerics>) => MessageType<StreamChatGenerics>;
@@ -5,7 +5,7 @@ import type { MentionAllAppUsersQuery } from '../contexts/messageInputContext/Me
5
5
  import type { SuggestionCommand, SuggestionComponentType, SuggestionUser } from '../contexts/suggestionsContext/SuggestionsContext';
6
6
  import { Emoji } from '../emoji-data/compiled';
7
7
  import type { IconProps } from '../icons/utils/base';
8
- import type { DefaultStreamChatGenerics } from '../types/types';
8
+ import type { DefaultStreamChatGenerics, ValueOf } from '../types/types';
9
9
  export declare type ReactionData = {
10
10
  Icon: React.FC<IconProps>;
11
11
  type: string;
@@ -29,9 +29,8 @@ export declare const MessageStatusTypes: {
29
29
  SENDING: string;
30
30
  };
31
31
  export declare type FileStateValue = typeof FileState[keyof typeof FileState];
32
- declare type ValueOf<T> = T[keyof T];
33
32
  declare type Progress = ValueOf<typeof ProgressIndicatorTypes>;
34
- export declare const getIndicatorTypeForFileState: (fileState: FileStateValue) => Progress | null;
33
+ export declare const getIndicatorTypeForFileState: (fileState: FileStateValue, enableOfflineSupport: boolean) => Progress | null;
35
34
  export declare const queryMembersDebounced: DebouncedFunc<(<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(channel: Channel<StreamChatGenerics>, query: SuggestionUser<StreamChatGenerics>["name"], onReady?: ((users: SuggestionUser<StreamChatGenerics>[]) => void) | undefined, options?: {
36
35
  limit?: number;
37
36
  }) => Promise<void>)>;
@@ -105,6 +104,7 @@ export declare type QueryMembersFunction<StreamChatGenerics extends DefaultStrea
105
104
  export declare const ACITriggerSettings: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, client, onMentionSelectItem, }: ACITriggerSettingsParams<StreamChatGenerics>) => TriggerSettings<StreamChatGenerics>;
106
105
  export declare const makeImageCompatibleUrl: (url: string) => string;
107
106
  export declare const getUrlWithoutParams: (url?: string | undefined) => string | undefined;
107
+ export declare const isLocalUrl: (url: string) => boolean;
108
108
  export declare const vw: (percentageWidth: number, rounded?: boolean) => number;
109
109
  export declare const vh: (percentageHeight: number, rounded?: boolean) => number;
110
110
  export declare const generateRandomId: (a?: string) => string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stream-chat-react-native-core",
3
3
  "description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
4
- "version": "5.5.1",
4
+ "version": "5.6.0-beta.1",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -44,6 +44,7 @@
44
44
  "extract-changelog": "FILTER_PATH='package' TAG_FORMAT='v${version}' node ../release/extract-changelog.js",
45
45
  "release": "FILTER_PATH='package' TAG_FORMAT='v${version}' node ../release/prod",
46
46
  "release-next": "FILTER_PATH='package' TAG_FORMAT='v${version}' node ../release/next",
47
+ "prepublishOnly": "echo 'running prepublishOnly for core package' && bash ./bin/before-tag.sh && bash ./bin/release.sh && echo 'finished running prepublishOnly for core package'",
47
48
  "prepack": " cp ../README.md .",
48
49
  "postpack": "rm README.md"
49
50
  },
@@ -135,7 +136,7 @@
135
136
  "react-native": "0.67.3",
136
137
  "react-native-builder-bob": "0.18.1",
137
138
  "react-native-gesture-handler": "2.3.1",
138
- "react-native-quick-sqlite": "^4.0.3",
139
+ "react-native-quick-sqlite": "5.1.0",
139
140
  "react-native-reanimated": "2.7.0",
140
141
  "react-native-svg": "12.1.1",
141
142
  "react-native-typescript-transformer": "1.2.13",
@@ -144,4 +145,4 @@
144
145
  "uuid": "^8.3.2",
145
146
  "webpack": "4.44.2"
146
147
  }
147
- }
148
+ }
@@ -14,6 +14,7 @@ import { queryChannelsApi } from '../mock-builders/api/queryChannels';
14
14
  import { useMockedApis } from '../mock-builders/api/useMockedApis';
15
15
  import dispatchChannelTruncatedEvent from '../mock-builders/event/channelTruncated';
16
16
  import dispatchChannelUpdatedEvent from '../mock-builders/event/channelUpdated';
17
+ import dispatchConnectionChangedEvent from '../mock-builders/event/connectionChanged';
17
18
  import dispatchMemberAddedEvent from '../mock-builders/event/memberAdded';
18
19
  import dispatchMemberRemovedEvent from '../mock-builders/event/memberRemoved';
19
20
  import dispatchMemberUpdatedEvent from '../mock-builders/event/memberUpdated';
@@ -206,7 +207,6 @@ describe('Offline support is enabled', () => {
206
207
 
207
208
  const channelQueriesRows = BetterSqlite.selectFromTable('channelQueries');
208
209
  const cidsInDB = JSON.parse(channelQueriesRows[0].cids);
209
-
210
210
  const filterSortQueryInDB = channelQueriesRows[0].id;
211
211
  const actualFilterSortQueryInDB = convertFilterSortToQuery({ filters, sort });
212
212
 
@@ -285,8 +285,10 @@ describe('Offline support is enabled', () => {
285
285
 
286
286
  it('should store filter-sort query and cids on ChannelList in channelQueries table', async () => {
287
287
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
288
-
289
288
  const { getByTestId, queryAllByA11yRole } = renderComponent();
289
+ act(() => dispatchConnectionChangedEvent(chatClient));
290
+ // await waiter();
291
+ act(() => dispatchConnectionChangedEvent(chatClient));
290
292
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
291
293
 
292
294
  expectCIDsOnUIToBeInDB(queryAllByA11yRole);
@@ -296,6 +298,7 @@ describe('Offline support is enabled', () => {
296
298
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
297
299
 
298
300
  const { getByTestId, queryAllByA11yRole } = renderComponent();
301
+ act(() => dispatchConnectionChangedEvent(chatClient));
299
302
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
300
303
 
301
304
  expectAllChannelsWithStateToBeInDB(queryAllByA11yRole);
@@ -305,6 +308,7 @@ describe('Offline support is enabled', () => {
305
308
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
306
309
 
307
310
  const { getByTestId } = renderComponent();
311
+ act(() => dispatchConnectionChangedEvent(chatClient));
308
312
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
309
313
  const newMessage = generateMessage({
310
314
  cid: channels[0].channel.cid,
@@ -322,6 +326,7 @@ describe('Offline support is enabled', () => {
322
326
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
323
327
 
324
328
  const { getByTestId, queryAllByA11yRole } = renderComponent();
329
+ act(() => dispatchConnectionChangedEvent(chatClient));
325
330
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
326
331
 
327
332
  const newChannel = createChannel();
@@ -343,6 +348,7 @@ describe('Offline support is enabled', () => {
343
348
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
344
349
 
345
350
  const { getByTestId } = renderComponent();
351
+ act(() => dispatchConnectionChangedEvent(chatClient));
346
352
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
347
353
 
348
354
  const updatedMessage = { ...channels[0].messages[0] };
@@ -361,6 +367,7 @@ describe('Offline support is enabled', () => {
361
367
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
362
368
 
363
369
  const { getByTestId, queryAllByA11yRole } = renderComponent();
370
+ act(() => dispatchConnectionChangedEvent(chatClient));
364
371
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
365
372
  const removedChannel = channels[getRandomInt(0, channels.length - 1)].channel;
366
373
  act(() => dispatchNotificationRemovedFromChannel(chatClient, removedChannel));
@@ -387,6 +394,7 @@ describe('Offline support is enabled', () => {
387
394
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
388
395
 
389
396
  const { getByTestId, queryAllByA11yRole } = renderComponent();
397
+ act(() => dispatchConnectionChangedEvent(chatClient));
390
398
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
391
399
 
392
400
  const newChannel = createChannel();
@@ -416,6 +424,7 @@ describe('Offline support is enabled', () => {
416
424
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
417
425
 
418
426
  const { getByTestId, queryAllByA11yRole } = renderComponent();
427
+ act(() => dispatchConnectionChangedEvent(chatClient));
419
428
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
420
429
 
421
430
  const channelToTruncate = channels[getRandomInt(0, channels.length - 1)].channel;
@@ -440,6 +449,7 @@ describe('Offline support is enabled', () => {
440
449
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
441
450
 
442
451
  const { getByTestId } = renderComponent();
452
+ act(() => dispatchConnectionChangedEvent(chatClient));
443
453
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
444
454
 
445
455
  const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -481,6 +491,7 @@ describe('Offline support is enabled', () => {
481
491
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
482
492
 
483
493
  const { getByTestId } = renderComponent();
494
+ act(() => dispatchConnectionChangedEvent(chatClient));
484
495
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
485
496
 
486
497
  const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -528,6 +539,7 @@ describe('Offline support is enabled', () => {
528
539
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
529
540
 
530
541
  const { getByTestId } = renderComponent();
542
+ act(() => dispatchConnectionChangedEvent(chatClient));
531
543
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
532
544
 
533
545
  const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -561,6 +573,7 @@ describe('Offline support is enabled', () => {
561
573
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
562
574
 
563
575
  const { getByTestId } = renderComponent();
576
+ act(() => dispatchConnectionChangedEvent(chatClient));
564
577
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
565
578
 
566
579
  const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -579,6 +592,7 @@ describe('Offline support is enabled', () => {
579
592
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
580
593
 
581
594
  const { getByTestId } = renderComponent();
595
+ act(() => dispatchConnectionChangedEvent(chatClient));
582
596
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
583
597
 
584
598
  const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -597,6 +611,7 @@ describe('Offline support is enabled', () => {
597
611
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
598
612
 
599
613
  const { getByTestId } = renderComponent();
614
+ act(() => dispatchConnectionChangedEvent(chatClient));
600
615
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
601
616
 
602
617
  const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -620,6 +635,7 @@ describe('Offline support is enabled', () => {
620
635
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
621
636
 
622
637
  const { getByTestId } = renderComponent();
638
+ act(() => dispatchConnectionChangedEvent(chatClient));
623
639
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
624
640
 
625
641
  const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -640,6 +656,7 @@ describe('Offline support is enabled', () => {
640
656
  useMockedApis(chatClient, [queryChannelsApi(channels)]);
641
657
 
642
658
  const { getByTestId } = renderComponent();
659
+ act(() => dispatchConnectionChangedEvent(chatClient));
643
660
  await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
644
661
  const targetChannel = channels[getRandomInt(0, channels.length - 1)];
645
662
  const targetMember = targetChannel.members[getRandomInt(0, targetChannel.members.length - 1)];