@webinex/chatify 1.0.3-rc3 → 2.0.0-build1

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 (314) hide show
  1. package/dist/css/chatify.css +137 -105
  2. package/dist/esm/index.js +10 -1
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/types/core/api/accountApi.d.ts +5 -0
  5. package/dist/esm/types/core/api/api.d.ts +2538 -0
  6. package/dist/esm/types/core/api/baseApi.d.ts +10 -0
  7. package/dist/esm/types/core/api/chatApi.d.ts +25 -0
  8. package/dist/esm/types/core/api/chatListApi.d.ts +6 -0
  9. package/dist/esm/types/core/api/chatMemberApi.d.ts +6 -0
  10. package/dist/esm/types/core/api/chatMessageApi.d.ts +34 -0
  11. package/dist/esm/types/core/api/index.d.ts +9 -0
  12. package/dist/esm/types/core/api/threadApi.d.ts +95 -0
  13. package/dist/esm/types/core/api/threadMessageApi.d.ts +28 -0
  14. package/dist/esm/types/core/client.d.ts +56 -9
  15. package/dist/esm/types/core/constants.d.ts +1 -0
  16. package/dist/esm/types/core/debounce.d.ts +27 -0
  17. package/dist/esm/types/core/index.d.ts +3 -16
  18. package/dist/esm/types/core/types.d.ts +105 -0
  19. package/dist/esm/types/index.d.ts +0 -1
  20. package/dist/esm/types/ui/Chat/ChatContext.d.ts +10 -0
  21. package/dist/esm/types/ui/Chat/ChatEditableHeaderName.d.ts +2 -0
  22. package/dist/esm/types/ui/Chat/ChatHeaderActions.d.ts +2 -0
  23. package/dist/esm/types/ui/Chat/ChatPanel.d.ts +13 -0
  24. package/dist/esm/types/ui/Chat/ChatView.d.ts +17 -0
  25. package/dist/esm/types/ui/Chat/Members/ChatMembersButton.d.ts +2 -0
  26. package/dist/esm/types/ui/Chat/Members/ChatMembersPanel.d.ts +2 -0
  27. package/dist/esm/types/ui/Chat/Members/ChatMembersPreview.d.ts +2 -0
  28. package/dist/esm/types/ui/Chat/Members/index.d.ts +11 -0
  29. package/dist/esm/types/ui/Chat/index.d.ts +6 -0
  30. package/dist/esm/types/ui/ChatGroup/ChatGroupContext.d.ts +12 -0
  31. package/dist/esm/types/ui/ChatGroup/ChatGroupPanel.d.ts +15 -0
  32. package/dist/esm/types/ui/ChatGroup/Create/CreateChatButton.d.ts +2 -0
  33. package/dist/esm/types/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatForm.d.ts +1 -1
  34. package/dist/esm/types/ui/ChatGroup/Create/CreateChatMemberInput.d.ts +5 -0
  35. package/dist/esm/types/ui/ChatGroup/Create/CreateChatNameInput.d.ts +5 -0
  36. package/dist/esm/types/ui/ChatGroup/Create/CreateChatPanel.d.ts +2 -0
  37. package/dist/esm/types/ui/ChatGroup/Create/index.d.ts +17 -0
  38. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupAside.d.ts +2 -0
  39. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupBody.d.ts +2 -0
  40. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupFooter.d.ts +2 -0
  41. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupHeader.d.ts +2 -0
  42. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupMain.d.ts +2 -0
  43. package/dist/esm/types/ui/ChatGroup/Layout/index.d.ts +17 -0
  44. package/dist/esm/types/ui/ChatGroup/List/ChatList.d.ts +2 -0
  45. package/dist/esm/types/ui/ChatGroup/List/ChatListItemAvatar.d.ts +3 -0
  46. package/dist/esm/types/ui/ChatGroup/List/ChatListItemBox.d.ts +6 -0
  47. package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessage.d.ts +3 -0
  48. package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessageAuthor.d.ts +3 -0
  49. package/dist/esm/types/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessageContent.d.ts +1 -1
  50. package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessageSentAt.d.ts +3 -0
  51. package/dist/esm/types/ui/ChatGroup/List/ChatListItemName.d.ts +3 -0
  52. package/dist/esm/types/ui/ChatGroup/List/ChatListItemUnreadCount.d.ts +3 -0
  53. package/dist/esm/types/ui/ChatGroup/List/index.d.ts +29 -0
  54. package/dist/esm/types/ui/ChatGroup/index.d.ts +5 -0
  55. package/dist/esm/types/ui/Chatify.d.ts +8 -72
  56. package/dist/esm/types/ui/Conversation/Conversation.d.ts +21 -0
  57. package/dist/esm/types/ui/Conversation/ConversationActions.d.ts +2 -0
  58. package/dist/esm/types/ui/Conversation/ConversationBody.d.ts +2 -0
  59. package/dist/esm/types/ui/Conversation/ConversationContext.d.ts +20 -0
  60. package/dist/esm/types/ui/Conversation/ConversationHeader.d.ts +2 -0
  61. package/dist/esm/types/ui/Conversation/ConversationName.d.ts +2 -0
  62. package/dist/esm/types/ui/Conversation/InputBox/InputBox.d.ts +2 -0
  63. package/dist/esm/types/ui/Conversation/InputBox/InputFilesBox.d.ts +2 -0
  64. package/dist/esm/types/ui/Conversation/InputBox/InputSubmitButtonBox.d.ts +5 -0
  65. package/dist/esm/types/ui/Conversation/InputBox/InputTextBox.d.ts +8 -0
  66. package/dist/esm/types/ui/Conversation/InputBox/index.d.ts +14 -0
  67. package/dist/esm/types/ui/Conversation/Message/MessageAuthor.d.ts +3 -0
  68. package/dist/esm/types/ui/Conversation/Message/MessageBox.d.ts +6 -0
  69. package/dist/esm/types/ui/Conversation/Message/MessageContent.d.ts +3 -0
  70. package/dist/esm/types/ui/Conversation/Message/MessageInfoBox.d.ts +3 -0
  71. package/dist/esm/types/ui/{Message → Conversation/Message}/MessageRow.d.ts +1 -1
  72. package/dist/esm/types/ui/Conversation/Message/MessageText.d.ts +3 -0
  73. package/dist/esm/types/ui/Conversation/Message/index.d.ts +20 -0
  74. package/dist/esm/types/ui/Conversation/NextObserver/NextMessagesObserver.d.ts +5 -0
  75. package/dist/esm/types/ui/Conversation/NextObserver/index.d.ts +1 -0
  76. package/dist/esm/types/ui/Conversation/ReadObserver/MessageReadObserver.d.ts +6 -0
  77. package/dist/esm/types/ui/Conversation/ReadObserver/index.d.ts +1 -0
  78. package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageBox.d.ts +7 -0
  79. package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageContent.d.ts +3 -0
  80. package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageInfoBox.d.ts +3 -0
  81. package/dist/esm/types/ui/{SendingMessage/SendingMessageInfoBox.d.ts → Conversation/SendingMessage/SendingMessageText.d.ts} +1 -1
  82. package/dist/esm/types/ui/Conversation/SendingMessage/index.d.ts +14 -0
  83. package/dist/esm/types/ui/Conversation/SystemMessage/SystemMessageBox.d.ts +6 -0
  84. package/dist/esm/types/ui/Conversation/SystemMessage/SystemMessageRow.d.ts +9 -0
  85. package/dist/esm/types/ui/Conversation/SystemMessage/index.d.ts +8 -0
  86. package/dist/esm/types/ui/Conversation/index.d.ts +12 -0
  87. package/dist/esm/types/ui/{InputBox/InputFilesBox.d.ts → Thread/ThreadActions.d.ts} +1 -1
  88. package/dist/esm/types/ui/Thread/ThreadContext.d.ts +8 -0
  89. package/dist/esm/types/ui/Thread/ThreadPanel.d.ts +14 -0
  90. package/dist/esm/types/ui/Thread/index.d.ts +3 -0
  91. package/dist/esm/types/ui/color.d.ts +6 -0
  92. package/dist/esm/types/ui/common/Avatar.d.ts +6 -0
  93. package/dist/esm/types/ui/common/Icon.d.ts +20 -0
  94. package/dist/esm/types/ui/common/MessageSkeleton.d.ts +5 -0
  95. package/dist/esm/types/ui/common/index.d.ts +11 -0
  96. package/dist/esm/types/ui/customize.d.ts +5 -7
  97. package/dist/esm/types/ui/index.d.ts +9 -9
  98. package/dist/esm/types/ui/localizer.d.ts +2 -6
  99. package/package.json +12 -10
  100. package/src/core/api/accountApi.ts +13 -0
  101. package/src/core/api/api.ts +42 -0
  102. package/src/core/api/baseApi.ts +30 -0
  103. package/src/core/api/chatApi.ts +89 -0
  104. package/src/core/api/chatListApi.ts +149 -0
  105. package/src/core/api/chatMemberApi.ts +22 -0
  106. package/src/core/api/chatMessageApi.ts +156 -0
  107. package/src/core/api/index.ts +9 -0
  108. package/src/core/api/threadApi.ts +132 -0
  109. package/src/core/api/threadMessageApi.ts +127 -0
  110. package/src/core/client.ts +157 -31
  111. package/src/core/constants.ts +1 -0
  112. package/src/core/debounce.ts +90 -0
  113. package/src/core/index.ts +3 -16
  114. package/src/core/types.tsx +152 -0
  115. package/src/index.ts +0 -1
  116. package/src/styles/aside.scss +31 -2
  117. package/src/styles/chat.scss +34 -37
  118. package/src/styles/index.scss +7 -5
  119. package/src/styles/input.scss +3 -1
  120. package/src/styles/members.scss +13 -0
  121. package/src/ui/Chat/ChatContext.tsx +30 -0
  122. package/src/ui/{ChatPanel/ChatHeaderName.tsx → Chat/ChatEditableHeaderName.tsx} +9 -15
  123. package/src/ui/Chat/ChatHeaderActions.tsx +19 -0
  124. package/src/ui/Chat/ChatPanel.tsx +30 -0
  125. package/src/ui/Chat/ChatView.tsx +123 -0
  126. package/src/ui/Chat/Members/ChatMembersButton.tsx +9 -0
  127. package/src/ui/{ChatPanel → Chat/Members}/ChatMembersPanel.tsx +16 -20
  128. package/src/ui/Chat/Members/ChatMembersPreview.tsx +25 -0
  129. package/src/ui/Chat/Members/index.ts +13 -0
  130. package/src/ui/Chat/index.ts +6 -0
  131. package/src/ui/ChatGroup/ChatGroupContext.tsx +50 -0
  132. package/src/ui/ChatGroup/ChatGroupPanel.tsx +73 -0
  133. package/src/ui/ChatGroup/Create/CreateChatButton.tsx +15 -0
  134. package/src/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatForm.tsx +2 -2
  135. package/src/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatMemberInput.tsx +6 -7
  136. package/src/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatNameInput.tsx +2 -2
  137. package/src/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatPanel.tsx +14 -18
  138. package/src/ui/ChatGroup/Create/index.ts +19 -0
  139. package/src/ui/ChatGroup/Layout/ChatGroupAside.tsx +12 -0
  140. package/src/ui/ChatGroup/Layout/ChatGroupBody.tsx +10 -0
  141. package/src/ui/ChatGroup/Layout/ChatGroupFooter.tsx +3 -0
  142. package/src/ui/ChatGroup/Layout/ChatGroupHeader.tsx +5 -0
  143. package/src/ui/ChatGroup/Layout/ChatGroupMain.tsx +17 -0
  144. package/src/ui/ChatGroup/Layout/index.ts +19 -0
  145. package/src/ui/{ChatList → ChatGroup/List}/ChatList.tsx +8 -8
  146. package/src/ui/ChatGroup/List/ChatListItemAvatar.tsx +22 -0
  147. package/src/ui/{ChatList → ChatGroup/List}/ChatListItemBox.tsx +9 -5
  148. package/src/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessage.tsx +1 -1
  149. package/src/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessageAuthor.tsx +2 -7
  150. package/src/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessageContent.tsx +3 -3
  151. package/src/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessageSentAt.tsx +2 -2
  152. package/src/ui/ChatGroup/List/ChatListItemName.tsx +8 -0
  153. package/src/ui/{ChatList → ChatGroup/List}/ChatListItemUnreadCount.tsx +1 -1
  154. package/src/ui/ChatGroup/List/index.ts +31 -0
  155. package/src/ui/ChatGroup/index.ts +5 -0
  156. package/src/ui/Chatify.tsx +8 -153
  157. package/src/ui/Conversation/Conversation.tsx +76 -0
  158. package/src/ui/Conversation/ConversationActions.tsx +5 -0
  159. package/src/ui/Conversation/ConversationBody.tsx +28 -0
  160. package/src/ui/Conversation/ConversationContext.ts +27 -0
  161. package/src/ui/Conversation/ConversationHeader.tsx +23 -0
  162. package/src/ui/Conversation/ConversationName.tsx +7 -0
  163. package/src/ui/Conversation/InputBox/InputBox.tsx +40 -0
  164. package/src/ui/{InputBox → Conversation/InputBox}/InputFilesBox.tsx +2 -2
  165. package/src/ui/{InputBox → Conversation/InputBox}/InputSubmitButtonBox.tsx +2 -2
  166. package/src/ui/{InputBox → Conversation/InputBox}/InputTextBox.tsx +6 -4
  167. package/src/ui/Conversation/InputBox/index.ts +16 -0
  168. package/src/ui/{Message → Conversation/Message}/MessageAuthor.tsx +2 -2
  169. package/src/ui/{Message → Conversation/Message}/MessageBox.tsx +4 -4
  170. package/src/ui/{Message → Conversation/Message}/MessageContent.tsx +1 -1
  171. package/src/ui/{Message → Conversation/Message}/MessageInfoBox.tsx +9 -7
  172. package/src/ui/{Message → Conversation/Message}/MessageRow.tsx +3 -3
  173. package/src/ui/{Message → Conversation/Message}/MessageText.tsx +1 -1
  174. package/src/ui/Conversation/Message/index.ts +22 -0
  175. package/src/ui/{Next.tsx → Conversation/NextObserver/NextMessagesObserver.tsx} +9 -10
  176. package/src/ui/Conversation/NextObserver/index.ts +1 -0
  177. package/src/ui/{MessageReadObserver.tsx → Conversation/ReadObserver/MessageReadObserver.tsx} +17 -13
  178. package/src/ui/Conversation/ReadObserver/index.ts +1 -0
  179. package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageBox.tsx +2 -2
  180. package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageContent.tsx +1 -1
  181. package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageInfoBox.tsx +2 -2
  182. package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageText.tsx +1 -1
  183. package/src/ui/Conversation/SendingMessage/index.ts +16 -0
  184. package/src/ui/{SystemMessage → Conversation/SystemMessage}/SystemMessageBox.tsx +4 -4
  185. package/src/ui/Conversation/SystemMessage/SystemMessageRow.tsx +28 -0
  186. package/src/ui/Conversation/SystemMessage/index.ts +10 -0
  187. package/src/ui/Conversation/index.ts +13 -0
  188. package/src/ui/Thread/ThreadActions.tsx +22 -0
  189. package/src/ui/Thread/ThreadContext.ts +13 -0
  190. package/src/ui/Thread/ThreadPanel.tsx +138 -0
  191. package/src/ui/Thread/index.tsx +3 -0
  192. package/src/ui/color.ts +20 -0
  193. package/src/ui/common/Avatar.tsx +20 -0
  194. package/src/ui/{Icon.tsx → common/Icon.tsx} +6 -1
  195. package/src/ui/{MessageSkeleton.tsx → common/MessageSkeleton.tsx} +3 -2
  196. package/src/ui/common/index.ts +13 -0
  197. package/src/ui/customize.tsx +18 -10
  198. package/src/ui/index.ts +9 -9
  199. package/src/ui/localizer.tsx +7 -10
  200. package/dist/esm/types/ChatifyContext.d.ts +0 -11
  201. package/dist/esm/types/core/action.d.ts +0 -151
  202. package/dist/esm/types/core/models.d.ts +0 -70
  203. package/dist/esm/types/core/reducer.d.ts +0 -11
  204. package/dist/esm/types/core/state.d.ts +0 -55
  205. package/dist/esm/types/core/useAddChatMutation.d.ts +0 -2
  206. package/dist/esm/types/core/useAddMemberMutation.d.ts +0 -2
  207. package/dist/esm/types/core/useFetchNextMutation.d.ts +0 -3
  208. package/dist/esm/types/core/useGetAccountsQuery.d.ts +0 -3
  209. package/dist/esm/types/core/useGetChatListQuery.d.ts +0 -3
  210. package/dist/esm/types/core/useGetChatQuery.d.ts +0 -5
  211. package/dist/esm/types/core/useGetMessagesQuery.d.ts +0 -4
  212. package/dist/esm/types/core/useReadMonitor.d.ts +0 -1
  213. package/dist/esm/types/core/useRemoveMemberMutation.d.ts +0 -2
  214. package/dist/esm/types/core/useSendMutation.d.ts +0 -2
  215. package/dist/esm/types/core/useSignalRMonitor.d.ts +0 -2
  216. package/dist/esm/types/core/useUpdateChatNameMutation.d.ts +0 -2
  217. package/dist/esm/types/ui/AddChatButton.d.ts +0 -2
  218. package/dist/esm/types/ui/Avatar.d.ts +0 -6
  219. package/dist/esm/types/ui/ChatList/ChatList.d.ts +0 -2
  220. package/dist/esm/types/ui/ChatList/ChatListItemBox.d.ts +0 -6
  221. package/dist/esm/types/ui/ChatList/ChatListItemLastMessage.d.ts +0 -3
  222. package/dist/esm/types/ui/ChatList/ChatListItemLastMessageAuthor.d.ts +0 -3
  223. package/dist/esm/types/ui/ChatList/ChatListItemLastMessageSentAt.d.ts +0 -3
  224. package/dist/esm/types/ui/ChatList/ChatListItemName.d.ts +0 -3
  225. package/dist/esm/types/ui/ChatList/ChatListItemUnreadCount.d.ts +0 -3
  226. package/dist/esm/types/ui/ChatList/index.d.ts +0 -8
  227. package/dist/esm/types/ui/ChatName.d.ts +0 -5
  228. package/dist/esm/types/ui/ChatPanel/ChatBody.d.ts +0 -5
  229. package/dist/esm/types/ui/ChatPanel/ChatHeader.d.ts +0 -5
  230. package/dist/esm/types/ui/ChatPanel/ChatHeaderMembers.d.ts +0 -5
  231. package/dist/esm/types/ui/ChatPanel/ChatHeaderName.d.ts +0 -5
  232. package/dist/esm/types/ui/ChatPanel/ChatMembersButton.d.ts +0 -5
  233. package/dist/esm/types/ui/ChatPanel/ChatMembersPanel.d.ts +0 -5
  234. package/dist/esm/types/ui/ChatPanel/ChatPanel.d.ts +0 -5
  235. package/dist/esm/types/ui/ChatPanel/index.d.ts +0 -6
  236. package/dist/esm/types/ui/CreateChatPanel/CreateChatMemberInput.d.ts +0 -5
  237. package/dist/esm/types/ui/CreateChatPanel/CreateChatNameInput.d.ts +0 -5
  238. package/dist/esm/types/ui/CreateChatPanel/CreateChatPanel.d.ts +0 -2
  239. package/dist/esm/types/ui/CreateChatPanel/index.d.ts +0 -4
  240. package/dist/esm/types/ui/Icon.d.ts +0 -17
  241. package/dist/esm/types/ui/InputBox/InputBox.d.ts +0 -2
  242. package/dist/esm/types/ui/InputBox/InputSubmitButtonBox.d.ts +0 -5
  243. package/dist/esm/types/ui/InputBox/InputTextBox.d.ts +0 -7
  244. package/dist/esm/types/ui/InputBox/index.d.ts +0 -4
  245. package/dist/esm/types/ui/Layout/Aside.d.ts +0 -2
  246. package/dist/esm/types/ui/Layout/Body.d.ts +0 -2
  247. package/dist/esm/types/ui/Layout/Footer.d.ts +0 -2
  248. package/dist/esm/types/ui/Layout/Header.d.ts +0 -2
  249. package/dist/esm/types/ui/Layout/Main.d.ts +0 -2
  250. package/dist/esm/types/ui/Layout/index.d.ts +0 -5
  251. package/dist/esm/types/ui/Message/MessageAuthor.d.ts +0 -3
  252. package/dist/esm/types/ui/Message/MessageBox.d.ts +0 -6
  253. package/dist/esm/types/ui/Message/MessageContent.d.ts +0 -3
  254. package/dist/esm/types/ui/Message/MessageInfoBox.d.ts +0 -3
  255. package/dist/esm/types/ui/Message/MessageText.d.ts +0 -3
  256. package/dist/esm/types/ui/Message/index.d.ts +0 -6
  257. package/dist/esm/types/ui/MessageReadObserver.d.ts +0 -6
  258. package/dist/esm/types/ui/MessageSkeleton.d.ts +0 -4
  259. package/dist/esm/types/ui/Next.d.ts +0 -4
  260. package/dist/esm/types/ui/SendingMessage/SendingMessageBox.d.ts +0 -7
  261. package/dist/esm/types/ui/SendingMessage/SendingMessageContent.d.ts +0 -3
  262. package/dist/esm/types/ui/SendingMessage/SendingMessageText.d.ts +0 -3
  263. package/dist/esm/types/ui/SendingMessage/index.d.ts +0 -4
  264. package/dist/esm/types/ui/SystemMessage/SystemMessageBox.d.ts +0 -6
  265. package/dist/esm/types/ui/SystemMessage/SystemMessageRow.d.ts +0 -9
  266. package/dist/esm/types/ui/SystemMessage/index.d.ts +0 -2
  267. package/dist/esm/types/util/index.d.ts +0 -2
  268. package/dist/esm/types/util/uniqBy.d.ts +0 -1
  269. package/dist/esm/types/util/uniqId.d.ts +0 -1
  270. package/dist/index.d.ts +0 -637
  271. package/src/ChatifyContext.tsx +0 -41
  272. package/src/core/action.tsx +0 -431
  273. package/src/core/models.tsx +0 -82
  274. package/src/core/reducer.tsx +0 -87
  275. package/src/core/state.ts +0 -93
  276. package/src/core/useAddChatMutation.tsx +0 -28
  277. package/src/core/useAddMemberMutation.tsx +0 -25
  278. package/src/core/useFetchNextMutation.tsx +0 -28
  279. package/src/core/useGetAccountsQuery.tsx +0 -30
  280. package/src/core/useGetChatListQuery.tsx +0 -30
  281. package/src/core/useGetChatQuery.tsx +0 -31
  282. package/src/core/useGetMessagesQuery.tsx +0 -35
  283. package/src/core/useReadMonitor.tsx +0 -32
  284. package/src/core/useRemoveMemberMutation.tsx +0 -23
  285. package/src/core/useSendMutation.tsx +0 -24
  286. package/src/core/useSignalRMonitor.tsx +0 -66
  287. package/src/core/useUpdateChatNameMutation.tsx +0 -23
  288. package/src/ui/AddChatButton.tsx +0 -17
  289. package/src/ui/Avatar.tsx +0 -18
  290. package/src/ui/ChatList/ChatListItemName.tsx +0 -13
  291. package/src/ui/ChatList/index.ts +0 -8
  292. package/src/ui/ChatName.tsx +0 -10
  293. package/src/ui/ChatPanel/ChatBody.tsx +0 -44
  294. package/src/ui/ChatPanel/ChatHeader.tsx +0 -31
  295. package/src/ui/ChatPanel/ChatHeaderMembers.tsx +0 -28
  296. package/src/ui/ChatPanel/ChatMembersButton.tsx +0 -21
  297. package/src/ui/ChatPanel/ChatPanel.tsx +0 -27
  298. package/src/ui/ChatPanel/index.ts +0 -6
  299. package/src/ui/CreateChatPanel/index.ts +0 -4
  300. package/src/ui/InputBox/InputBox.tsx +0 -38
  301. package/src/ui/InputBox/index.ts +0 -4
  302. package/src/ui/Layout/Aside.tsx +0 -12
  303. package/src/ui/Layout/Body.tsx +0 -10
  304. package/src/ui/Layout/Footer.tsx +0 -3
  305. package/src/ui/Layout/Header.tsx +0 -5
  306. package/src/ui/Layout/Main.tsx +0 -15
  307. package/src/ui/Layout/index.ts +0 -5
  308. package/src/ui/Message/index.ts +0 -6
  309. package/src/ui/SendingMessage/index.ts +0 -4
  310. package/src/ui/SystemMessage/SystemMessageRow.tsx +0 -43
  311. package/src/ui/SystemMessage/index.ts +0 -2
  312. package/src/util/index.ts +0 -2
  313. package/src/util/uniqBy.tsx +0 -17
  314. package/src/util/uniqId.tsx +0 -3
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+
3
+ export interface ThreadContextValue {
4
+ id: string;
5
+ watch: boolean;
6
+ onWatch: (value: boolean) => void;
7
+ }
8
+
9
+ export const ThreadContext = React.createContext<ThreadContextValue>(null!);
10
+
11
+ export function useThreadContext() {
12
+ return React.useContext(ThreadContext);
13
+ }
@@ -0,0 +1,138 @@
1
+ import { useCallback, useEffect, useMemo } from 'react';
2
+ import {
3
+ MessageBody,
4
+ chatifyApi,
5
+ parseThreadMessageId,
6
+ useFetchNextThreadMessageListMutation,
7
+ useGetThreadMessageListQuery,
8
+ useGetThreadMessageReadQueueQuery,
9
+ useGetThreadQuery,
10
+ useReadThreadMessageMutation,
11
+ useSendThreadMessageMutation,
12
+ useWatchThreadMutation,
13
+ } from '../../core';
14
+ import { Conversation, ConversationCustomizeValue, ConversationProps } from '../Conversation';
15
+ import { ThreadContext, ThreadContextValue } from './ThreadContext';
16
+ import { Localizer, LocalizerContext, defaultLocalizer } from '../localizer';
17
+ import { CustomizeContext } from '../customize';
18
+ import { ThreadActions } from './ThreadActions';
19
+ import { CommonCustomizeValue } from '../common';
20
+
21
+ export interface ThreadCustomizeValue extends ConversationCustomizeValue, CommonCustomizeValue {
22
+ ThreadActions?: typeof ThreadActions.Component | null;
23
+ }
24
+
25
+ export interface ThreadPanelProps {
26
+ threadId: string;
27
+ className?: string;
28
+ customize?: ThreadCustomizeValue;
29
+ localizer?: Localizer;
30
+ }
31
+
32
+ function usePanelState(props: ThreadPanelProps) {
33
+ const { threadId } = props;
34
+ const { data: thread } = useGetThreadQuery({ id: threadId });
35
+ const { data: messageList } = useGetThreadMessageListQuery({ threadId });
36
+ const { id, name, archive, lastReadMessageId, watch } = thread ?? {};
37
+ const { messages, hasMore } = messageList ?? {};
38
+
39
+ const [read] = useReadThreadMessageMutation();
40
+ const onRead = useCallback((id: string) => read({ id }), [read]);
41
+
42
+ const [fetchNext, { isLoading: isFetchNextLoading }] = useFetchNextThreadMessageListMutation();
43
+ const onNext = useCallback(() => fetchNext({ threadId }), [fetchNext, threadId]);
44
+
45
+ const [send] = useSendThreadMessageMutation();
46
+ const onSend = useCallback(
47
+ (message: MessageBody) => send({ body: message, threadId }).unwrap(),
48
+ [threadId, send],
49
+ );
50
+
51
+ const { data: readQueue } = useGetThreadMessageReadQueueQuery();
52
+
53
+ const conversation = useMemo(() => {
54
+ if (!id) {
55
+ return null;
56
+ }
57
+
58
+ const result: ConversationProps = {
59
+ value: { id: id!, name: name!, active: !archive, lastReadMessageId: lastReadMessageId ?? null },
60
+ messages,
61
+ hasMore,
62
+ onNext,
63
+ nextLoading: isFetchNextLoading,
64
+ onRead,
65
+ onSend,
66
+ noReadTracking: !watch,
67
+ isReading: (id: string) =>
68
+ readQueue!.some(
69
+ (unit) => parseThreadMessageId(unit.value)[0] === parseThreadMessageId(id)[0] && id <= unit.value,
70
+ ),
71
+ };
72
+
73
+ return result;
74
+ }, [
75
+ onNext,
76
+ onRead,
77
+ onSend,
78
+ isFetchNextLoading,
79
+ id,
80
+ name,
81
+ archive,
82
+ messages,
83
+ hasMore,
84
+ lastReadMessageId,
85
+ readQueue,
86
+ watch,
87
+ ]);
88
+
89
+ const [watchThread] = useWatchThreadMutation();
90
+
91
+ const threadContext = useMemo<ThreadContextValue | null>(
92
+ () =>
93
+ thread
94
+ ? {
95
+ id: thread.id,
96
+ watch: thread.watch,
97
+ onWatch: (value) => watchThread({ id: thread.id, watch: value }).unwrap(),
98
+ }
99
+ : null,
100
+ [thread, watchThread],
101
+ );
102
+
103
+ return [conversation, threadContext] as const;
104
+ }
105
+
106
+ const DEFAULT_CUSTOMIZE: ThreadCustomizeValue = {
107
+ ConversationActions: () => <ThreadActions />,
108
+ };
109
+
110
+ export function ThreadPanel(props: ThreadPanelProps) {
111
+ const { threadId, customize, localizer = defaultLocalizer, className = '' } = props;
112
+ const [conversation, threadContext] = usePanelState(props);
113
+ const customizeMergeValue = useMemo(() => ({ ...DEFAULT_CUSTOMIZE, ...customize }), [customize]);
114
+
115
+ useEffect(() => {
116
+ chatifyApi.settings.client.connectToThread(threadId);
117
+
118
+ return () => {
119
+ chatifyApi.settings.client.disconnectFromThread(threadId);
120
+ };
121
+ }, [threadId]);
122
+
123
+ if (!conversation || !threadContext) {
124
+ return null;
125
+ }
126
+
127
+ return (
128
+ <LocalizerContext.Provider value={localizer}>
129
+ <ThreadContext.Provider value={threadContext}>
130
+ <CustomizeContext.Provider value={customizeMergeValue as any}>
131
+ <div className={`wxchtf-chatify wxchtf-thread ${className}`}>
132
+ {conversation && <Conversation {...conversation} />}
133
+ </div>
134
+ </CustomizeContext.Provider>
135
+ </ThreadContext.Provider>
136
+ </LocalizerContext.Provider>
137
+ );
138
+ }
@@ -0,0 +1,3 @@
1
+ export * from './ThreadActions';
2
+ export * from './ThreadPanel';
3
+ export * from './ThreadContext';
@@ -0,0 +1,20 @@
1
+ interface ColorOptions {
2
+ saturation?: number;
3
+ lightness?: number;
4
+ }
5
+
6
+ const DEFAULT_COLOR_OPTIONS: ColorOptions = {
7
+ saturation: 100,
8
+ lightness: 75,
9
+ };
10
+
11
+ export function color(value: string, options: ColorOptions = {}) {
12
+ options = Object.assign({}, DEFAULT_COLOR_OPTIONS, options);
13
+
14
+ let hash = 0;
15
+ for (let i = 0; i < value.length; i++) {
16
+ hash = value.charCodeAt(i) + ((hash << 5) - hash);
17
+ hash = hash & hash;
18
+ }
19
+ return `hsl(${hash % 360}, ${options.saturation}%, ${options.lightness}%)`;
20
+ }
@@ -0,0 +1,20 @@
1
+ import { FC, ForwardedRef, forwardRef } from 'react';
2
+ import { Account } from '../../core';
3
+ import { Avatar as AntdAvatar } from 'antd';
4
+ import { customize } from '../customize';
5
+
6
+ export interface AvatarProps {
7
+ account: Account;
8
+ }
9
+
10
+ const _Avatar: FC<AvatarProps> = forwardRef(
11
+ (props: AvatarProps, forwardRef: ForwardedRef<HTMLSpanElement>) => {
12
+ const { account } = props;
13
+
14
+ return <AntdAvatar ref={forwardRef} src={account.avatar} />;
15
+ },
16
+ );
17
+
18
+ _Avatar.displayName = 'Avatar';
19
+
20
+ export const Avatar = customize('Avatar', _Avatar);
@@ -1,5 +1,5 @@
1
1
  import { FC } from 'react';
2
- import { customize } from './customize';
2
+ import { customize } from '../customize';
3
3
  import SendOutlined from '@ant-design/icons/SendOutlined';
4
4
  import PaperClipOutlined from '@ant-design/icons/PaperClipOutlined';
5
5
  import UserAddOutlined from '@ant-design/icons/UserAddOutlined';
@@ -9,6 +9,8 @@ import UsergroupDeleteOutlined from '@ant-design/icons/UsergroupDeleteOutlined';
9
9
  import TeamOutlined from '@ant-design/icons/TeamOutlined';
10
10
  import EditOutlined from '@ant-design/icons/EditOutlined';
11
11
  import CloseOutlined from '@ant-design/icons/CloseOutlined';
12
+ import EyeInvisibleOutlined from '@ant-design/icons/EyeInvisibleOutlined';
13
+ import EyeOutlined from '@ant-design/icons/EyeOutlined';
12
14
 
13
15
  export type IconType = keyof typeof ICONS;
14
16
 
@@ -26,6 +28,9 @@ export const ICONS = {
26
28
  members: TeamOutlined,
27
29
  edit: EditOutlined,
28
30
  close: CloseOutlined,
31
+ chat: TeamOutlined,
32
+ watch: EyeOutlined,
33
+ unwatch: EyeInvisibleOutlined,
29
34
  };
30
35
 
31
36
  export const Icon = customize<FC<IconProps>>('Icon', (props) => {
@@ -1,10 +1,11 @@
1
1
  import { Skeleton } from 'antd';
2
+ import { customize } from '../customize';
2
3
 
3
4
  export interface MessageSkeletonProps {
4
5
  count?: number;
5
6
  }
6
7
 
7
- export function MessageSkeleton(props: MessageSkeletonProps) {
8
+ export const MessageSkeleton = customize('MessageSkeleton', (props: MessageSkeletonProps) => {
8
9
  const { count = 1 } = props;
9
10
  return (
10
11
  <>
@@ -16,4 +17,4 @@ export function MessageSkeleton(props: MessageSkeletonProps) {
16
17
  ))}
17
18
  </>
18
19
  );
19
- }
20
+ });
@@ -0,0 +1,13 @@
1
+ import { Avatar } from './Avatar';
2
+ import { Icon } from './Icon';
3
+ import { MessageSkeleton } from './MessageSkeleton';
4
+
5
+ export * from './Avatar';
6
+ export * from './Icon';
7
+ export * from './MessageSkeleton';
8
+
9
+ export interface CommonCustomizeValue {
10
+ Avatar?: typeof Avatar.Component | null;
11
+ Icon?: typeof Icon.Component | null;
12
+ MessageSkeleton?: typeof MessageSkeleton.Component | null;
13
+ }
@@ -1,23 +1,31 @@
1
- import React, { FC, PropsWithChildren, useContext } from 'react';
1
+ import React, { FC, useContext } from 'react';
2
2
 
3
3
  export type Customizable<TComponent extends React.ComponentType<any>> = TComponent & {
4
4
  Component: TComponent;
5
+ key: string;
5
6
  };
6
7
 
7
- const CustomizeContext = React.createContext<CustomizeProviderValue>(null!);
8
+ export const CustomizeContext = React.createContext<
9
+ Record<string, React.ComponentType<any> | null | undefined>
10
+ >(null!);
8
11
 
9
- export interface CustomizeProviderValue {
10
- [key: string]: React.ComponentType<any> | null;
11
- }
12
-
13
- export function CustomizeProvider(props: PropsWithChildren<{ value: CustomizeProviderValue }>) {
14
- const { children, value } = props;
15
- return <CustomizeContext.Provider value={value}>{children}</CustomizeContext.Provider>;
12
+ export function useCustomizeContext() {
13
+ return useContext(CustomizeContext);
16
14
  }
17
15
 
18
16
  function useCustom<TComponent extends React.ComponentType>(key: string): TComponent | undefined | null {
19
17
  const value = useContext(CustomizeContext);
20
- return value[key] as TComponent | null | undefined;
18
+ return value ? (value[key] as TComponent | null | undefined) : undefined;
19
+ }
20
+
21
+ export function useCustomize<TCustom extends Customizable<React.ComponentType<any>>>(custom: TCustom) {
22
+ const Custom = useCustom<TCustom['Component']>(custom.key);
23
+
24
+ if (Custom == null) {
25
+ return null;
26
+ }
27
+
28
+ return Custom ?? custom.Component;
21
29
  }
22
30
 
23
31
  export function customize<TComponent extends React.ComponentType<any>>(
package/src/ui/index.ts CHANGED
@@ -1,11 +1,11 @@
1
+ export * from './color';
2
+ export * from './customize';
1
3
  export * from './Chatify';
2
- export * from './Avatar';
3
4
  export * from './localizer';
4
- export * from './AddChatButton';
5
- export * from './Layout/Header';
6
- export * from './ChatPanel/ChatHeader';
7
- export * from './ChatPanel/ChatHeaderMembers';
8
- export * from './ChatList/ChatListItemBox';
9
- export * from './Message/MessageBox';
10
- export * from './SystemMessage/SystemMessageBox';
11
- export * from './Icon';
5
+ export * from './Chat';
6
+ export * from './ChatGroup';
7
+ export * from './Conversation';
8
+ export * from './Thread';
9
+ export * from './common/Icon';
10
+ export * from './common/Avatar';
11
+ export * from './common/MessageSkeleton';
@@ -1,16 +1,12 @@
1
1
  import dayjs from 'dayjs';
2
2
  import React, { useContext } from 'react';
3
+ import { SystemMessageText } from '../core';
3
4
 
4
5
  export interface Localizer {
5
6
  isToday: (value: string) => boolean;
6
7
  timestamp: (value: string) => string;
7
8
  dateTime: (value: string) => string;
8
- system: {
9
- chatCreated: () => string;
10
- memberAdded: () => string;
11
- memberRemoved: () => string;
12
- chatNameChanged: (newName: string) => string;
13
- };
9
+ system: Record<SystemMessageText, (key: SystemMessageText, payload: any | null) => string>;
14
10
  message: {
15
11
  read: () => React.ReactNode;
16
12
  reading: () => React.ReactNode;
@@ -68,10 +64,11 @@ export const defaultLocalizer: Localizer = {
68
64
  submitBtn: () => 'Submit',
69
65
  },
70
66
  system: {
71
- chatCreated: () => 'Chat created',
72
- memberAdded: () => 'New member added',
73
- memberRemoved: () => 'Member removed',
74
- chatNameChanged: (newName: string) => `Chat name changed to '${newName}'`,
67
+ 'chatify://chat-created': () => 'Chat created',
68
+ 'chatify://member-added': () => 'New member added',
69
+ 'chatify://member-removed': () => 'Member removed',
70
+ 'chatify://chat-name-changed': (_, { newName }: { newName: string }) =>
71
+ `Chat name changed to '${newName}'`,
75
72
  },
76
73
 
77
74
  input: {
@@ -1,11 +0,0 @@
1
- import { PropsWithChildren } from 'react';
2
- import { ChatifyClient } from './core/client';
3
- export declare function useClient(): ChatifyClient;
4
- export declare function useMe(): string;
5
- export interface ChatifyContextValue {
6
- me: string;
7
- client: ChatifyClient;
8
- }
9
- export declare function ChatifyContext({ value, children }: PropsWithChildren<{
10
- value: ChatifyContextValue;
11
- }>): import("react/jsx-runtime").JSX.Element;
@@ -1,151 +0,0 @@
1
- import type { State } from './state';
2
- import { Account, Chat, ChatListItem, Message, ReadEvent, File } from './models';
3
- export declare const ACTIONS: {
4
- update: (state: State, { mutation }: {
5
- mutation: (state: State) => State;
6
- }) => void;
7
- messages_fetch: (state: State, { chatId, requestId }: {
8
- chatId: string;
9
- requestId: string;
10
- }) => void;
11
- messages_fulfilled: (state: State, { chatId, messages, hasMore }: {
12
- chatId: string;
13
- messages: Message[];
14
- hasMore: boolean;
15
- }) => void;
16
- messages_rejected: (state: State, { chatId, error }: {
17
- chatId: string;
18
- error: any;
19
- }) => void;
20
- fetchNext_fetch: (state: State, { chatId }: {
21
- chatId: string;
22
- }) => void;
23
- fetchNext_fulfilled: (state: State, { chatId, messages, hasMore }: {
24
- chatId: string;
25
- messages: Message[];
26
- hasMore: boolean;
27
- }) => void;
28
- fetchNext_rejected: (state: State, { chatId, error }: {
29
- chatId: string;
30
- error: any;
31
- }) => void;
32
- chatList_fetch: (state: State, { requestId }: {
33
- requestId: string;
34
- }) => void;
35
- chatList_fulfilled: (state: State, { chats }: {
36
- chats: ChatListItem[];
37
- }) => void;
38
- chatList_rejected: (state: State, { error }: {
39
- error: any;
40
- }) => void;
41
- removeMember_fetch: (state: State) => void;
42
- removeMember_fulfilled: (state: State) => void;
43
- removeMember_rejected: (state: State, { error }: {
44
- error: any;
45
- }) => void;
46
- addMember_fetch: (state: State) => void;
47
- addMember_fulfilled: (state: State) => void;
48
- addMember_rejected: (state: State, { error }: {
49
- error: any;
50
- }) => void;
51
- updateChatName_fetch: (state: State) => void;
52
- updateChatName_fulfilled: (state: State) => void;
53
- updateChatName_rejected: (state: State, { error }: {
54
- error: any;
55
- }) => void;
56
- addChat_fetch: (state: State) => void;
57
- addChat_fulfilled: (state: State) => void;
58
- addChat_rejected: (state: State, { error }: {
59
- error: any;
60
- }) => void;
61
- accounts_fetch: (state: State, { requestId }: {
62
- requestId: string;
63
- }) => void;
64
- accounts_fulfilled: (state: State, { accounts }: {
65
- accounts: Account[];
66
- }) => void;
67
- accounts_rejected: (state: State, { error }: {
68
- error: any;
69
- }) => void;
70
- chat_open: (state: State, { chatId }: {
71
- chatId: string;
72
- }) => void;
73
- new_chat_open: (state: State) => void;
74
- new_chat_close: (state: State) => void;
75
- toggle_members_view: (state: State) => void;
76
- message_received: (state: State, { message, requestId, me }: {
77
- message: Message;
78
- requestId: string;
79
- me: string;
80
- }) => void;
81
- chat_created: (state: State, { chat }: {
82
- chat: ChatListItem;
83
- requestId?: string | undefined;
84
- }) => void;
85
- read: (state: State, { id, timestamp }: {
86
- id: string;
87
- timestamp: number;
88
- }) => void;
89
- read_send: (state: State, { id }: {
90
- id: string;
91
- }) => void;
92
- read_reject: (state: State, { id, timestamp }: {
93
- id: string;
94
- timestamp: number;
95
- }) => void;
96
- read_received: (state: State, { events }: {
97
- events: ReadEvent[];
98
- }) => void;
99
- member_added: (state: State, { chatId, chatName, account, me, message, withHistory, }: {
100
- chatId: string;
101
- chatName: string;
102
- account: Account;
103
- me: string;
104
- message: Message;
105
- withHistory: boolean;
106
- }) => State;
107
- member_removed: (state: State, { chatId, accountId, deleteHistory, me, message, }: {
108
- chatId: string;
109
- accountId: string;
110
- deleteHistory: boolean;
111
- me: string;
112
- message: Message;
113
- }) => void;
114
- chat_fetch: (state: State, { chatId, requestId }: {
115
- chatId: string;
116
- requestId: string;
117
- }) => void;
118
- chat_fulfilled: (state: State, { chat }: {
119
- chat: Chat;
120
- }) => void;
121
- chat_rejected: (state: State, { chatId, error }: {
122
- chatId: string;
123
- error: any;
124
- }) => void;
125
- send_fetch: (state: State, { chatId, text, files, requestId, }: {
126
- chatId: string;
127
- text: string;
128
- files: File[];
129
- requestId: string;
130
- }) => void;
131
- send_fulfilled: (state: State, { chatId, requestId }: {
132
- chatId: string;
133
- requestId: string;
134
- }) => void;
135
- send_rejected: (state: State, { chatId, requestId, error }: {
136
- chatId: string;
137
- requestId: string;
138
- error: any;
139
- }) => void;
140
- chatNameChanged_received: (state: State, { chatId, newName, message }: {
141
- chatId: string;
142
- newName: string;
143
- message: Message;
144
- }) => void;
145
- };
146
- export type Action = {
147
- [K in keyof typeof ACTIONS]: {
148
- type: K;
149
- data: Parameters<(typeof ACTIONS)[K]>[1];
150
- };
151
- }[keyof typeof ACTIONS];
@@ -1,70 +0,0 @@
1
- export interface File {
2
- name: string;
3
- bytes: number;
4
- ref: string;
5
- }
6
- export interface Account {
7
- id: string;
8
- name: string;
9
- avatar: string;
10
- }
11
- export interface Message {
12
- id: string;
13
- chatId: string;
14
- text: string;
15
- files: File[];
16
- sentAt: string;
17
- sentBy: Account;
18
- requestId?: string;
19
- }
20
- export interface Chat {
21
- id: string;
22
- name: string;
23
- members: Account[];
24
- }
25
- export interface ChatListItem {
26
- id: string;
27
- name: string;
28
- message: Message;
29
- totalUnreadCount: number;
30
- active: boolean;
31
- lastReadMessageId: string | null;
32
- }
33
- export interface SendMessageRequest {
34
- chatId: string;
35
- text: string;
36
- files: File[];
37
- requestId: string;
38
- }
39
- export interface MessageBody {
40
- text: string;
41
- files: File[];
42
- }
43
- export interface AddChatRequest {
44
- requestId: string;
45
- name: string;
46
- message?: MessageBody;
47
- members: string[];
48
- }
49
- export interface ReadRequest {
50
- id: string;
51
- }
52
- export interface ReadEvent {
53
- chatId: string;
54
- newLastReadMessageId: string;
55
- readCount: number;
56
- }
57
- export interface RemoveMemberRequest {
58
- chatId: string;
59
- accountId: string;
60
- deleteHistory: boolean;
61
- }
62
- export interface AddMemberRequest {
63
- chatId: string;
64
- accountId: string;
65
- withHistory: boolean;
66
- }
67
- export interface UpdateChatNameRequest {
68
- id: string;
69
- name: string;
70
- }
@@ -1,11 +0,0 @@
1
- import React, { PropsWithChildren } from 'react';
2
- import { Action } from './action';
3
- import { State } from './state';
4
- export type Reducer = ReturnType<typeof useReducer>;
5
- type Subscriber = (state: State) => void;
6
- export declare function useReducer(): readonly [React.MutableRefObject<State>, (action: Action) => void, (subscriber: Subscriber) => () => void];
7
- export declare function ReducerProvider({ children }: PropsWithChildren<{}>): import("react/jsx-runtime").JSX.Element;
8
- export declare function useDispatch(): (action: Action) => void;
9
- export declare function useStateRef(): React.MutableRefObject<State>;
10
- export declare function useSelect<TResult>(select: (state: State) => TResult, deps: any[]): TResult;
11
- export {};
@@ -1,55 +0,0 @@
1
- import { Account, Chat, ChatListItem, Message, SendMessageRequest, File } from './models';
2
- export type MessageState = ({
3
- type: 'message';
4
- } & Message) | {
5
- type: 'next';
6
- } | {
7
- type: 'sending';
8
- text: string;
9
- files: File[];
10
- requestId: string;
11
- };
12
- export interface UIState {
13
- view?: 'chat' | 'new-chat';
14
- showMembers: boolean;
15
- chatId?: string;
16
- }
17
- export interface QueryState<TData> {
18
- uninitialized: boolean;
19
- isFetching: boolean;
20
- error?: any;
21
- data?: TData;
22
- requestId?: string;
23
- }
24
- export interface MutationState {
25
- isFetching: boolean;
26
- error?: any;
27
- }
28
- export interface QueueState<TValue> {
29
- queued: TValue[];
30
- processing: TValue[];
31
- timestamp: number;
32
- }
33
- export interface State {
34
- ui: UIState;
35
- query: {
36
- messages: Record<string, QueryState<MessageState[]>>;
37
- chats: Record<string, QueryState<Chat>>;
38
- chatList: QueryState<ChatListItem[]>;
39
- accounts: QueryState<Account[]>;
40
- };
41
- mutation: {
42
- fetchNext: MutationState;
43
- removeMember: MutationState;
44
- addMember: MutationState;
45
- updateChatName: MutationState;
46
- addChat: MutationState;
47
- send: MutationState;
48
- };
49
- queue: {
50
- read: QueueState<string>;
51
- send: QueueState<SendMessageRequest>;
52
- };
53
- }
54
- export declare const FETCH_QUERY_STATE: QueryState<any>;
55
- export declare const INITIAL_STATE: State;
@@ -1,2 +0,0 @@
1
- import { AddChatRequest } from './models';
2
- export declare function useAddChatMutation(): readonly [(args: AddChatRequest) => Promise<string>, import("./state").MutationState];
@@ -1,2 +0,0 @@
1
- import { AddMemberRequest } from './models';
2
- export declare function useAddMemberMutation(): readonly [(args: AddMemberRequest) => void, import("./state").MutationState];
@@ -1,3 +0,0 @@
1
- export declare function useFetchNextMutation({ chatId }: {
2
- chatId: string;
3
- }): readonly [() => void, import("./state").MutationState];
@@ -1,3 +0,0 @@
1
- import { QueryState } from './state';
2
- import { Account } from './models';
3
- export declare function useGetAccountsQuery(): QueryState<Account[]>;