chat 1.0.8 → 4.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 (327) hide show
  1. package/dist/chunk-ACQNDPTB.js +356 -0
  2. package/dist/chunk-ACQNDPTB.js.map +1 -0
  3. package/dist/index.d.ts +1312 -0
  4. package/dist/index.js +1433 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/jsx-runtime-D7zHSnXe.d.ts +349 -0
  7. package/dist/jsx-runtime.d.ts +1 -0
  8. package/dist/jsx-runtime.js +17 -0
  9. package/dist/jsx-runtime.js.map +1 -0
  10. package/package.json +61 -97
  11. package/lib/module/ChatContext/index.js +0 -2
  12. package/lib/module/ChatContext/index.js.map +0 -1
  13. package/lib/module/ChatContext/types.js +0 -2
  14. package/lib/module/ChatContext/types.js.map +0 -1
  15. package/lib/module/classes/Chat/index.js +0 -2
  16. package/lib/module/classes/Chat/index.js.map +0 -1
  17. package/lib/module/classes/Chat/types.js +0 -2
  18. package/lib/module/classes/Chat/types.js.map +0 -1
  19. package/lib/module/classes/Inbox/index.js +0 -2
  20. package/lib/module/classes/Inbox/index.js.map +0 -1
  21. package/lib/module/classes/Inbox/types.js +0 -2
  22. package/lib/module/classes/Inbox/types.js.map +0 -1
  23. package/lib/module/classes/Message/index.js +0 -2
  24. package/lib/module/classes/Message/index.js.map +0 -1
  25. package/lib/module/classes/Message/types.js +0 -2
  26. package/lib/module/classes/Message/types.js.map +0 -1
  27. package/lib/module/classes/Reaction/index.js +0 -2
  28. package/lib/module/classes/Reaction/index.js.map +0 -1
  29. package/lib/module/classes/Reaction/types.js +0 -2
  30. package/lib/module/classes/Reaction/types.js.map +0 -1
  31. package/lib/module/classes/Room/index.js +0 -2
  32. package/lib/module/classes/Room/index.js.map +0 -1
  33. package/lib/module/classes/Room/types.js +0 -2
  34. package/lib/module/classes/Room/types.js.map +0 -1
  35. package/lib/module/classes/index.js +0 -2
  36. package/lib/module/classes/index.js.map +0 -1
  37. package/lib/module/components/Avatar/index.js +0 -2
  38. package/lib/module/components/Avatar/index.js.map +0 -1
  39. package/lib/module/components/Chat/Bubble/index.js +0 -2
  40. package/lib/module/components/Chat/Bubble/index.js.map +0 -1
  41. package/lib/module/components/Chat/Composer/Input/index.js +0 -2
  42. package/lib/module/components/Chat/Composer/Input/index.js.map +0 -1
  43. package/lib/module/components/Chat/Composer/Send/index.js +0 -2
  44. package/lib/module/components/Chat/Composer/Send/index.js.map +0 -1
  45. package/lib/module/components/Chat/Composer/index.js +0 -2
  46. package/lib/module/components/Chat/Composer/index.js.map +0 -1
  47. package/lib/module/components/Chat/Media/Image/index.js +0 -2
  48. package/lib/module/components/Chat/Media/Image/index.js.map +0 -1
  49. package/lib/module/components/Chat/Media/index.js +0 -2
  50. package/lib/module/components/Chat/Media/index.js.map +0 -1
  51. package/lib/module/components/Chat/Message/Swiper/Action/index.js +0 -2
  52. package/lib/module/components/Chat/Message/Swiper/Action/index.js.map +0 -1
  53. package/lib/module/components/Chat/Message/Swiper/index.js +0 -2
  54. package/lib/module/components/Chat/Message/Swiper/index.js.map +0 -1
  55. package/lib/module/components/Chat/Message/Touchable/index.js +0 -2
  56. package/lib/module/components/Chat/Message/Touchable/index.js.map +0 -1
  57. package/lib/module/components/Chat/Message/index.js +0 -2
  58. package/lib/module/components/Chat/Message/index.js.map +0 -1
  59. package/lib/module/components/Chat/SystemMessage/index.js +0 -2
  60. package/lib/module/components/Chat/SystemMessage/index.js.map +0 -1
  61. package/lib/module/components/Chat/TypingFooter/index.js +0 -2
  62. package/lib/module/components/Chat/TypingFooter/index.js.map +0 -1
  63. package/lib/module/components/Chat/index.js +0 -2
  64. package/lib/module/components/Chat/index.js.map +0 -1
  65. package/lib/module/components/Chat/types.js +0 -2
  66. package/lib/module/components/Chat/types.js.map +0 -1
  67. package/lib/module/components/Chat-Old/Bubble/index.js +0 -2
  68. package/lib/module/components/Chat-Old/Bubble/index.js.map +0 -1
  69. package/lib/module/components/Chat-Old/Composer/Input/index.js +0 -2
  70. package/lib/module/components/Chat-Old/Composer/Input/index.js.map +0 -1
  71. package/lib/module/components/Chat-Old/Composer/Send/index.js +0 -2
  72. package/lib/module/components/Chat-Old/Composer/Send/index.js.map +0 -1
  73. package/lib/module/components/Chat-Old/Composer/index.js +0 -2
  74. package/lib/module/components/Chat-Old/Composer/index.js.map +0 -1
  75. package/lib/module/components/Chat-Old/Message/index.js +0 -2
  76. package/lib/module/components/Chat-Old/Message/index.js.map +0 -1
  77. package/lib/module/components/Chat-Old/Swiper/Action/index.js +0 -2
  78. package/lib/module/components/Chat-Old/Swiper/Action/index.js.map +0 -1
  79. package/lib/module/components/Chat-Old/Swiper/index.js +0 -2
  80. package/lib/module/components/Chat-Old/Swiper/index.js.map +0 -1
  81. package/lib/module/components/Chat-Old/SystemMessage/index.js +0 -2
  82. package/lib/module/components/Chat-Old/SystemMessage/index.js.map +0 -1
  83. package/lib/module/components/Chat-Old/index.js +0 -2
  84. package/lib/module/components/Chat-Old/index.js.map +0 -1
  85. package/lib/module/components/Chat-Old/types.js +0 -2
  86. package/lib/module/components/Chat-Old/types.js.map +0 -1
  87. package/lib/module/components/ChatProvider/index.js +0 -2
  88. package/lib/module/components/ChatProvider/index.js.map +0 -1
  89. package/lib/module/components/ChatProvider/types.js +0 -2
  90. package/lib/module/components/ChatProvider/types.js.map +0 -1
  91. package/lib/module/components/Inbox/Item/Circle/index.js +0 -2
  92. package/lib/module/components/Inbox/Item/Circle/index.js.map +0 -1
  93. package/lib/module/components/Inbox/Item/Circle/types.js +0 -2
  94. package/lib/module/components/Inbox/Item/Circle/types.js.map +0 -1
  95. package/lib/module/components/Inbox/Item/Initials/index.js +0 -2
  96. package/lib/module/components/Inbox/Item/Initials/index.js.map +0 -1
  97. package/lib/module/components/Inbox/Item/ItemDate/index.js +0 -2
  98. package/lib/module/components/Inbox/Item/ItemDate/index.js.map +0 -1
  99. package/lib/module/components/Inbox/Item/Separator/index.js +0 -2
  100. package/lib/module/components/Inbox/Item/Separator/index.js.map +0 -1
  101. package/lib/module/components/Inbox/Item/Subtitle/index.js +0 -2
  102. package/lib/module/components/Inbox/Item/Subtitle/index.js.map +0 -1
  103. package/lib/module/components/Inbox/Item/Swipeable/index.js +0 -2
  104. package/lib/module/components/Inbox/Item/Swipeable/index.js.map +0 -1
  105. package/lib/module/components/Inbox/Item/Title/index.js +0 -2
  106. package/lib/module/components/Inbox/Item/Title/index.js.map +0 -1
  107. package/lib/module/components/Inbox/Item/UnreadIndicator/index.js +0 -2
  108. package/lib/module/components/Inbox/Item/UnreadIndicator/index.js.map +0 -1
  109. package/lib/module/components/Inbox/Item/index.js +0 -2
  110. package/lib/module/components/Inbox/Item/index.js.map +0 -1
  111. package/lib/module/components/Inbox/index.js +0 -2
  112. package/lib/module/components/Inbox/index.js.map +0 -1
  113. package/lib/module/components/Inbox/question.md +0 -21
  114. package/lib/module/components/Inbox/readme.md +0 -21
  115. package/lib/module/components/Inbox/types.js +0 -2
  116. package/lib/module/components/Inbox/types.js.map +0 -1
  117. package/lib/module/components/RoomCreator/Content/Footer/Button/index.js +0 -2
  118. package/lib/module/components/RoomCreator/Content/Footer/Button/index.js.map +0 -1
  119. package/lib/module/components/RoomCreator/Content/Footer/Input/index.js +0 -2
  120. package/lib/module/components/RoomCreator/Content/Footer/Input/index.js.map +0 -1
  121. package/lib/module/components/RoomCreator/Content/Footer/index.js +0 -2
  122. package/lib/module/components/RoomCreator/Content/Footer/index.js.map +0 -1
  123. package/lib/module/components/RoomCreator/Content/Item/Icon/index.js +0 -2
  124. package/lib/module/components/RoomCreator/Content/Item/Icon/index.js.map +0 -1
  125. package/lib/module/components/RoomCreator/Content/Item/index.js +0 -2
  126. package/lib/module/components/RoomCreator/Content/Item/index.js.map +0 -1
  127. package/lib/module/components/RoomCreator/Content/index.js +0 -2
  128. package/lib/module/components/RoomCreator/Content/index.js.map +0 -1
  129. package/lib/module/components/RoomCreator/Header/index.js +0 -2
  130. package/lib/module/components/RoomCreator/Header/index.js.map +0 -1
  131. package/lib/module/components/RoomCreator/index.js +0 -2
  132. package/lib/module/components/RoomCreator/index.js.map +0 -1
  133. package/lib/module/components/RoomCreator/types.js +0 -2
  134. package/lib/module/components/RoomCreator/types.js.map +0 -1
  135. package/lib/module/components/TypingIndicator/index.js +0 -2
  136. package/lib/module/components/TypingIndicator/index.js.map +0 -1
  137. package/lib/module/components/index.js +0 -2
  138. package/lib/module/components/index.js.map +0 -1
  139. package/lib/module/helpers/getInitials.js +0 -2
  140. package/lib/module/helpers/getInitials.js.map +0 -1
  141. package/lib/module/helpers/sortByAvatar.js +0 -2
  142. package/lib/module/helpers/sortByAvatar.js.map +0 -1
  143. package/lib/module/hooks/index.js +0 -2
  144. package/lib/module/hooks/index.js.map +0 -1
  145. package/lib/module/hooks/useCreateRoom/index.js +0 -2
  146. package/lib/module/hooks/useCreateRoom/index.js.map +0 -1
  147. package/lib/module/hooks/useCreator/index.js +0 -2
  148. package/lib/module/hooks/useCreator/index.js.map +0 -1
  149. package/lib/module/hooks/useInbox/index.js +0 -2
  150. package/lib/module/hooks/useInbox/index.js.map +0 -1
  151. package/lib/module/hooks/useInbox/types.js +0 -2
  152. package/lib/module/hooks/useInbox/types.js.map +0 -1
  153. package/lib/module/hooks/useMessages/index.js +0 -2
  154. package/lib/module/hooks/useMessages/index.js.map +0 -1
  155. package/lib/module/hooks/useMessages/types.js +0 -2
  156. package/lib/module/hooks/useMessages/types.js.map +0 -1
  157. package/lib/module/hooks/useRoom/index.js +0 -2
  158. package/lib/module/hooks/useRoom/index.js.map +0 -1
  159. package/lib/module/hooks/useRoom/types.js +0 -2
  160. package/lib/module/hooks/useRoom/types.js.map +0 -1
  161. package/lib/module/hooks/useSend/useSendToGroup/index.js +0 -2
  162. package/lib/module/hooks/useSend/useSendToGroup/index.js.map +0 -1
  163. package/lib/module/hooks/useSend/useSendToPeople/index.js +0 -2
  164. package/lib/module/hooks/useSend/useSendToPeople/index.js.map +0 -1
  165. package/lib/module/hooks/useTyping/index.js +0 -2
  166. package/lib/module/hooks/useTyping/index.js.map +0 -1
  167. package/lib/module/hooks/useTypingOLD/index.js +0 -2
  168. package/lib/module/hooks/useTypingOLD/index.js.map +0 -1
  169. package/lib/module/hooks/useTypingOLD/types.js +0 -2
  170. package/lib/module/hooks/useTypingOLD/types.js.map +0 -1
  171. package/lib/module/hooks/useViewMessages/index.js +0 -2
  172. package/lib/module/hooks/useViewMessages/index.js.map +0 -1
  173. package/lib/module/hooks/useViewMessages/types.js +0 -2
  174. package/lib/module/hooks/useViewMessages/types.js.map +0 -1
  175. package/lib/module/hooks/useViewMessagesOld/index.js +0 -2
  176. package/lib/module/hooks/useViewMessagesOld/index.js.map +0 -1
  177. package/lib/module/index.js +0 -2
  178. package/lib/module/index.js.map +0 -1
  179. package/lib/typescript/ChatContext/index.d.ts +0 -2
  180. package/lib/typescript/ChatContext/types.d.ts +0 -4
  181. package/lib/typescript/classes/Chat/index.d.ts +0 -14
  182. package/lib/typescript/classes/Chat/types.d.ts +0 -21
  183. package/lib/typescript/classes/Inbox/types.d.ts +0 -2
  184. package/lib/typescript/classes/Message/index.d.ts +0 -47
  185. package/lib/typescript/classes/Message/types.d.ts +0 -66
  186. package/lib/typescript/classes/Reaction/index.d.ts +0 -17
  187. package/lib/typescript/classes/Reaction/types.d.ts +0 -33
  188. package/lib/typescript/classes/Room/index.d.ts +0 -42
  189. package/lib/typescript/classes/Room/types.d.ts +0 -112
  190. package/lib/typescript/classes/index.d.ts +0 -4
  191. package/lib/typescript/components/Avatar/index.d.ts +0 -4
  192. package/lib/typescript/components/Chat/Bubble/index.d.ts +0 -4
  193. package/lib/typescript/components/Chat/Composer/Input/index.d.ts +0 -7
  194. package/lib/typescript/components/Chat/Composer/Send/index.d.ts +0 -4
  195. package/lib/typescript/components/Chat/Composer/index.d.ts +0 -8
  196. package/lib/typescript/components/Chat/Media/Image/index.d.ts +0 -7
  197. package/lib/typescript/components/Chat/Media/index.d.ts +0 -4
  198. package/lib/typescript/components/Chat/Message/Touchable/index.d.ts +0 -4
  199. package/lib/typescript/components/Chat/Message/index.d.ts +0 -8
  200. package/lib/typescript/components/Chat/SystemMessage/index.d.ts +0 -4
  201. package/lib/typescript/components/Chat/TypingFooter/index.d.ts +0 -4
  202. package/lib/typescript/components/Chat/index.d.ts +0 -8
  203. package/lib/typescript/components/Chat/types.d.ts +0 -843
  204. package/lib/typescript/components/ChatProvider/index.d.ts +0 -10
  205. package/lib/typescript/components/ChatProvider/types.d.ts +0 -7
  206. package/lib/typescript/components/Inbox/Item/Initials/index.d.ts +0 -4
  207. package/lib/typescript/components/Inbox/Item/ItemDate/index.d.ts +0 -4
  208. package/lib/typescript/components/Inbox/Item/Separator/index.d.ts +0 -6
  209. package/lib/typescript/components/Inbox/Item/Subtitle/index.d.ts +0 -3
  210. package/lib/typescript/components/Inbox/Item/Swipeable/index.d.ts +0 -4
  211. package/lib/typescript/components/Inbox/Item/Title/index.d.ts +0 -3
  212. package/lib/typescript/components/Inbox/Item/UnreadIndicator/index.d.ts +0 -4
  213. package/lib/typescript/components/Inbox/Item/index.d.ts +0 -6
  214. package/lib/typescript/components/Inbox/index.d.ts +0 -4
  215. package/lib/typescript/components/Inbox/types.d.ts +0 -304
  216. package/lib/typescript/components/RoomCreator/Content/Footer/Button/index.d.ts +0 -4
  217. package/lib/typescript/components/RoomCreator/Content/Footer/Input/index.d.ts +0 -4
  218. package/lib/typescript/components/RoomCreator/Content/Footer/index.d.ts +0 -3
  219. package/lib/typescript/components/RoomCreator/Content/Item/Icon/index.d.ts +0 -4
  220. package/lib/typescript/components/RoomCreator/Content/Item/index.d.ts +0 -4
  221. package/lib/typescript/components/RoomCreator/Content/index.d.ts +0 -4
  222. package/lib/typescript/components/RoomCreator/Header/index.d.ts +0 -4
  223. package/lib/typescript/components/RoomCreator/index.d.ts +0 -4
  224. package/lib/typescript/components/RoomCreator/types.d.ts +0 -208
  225. package/lib/typescript/components/TypingIndicator/index.d.ts +0 -9
  226. package/lib/typescript/components/index.d.ts +0 -12
  227. package/lib/typescript/helpers/getInitials.d.ts +0 -1
  228. package/lib/typescript/hooks/index.d.ts +0 -8
  229. package/lib/typescript/hooks/useCreator/index.d.ts +0 -27
  230. package/lib/typescript/hooks/useInbox/index.d.ts +0 -29
  231. package/lib/typescript/hooks/useInbox/types.d.ts +0 -5
  232. package/lib/typescript/hooks/useMessages/index.d.ts +0 -24
  233. package/lib/typescript/hooks/useMessages/types.d.ts +0 -5
  234. package/lib/typescript/hooks/useRoom/index.d.ts +0 -26
  235. package/lib/typescript/hooks/useRoom/types.d.ts +0 -5
  236. package/lib/typescript/hooks/useSend/useSendToGroup/index.d.ts +0 -6
  237. package/lib/typescript/hooks/useSend/useSendToPeople/index.d.ts +0 -6
  238. package/lib/typescript/hooks/useTyping/index.d.ts +0 -36
  239. package/lib/typescript/hooks/useViewMessages/index.d.ts +0 -18
  240. package/lib/typescript/hooks/useViewMessages/types.d.ts +0 -20
  241. package/lib/typescript/index.d.ts +0 -11
  242. package/readme.md +0 -201
  243. package/src/ChatContext/index.tsx +0 -9
  244. package/src/ChatContext/types.ts +0 -4
  245. package/src/classes/Chat/index.ts +0 -46
  246. package/src/classes/Chat/types.ts +0 -23
  247. package/src/classes/Inbox/index.ts +0 -12
  248. package/src/classes/Inbox/types.ts +0 -3
  249. package/src/classes/Message/index.ts +0 -310
  250. package/src/classes/Message/types.ts +0 -118
  251. package/src/classes/Reaction/index.ts +0 -108
  252. package/src/classes/Reaction/types.ts +0 -37
  253. package/src/classes/Room/index.ts +0 -323
  254. package/src/classes/Room/types.ts +0 -161
  255. package/src/classes/index.ts +0 -4
  256. package/src/components/Avatar/index.tsx +0 -25
  257. package/src/components/Chat/Bubble/index.tsx +0 -139
  258. package/src/components/Chat/Composer/Input/index.tsx +0 -45
  259. package/src/components/Chat/Composer/Send/index.tsx +0 -51
  260. package/src/components/Chat/Composer/index.tsx +0 -187
  261. package/src/components/Chat/Media/Image/index.tsx +0 -26
  262. package/src/components/Chat/Media/index.tsx +0 -11
  263. package/src/components/Chat/Message/Swiper/Action/index.tsx +0 -7
  264. package/src/components/Chat/Message/Swiper/index.tsx +0 -32
  265. package/src/components/Chat/Message/Touchable/index.tsx +0 -60
  266. package/src/components/Chat/Message/index.tsx +0 -328
  267. package/src/components/Chat/SystemMessage/index.tsx +0 -44
  268. package/src/components/Chat/TypingFooter/index.tsx +0 -48
  269. package/src/components/Chat/index.tsx +0 -596
  270. package/src/components/Chat/types.ts +0 -913
  271. package/src/components/Chat-Old/Bubble/index.tsx +0 -58
  272. package/src/components/Chat-Old/Composer/Input/index.tsx +0 -34
  273. package/src/components/Chat-Old/Composer/Send/index.tsx +0 -37
  274. package/src/components/Chat-Old/Composer/index.tsx +0 -131
  275. package/src/components/Chat-Old/Message/index.tsx +0 -160
  276. package/src/components/Chat-Old/Swiper/Action/index.tsx +0 -7
  277. package/src/components/Chat-Old/Swiper/index.tsx +0 -30
  278. package/src/components/Chat-Old/SystemMessage/index.tsx +0 -44
  279. package/src/components/Chat-Old/index.tsx +0 -356
  280. package/src/components/Chat-Old/types.ts +0 -752
  281. package/src/components/ChatProvider/index.tsx +0 -31
  282. package/src/components/ChatProvider/types.ts +0 -8
  283. package/src/components/Inbox/Item/Circle/index.tsx +0 -47
  284. package/src/components/Inbox/Item/Circle/types.ts +0 -8
  285. package/src/components/Inbox/Item/Initials/index.tsx +0 -41
  286. package/src/components/Inbox/Item/ItemDate/index.tsx +0 -26
  287. package/src/components/Inbox/Item/Separator/index.tsx +0 -13
  288. package/src/components/Inbox/Item/Subtitle/index.tsx +0 -23
  289. package/src/components/Inbox/Item/Swipeable/index.tsx +0 -143
  290. package/src/components/Inbox/Item/Title/index.tsx +0 -23
  291. package/src/components/Inbox/Item/UnreadIndicator/index.tsx +0 -84
  292. package/src/components/Inbox/Item/index.tsx +0 -307
  293. package/src/components/Inbox/index.tsx +0 -315
  294. package/src/components/Inbox/question.md +0 -21
  295. package/src/components/Inbox/readme.md +0 -21
  296. package/src/components/Inbox/types.ts +0 -371
  297. package/src/components/RoomCreator/Content/Footer/Button/index.tsx +0 -55
  298. package/src/components/RoomCreator/Content/Footer/Input/index.tsx +0 -27
  299. package/src/components/RoomCreator/Content/Footer/index.tsx +0 -72
  300. package/src/components/RoomCreator/Content/Item/Icon/index.tsx +0 -16
  301. package/src/components/RoomCreator/Content/Item/index.tsx +0 -87
  302. package/src/components/RoomCreator/Content/index.tsx +0 -75
  303. package/src/components/RoomCreator/Header/index.tsx +0 -74
  304. package/src/components/RoomCreator/index.tsx +0 -177
  305. package/src/components/RoomCreator/types.ts +0 -233
  306. package/src/components/TypingIndicator/index.tsx +0 -169
  307. package/src/components/index.ts +0 -18
  308. package/src/helpers/getInitials.ts +0 -11
  309. package/src/helpers/sortByAvatar.ts +0 -1
  310. package/src/hooks/index.ts +0 -8
  311. package/src/hooks/useCreateRoom/index.ts +0 -34
  312. package/src/hooks/useCreator/index.ts +0 -33
  313. package/src/hooks/useInbox/index.ts +0 -76
  314. package/src/hooks/useInbox/types.ts +0 -6
  315. package/src/hooks/useMessages/index.ts +0 -109
  316. package/src/hooks/useMessages/types.ts +0 -6
  317. package/src/hooks/useRoom/index.ts +0 -82
  318. package/src/hooks/useRoom/types.ts +0 -6
  319. package/src/hooks/useSend/useSendToGroup/index.ts +0 -38
  320. package/src/hooks/useSend/useSendToPeople/index.ts +0 -38
  321. package/src/hooks/useTyping/index.ts +0 -154
  322. package/src/hooks/useTypingOLD/index.ts +0 -67
  323. package/src/hooks/useTypingOLD/types.ts +0 -7
  324. package/src/hooks/useViewMessages/index.ts +0 -61
  325. package/src/hooks/useViewMessages/types.ts +0 -22
  326. package/src/hooks/useViewMessagesOld/index.ts +0 -39
  327. package/src/index.ts +0 -13
@@ -1,310 +0,0 @@
1
- import {
2
- MessageModel,
3
- EditMessageModel,
4
- RoomId,
5
- NewMessageModel,
6
- MessageModelDocument,
7
- SendFromFeedRecipients,
8
- recipientHasId,
9
- recipientHasMembers,
10
- SendFromFeedModel,
11
- isNewMessageModel,
12
- NewMessageFormattedForServer
13
- } from './types'
14
- import { fuego, chat } from '../../components/ChatProvider/index'
15
- import Room from '../Room'
16
- import { LastMessageServer, RoomMembers, RoomMember } from '../Room/types'
17
- import { ReactionOption } from '../Reaction/types'
18
-
19
- export default class {
20
- private message: MessageModel
21
- constructor(message: MessageModel) {
22
- this.message = message
23
- }
24
- /**
25
- * A function to send one message to many different existing rooms/group chats separately.
26
- *
27
- * @param recipients An array of rooms ids where this message will be sent to separately
28
- * @returns Promise that returns a room ID if there is only one (or promise that resolves as null if the message object isn't valid)
29
- */
30
- async sendToRooms(recipients: string[]) {
31
- try {
32
- const send = fuego.firebase
33
- .functions()
34
- .httpsCallable(chat.httpCallables.sendMessageToRooms)
35
- if (!isNewMessageModel(this.message)) {
36
- throw new Error(
37
- 'FAILED TO SEND TO ROOMS: message object is not NewMessageModel'
38
- )
39
- }
40
- this.message = {
41
- ...this.message,
42
- createdAt: fuego.firebase.firestore.FieldValue.serverTimestamp()
43
- } as NewMessageFormattedForServer
44
- return send({
45
- message: this.message,
46
- recipients
47
- })
48
- } catch (e) {
49
- console.error(e)
50
- return {
51
- data: null
52
- }
53
- }
54
- }
55
- /**
56
- * A function to send one message to many different people individually.
57
- * For each recipient, if a room for them doesn't exist, it will get created and the message will be added to it.
58
- * If the room does exist, the message will be added to it.
59
- *
60
- * @param recipients An array of user ids whom this message will be sent to separately
61
- * @returns Promise that returns a room ID (or promise that resolves as null if the message object isn't valid)
62
- */
63
- async sendToPeople(recipients: string[]) {
64
- const send = fuego.firebase
65
- .functions()
66
- .httpsCallable(chat.httpCallables.sendMessageToPeople)
67
- try {
68
- if (!isNewMessageModel(this.message)) {
69
- throw new Error(
70
- 'FAILED TO SEND TO PEOPLE: message object is not NewMessageModel'
71
- )
72
- }
73
- this.message = {
74
- ...this.message,
75
- createdAt: fuego.firebase.firestore.FieldValue.serverTimestamp()
76
- } as NewMessageFormattedForServer
77
- return send({
78
- message: this.message,
79
- recipients
80
- })
81
- } catch (e) {
82
- console.error(e)
83
- return {
84
- data: null
85
- }
86
- }
87
- }
88
- /**
89
- * Sends message to a group. This is useful when you don't have a room id but do have a list of people you want to send a message to. If you want to send the message to them separately, try sendToPeople instead.
90
- * This function will create a group chat with the specified users if one doesn't exist yet. If it does exist already, then it will add to that existing room.
91
- * @param recipients Array of uids for people in the group this message should send to.
92
- * @returns Promise that returns a room ID (or promise that resolves as null if the message object isn't valid)
93
- */
94
- async sendToGroup(recipients: string[]) {
95
- const send = fuego.firebase
96
- .functions()
97
- .httpsCallable(chat.httpCallables.sendMessageToGroup)
98
- try {
99
- if (!isNewMessageModel(this.message)) {
100
- throw new Error(
101
- 'FAILED TO SEND TO PEOPLE: message object is not NewMessageModel'
102
- )
103
- }
104
- this.message = {
105
- ...this.message,
106
- createdAt: fuego.firebase.firestore.FieldValue.serverTimestamp()
107
- } as NewMessageFormattedForServer
108
- return send({
109
- message: this.message,
110
- recipients
111
- })
112
- } catch (e) {
113
- console.error(e)
114
- return {
115
- data: null
116
- }
117
- }
118
- }
119
- /**
120
- * deprecated: fuck this function
121
- */
122
- sendFromFeed(to: SendFromFeedRecipients) {
123
- const batch = fuego.db.batch()
124
- const promises: Promise<firebase.functions.HttpsCallableResult>[] = []
125
-
126
- // the to variable is an array of dictionaries
127
- // the dictionaries can be EITHER { id: string } or { recipients: Array<recipient> }
128
- // example:
129
- // you might send a message to five different places
130
- // could be 3 people, and 2 existing rooms
131
- // this would be an array of 5 items, 3 with recipients, 2 with id
132
- // example of the array:
133
- // [
134
- // 1) send to a room that has these two users
135
- // { recipients: [{id: uid, name: username }, {uid: uid2, name: name2 }]},
136
- // 2) send to an already existing room (likely pressing a group)
137
- // { id: roomId },
138
- // 3) send to one person, unaware if this room exists
139
- // { recipients: [{id: uid, name: username }]},
140
- // ]
141
-
142
- // now, set of people we're sending this to...
143
- to.forEach(room => {
144
- const { id, ...message } = this.message as NewMessageModel
145
- if (recipientHasId(room)) {
146
- // if this recipient is a specified room, then send to that
147
- const { messagesPath } = new Room({ id: room.id })
148
- const ref = fuego.db.collection(messagesPath).doc(id)
149
- batch.set(ref, message)
150
- } else if (recipientHasMembers(room)) {
151
- // otherwise, if you're just sending to a list of ambigious recipients...
152
- // note: this list will often be one person you're choosing from a feed
153
- // list could be: { recipients: [{ name: string, id: string }, { ...otherRecipient }]}
154
- const peopleInThisRoomOtherThanMe = room.recipients
155
- .slice()
156
- .sort((a, b) => (a.id > b.id ? 1 : -1))
157
- const addMessage = fuego.firebase
158
- .functions()
159
- .httpsCallable(chat.httpCallables.sendMessageFromFeed)
160
- const newMessage: SendFromFeedModel = {
161
- ...(message as NewMessageModel),
162
- recipients: peopleInThisRoomOtherThanMe
163
- }
164
- promises.push(addMessage(newMessage))
165
- }
166
- })
167
-
168
- return Promise.all<any>([batch.commit(), ...promises])
169
-
170
- // return {
171
- // batch: () => batch.commit(),
172
- // toRecipients: () => Promise.all(promises)
173
- // }
174
- }
175
- /**
176
- * Send message by adding it directly to the backend
177
- * @param roomId The id of the room you want to send this to. Could also be an array of ids, if the same message should go to multiple rooms.
178
- */
179
- send(roomId: RoomId) {
180
- this.addToFirebase(roomId)
181
- }
182
- edit(roomId: string) {
183
- return this.updateOnFirebase(roomId)
184
- }
185
- formatForRender(): NewMessageModel[] | NewMessageModel | null {
186
- function isDocList(m: MessageModel): m is MessageModelDocument[] {
187
- return !!(m as MessageModelDocument[])
188
- }
189
- function isDocument(m: MessageModel): m is MessageModelDocument {
190
- return !!(m as MessageModelDocument)
191
- }
192
- try {
193
- if (isDocList(this.message)) {
194
- return (
195
- (this.message as MessageModelDocument[]).map(
196
- (doc: MessageModelDocument) => ({
197
- ...doc,
198
- id: doc.id,
199
- createdAt: doc.createdAt.toDate()
200
- })
201
- ) || []
202
- )
203
- }
204
- if (isDocument(this.message))
205
- return {
206
- ...this.message,
207
- id: this.message.id,
208
- createdAt: this.message.createdAt.toDate()
209
- }
210
-
211
- throw new Error('Wrong model here.')
212
- } catch (e) {
213
- console.error(
214
- 'wrong model given to format for render in Message class.',
215
- e
216
- )
217
- return null
218
- }
219
- }
220
- formatForSend() {
221
- try {
222
- const isNew = (m: MessageModel): m is NewMessageModel[] =>
223
- !!(m as NewMessageModel[])
224
- if (isNew(this.message)) {
225
- this.message = (this.message as NewMessageModel[]).map(message => ({
226
- ...message,
227
- text: (message.text && message.text.trim()) || '',
228
- createdAt: fuego.firebase.firestore.FieldValue.serverTimestamp()
229
- })) as NewMessageFormattedForServer[]
230
- return this
231
- }
232
- throw new Error('wrong format for formatting for send')
233
- } catch (e) {
234
- console.error(e)
235
- return this
236
- }
237
- }
238
- addToFirebase(roomId: RoomId) {
239
- const { message: messages } = this
240
-
241
- const batch = fuego.db.batch()
242
-
243
- const updateBatch = (roomId: string) => {
244
- // for each message, add to this batch...
245
- const addToBatch = (message: NewMessageFormattedForServer) => {
246
- try {
247
- const { messagesPath, path: roomPath } = new Room({ id: roomId })
248
- const ref = fuego.db.collection(messagesPath).doc(message.id)
249
-
250
- // remove id from message for single source of truth
251
- // it'll be put back again upon format()-ing
252
- const { id, ...messageDoc } = message
253
- batch.set(ref, messageDoc)
254
-
255
- // update the latest message
256
- const { displayName, uid } = fuego.auth().currentUser as firebase.User
257
- const roomRef = fuego.db.doc(roomPath)
258
- const lastMessage: LastMessageServer = {
259
- name: displayName || 'Name failed',
260
- id: uid,
261
- system: false,
262
- text: message.text,
263
- createdAt: message.createdAt
264
- }
265
- batch.update(roomRef, { lastMessage })
266
- } catch (e) {
267
- console.error('sending message had an error:', e)
268
- }
269
- }
270
- ;(messages as NewMessageFormattedForServer[]).forEach(addToBatch)
271
- }
272
-
273
- // if you're sending these message(s) to multiple rooms, loop through each room...
274
- if (Array.isArray(roomId)) {
275
- ;(roomId as string[]).forEach(updateBatch)
276
- } else {
277
- // just send to this room
278
- updateBatch(roomId as string)
279
- }
280
- // once everything has been added to the db batch, commit it
281
- return batch.commit()
282
- }
283
- updateOnFirebase(roomId: string) {
284
- const { path } = new Room({ id: roomId })
285
- const { id, ...message } = this.message as EditMessageModel
286
- return fuego.db
287
- .collection(path)
288
- .doc((this.message as EditMessageModel).id)
289
- .set(message, { merge: true })
290
- }
291
- // TODO get members through some other method...idk
292
- // eek. what a mess.
293
- getUsersWhoReacted(
294
- reaction: ReactionOption,
295
- { roomMembers }: { roomMembers: RoomMembers }
296
- ): RoomMember[] {
297
- const users: RoomMember[] = []
298
- if (!isNewMessageModel(this.message)) {
299
- console.warn(
300
- 'error getting users who reacted. Needs the new message model passed as an argument, but instead it got this:',
301
- this.message
302
- )
303
- } else if (this.message.reactions) {
304
- this.message.reactions[reaction].forEach(
305
- uid => roomMembers[uid] && users.push(roomMembers[uid])
306
- )
307
- }
308
- return users
309
- }
310
- }
@@ -1,118 +0,0 @@
1
- import { FieldValue } from '@firebase/firestore-types'
2
- import { ReactionOption } from '../Reaction/types'
3
-
4
- export interface Message {
5
- id: string
6
- // roomId: string
7
- }
8
-
9
- export interface NewMessageModel extends Omit<Message, 'roomId'> {
10
- text: string
11
- createdAt: Date
12
- user: {
13
- id: string
14
- name: string
15
- avatar: string
16
- }
17
- // image?: string
18
- // // You can also add a video prop:
19
- // video?: string
20
- system?: boolean
21
- media?: MessageMedia
22
- reactions?: {
23
- [option in ReactionOption]: string[]
24
- }
25
- // Any additional custom parameters are passed through
26
- }
27
-
28
- export interface MessageMediaWithUrl {
29
- url: string
30
- uri?: string
31
- height: number
32
- width: number
33
- contentType: 'video' | 'image'
34
- }
35
-
36
- export interface MessageMediaWithUri {
37
- url: string
38
- uri?: string
39
- height: number
40
- width: number
41
- contentType: 'video' | 'image'
42
- }
43
-
44
- export type MessageMedia = MessageMediaWithUrl | MessageMediaWithUri
45
-
46
- // export interface MessageMedia {
47
- // url?: string
48
- // uri: string
49
- // height: number
50
- // width: number
51
- // contentType: 'video' | 'image'
52
- // }
53
-
54
- export interface NewMessageFormattedForServer
55
- extends Omit<NewMessageModel, 'createdAt'> {
56
- createdAt: FieldValue
57
- }
58
-
59
- export function isNewMessageModel(
60
- message: MessageModel
61
- ): message is NewMessageModel {
62
- return !!(message as NewMessageModel)
63
- }
64
-
65
- export function isNewMessageFormattedForServer(
66
- message: MessageModel
67
- ): message is NewMessageFormattedForServer {
68
- return !!(message as NewMessageFormattedForServer)
69
- }
70
-
71
- export interface EditMessageModel extends Message {
72
- text?: string
73
- }
74
-
75
- export type SendToRecipients = string[]
76
-
77
- // you might send a message to multiple rooms
78
- export type RoomId = string | string[]
79
-
80
- // the message model can be one of them
81
- export type MessageModel =
82
- | Message
83
- | NewMessageModel[]
84
- | EditMessageModel
85
- | MessageModelDocument[]
86
- | NewMessageFormattedForServer[]
87
- | NewMessageFormattedForServer
88
-
89
- export interface MessageModelDocument
90
- extends Omit<NewMessageModel, 'createdAt'> {
91
- id: string
92
- createdAt: firebase.firestore.Timestamp
93
- }
94
-
95
- export type SendFromFeedRecipient =
96
- | {
97
- id: string // roomId
98
- }
99
- | SendFromFeedRecipientArray
100
-
101
- export interface SendFromFeedRecipientArray {
102
- recipients: { id: string; name: string }[]
103
- }
104
-
105
- export const recipientHasId = (
106
- recipient: SendFromFeedRecipient
107
- ): recipient is { id: string } => !!(recipient as { id: string })
108
-
109
- export const recipientHasMembers = (
110
- recipient: SendFromFeedRecipient
111
- ): recipient is SendFromFeedRecipientArray =>
112
- !!(recipient as SendFromFeedRecipientArray)
113
-
114
- export type SendFromFeedRecipients = SendFromFeedRecipient[]
115
-
116
- export interface SendFromFeedModel extends Omit<NewMessageModel, 'id'> {
117
- recipients: SendFromFeedRecipientArray['recipients']
118
- }
@@ -1,108 +0,0 @@
1
- import { ReactionConfig } from './types'
2
- import Room from '../Room'
3
- import { fuego } from '../../components/ChatProvider'
4
- import { LastMessageServer } from '../Room/types'
5
-
6
- export default class {
7
- private config: ReactionConfig
8
- constructor(config: ReactionConfig) {
9
- this.config = config
10
- }
11
- get path() {
12
- const { messagesPath } = new Room({ id: this.config.roomId })
13
- return `${messagesPath}/${this.config.messageId}`
14
- }
15
- verb(): { add: string; remove: string } {
16
- switch (this.config.reaction) {
17
- case 'like':
18
- return { add: 'liked', remove: 'unliked' }
19
- case 'love':
20
- return { add: 'loved', remove: 'unloved' }
21
- default: {
22
- console.warn(
23
- 'reaction type is not valid. see reaction class:',
24
- this.config.reaction
25
- )
26
- return { add: '', remove: '' }
27
- }
28
- }
29
- }
30
- async add() {
31
- const { uid } = fuego.auth().currentUser as firebase.User
32
- const batch = fuego.db.batch()
33
- const messageRef = fuego.db.doc(this.path)
34
- batch.update(messageRef, {
35
- [`reactions.${this.config.reaction}`]: fuego.firebase.firestore.FieldValue.arrayUnion(
36
- uid
37
- )
38
- })
39
- const { path: roomPath } = new Room({ id: this.config.roomId })
40
- const roomRef = fuego.db.doc(roomPath)
41
-
42
- batch.update(roomRef, {
43
- lastMessage: this.makeLastMessage({ remove: false })
44
- })
45
- return batch.commit()
46
- }
47
- async remove() {
48
- const { uid } = fuego.auth().currentUser as firebase.User
49
- const batch = fuego.db.batch()
50
- const messageRef = fuego.db.doc(this.path)
51
- batch.update(messageRef, {
52
- [`reactions.${this.config.reaction}`]: fuego.firebase.firestore.FieldValue.arrayRemove(
53
- uid
54
- )
55
- })
56
- const { path: roomPath } = new Room({ id: this.config.roomId })
57
- const roomRef = fuego.db.doc(roomPath)
58
-
59
- batch.update(roomRef, {
60
- lastMessage: this.makeLastMessage({ remove: true })
61
- })
62
- return batch.commit()
63
- }
64
- makeReactionDescriptionText(remove?: boolean): string {
65
- if (this.config.descriptionText === null) return ''
66
- const { displayName } = fuego.auth().currentUser as firebase.User
67
- const { myName } = this.config
68
- const name = myName || displayName || ''
69
- const verb = remove ? this.verb().remove : this.verb().add
70
- if (this.config.descriptionText) {
71
- if (typeof this.config.descriptionText === 'string')
72
- return this.config.descriptionText
73
- if (typeof this.config.descriptionText !== 'function') {
74
- console.error(
75
- '🍇 Juice Reaction error. The descriptionText property should be either 1) a string or 2) a function that returns a string. Instead, you passed',
76
- this.config.descriptionText,
77
- ' of type ',
78
- typeof this.config.descriptionText,
79
- '. See the docs or command+hover over the descriptionText property in VS Code to details.'
80
- )
81
- } else {
82
- return this.config.descriptionText({
83
- reaction: this.config.reaction,
84
- name: name || '',
85
- text: this.config.text,
86
- verb,
87
- remove: !!remove
88
- })
89
- }
90
- }
91
- const firstName = name && name.split(' ')[0]
92
- let text = `${firstName} ${verb} a message`
93
- if (this.config.text) {
94
- text = `${firstName} ${verb} "${this.config.text}"`
95
- }
96
- return text
97
- }
98
- makeLastMessage(options: { remove?: boolean }): LastMessageServer {
99
- const { displayName: name = '' } = fuego.auth().currentUser as firebase.User
100
- return {
101
- id: '',
102
- createdAt: fuego.firebase.firestore.FieldValue.serverTimestamp(),
103
- name: name || '',
104
- system: true,
105
- text: this.makeReactionDescriptionText(options.remove)
106
- }
107
- }
108
- }
@@ -1,37 +0,0 @@
1
- export interface ReactionConfig {
2
- myName?: string
3
- messageId: string
4
- roomId: string
5
- text: string
6
- reaction: ReactionOption
7
- /**
8
- * An **optional** string or pure function to override the default description text.
9
- * The description text is used to create the last message that shows up in the inbox.
10
- *
11
- * By default, this will look something like: <name> <reaction>d "<message text>". For instance: Fernando liked "I want a pair of PATOS Shoes."
12
- *
13
- * If `null`, text will be an empty string.
14
- *
15
- * A verb for like will be 'liked', and if it's a removal, then it's 'unlike'. This pattern follows for other reactions too.
16
- *
17
- * @example
18
- * ```js
19
- * const reaction = new Reaction({
20
- * descriptionText: ({ reaction, name, text, verb, remove }) => remove ? \`${name} happily ${verb} ${text}\` : \`${name} sadly ${verb} ${text}\`,
21
- * text: message.text, roomId: room.id, messageId: message.id, text: message.text
22
- * })
23
- * ```
24
- */
25
- descriptionText?:
26
- | null
27
- | string
28
- | ((info: {
29
- reaction: ReactionOption
30
- name: string
31
- text: string
32
- verb: string
33
- remove: boolean
34
- }) => string)
35
- }
36
-
37
- export type ReactionOption = 'like' | 'love'