@webinex/chatify 2.0.0-build2 → 2.0.0-build202511241945

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 (295) hide show
  1. package/dist/Chatify-LHpROnDl.js +2215 -0
  2. package/dist/Chatify-LHpROnDl.js.map +1 -0
  3. package/dist/Chatify.css +670 -0
  4. package/dist/audit.css +60 -0
  5. package/dist/audit.js +242 -0
  6. package/dist/audit.js.map +1 -0
  7. package/dist/index.js +97 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/types/audit/AuditChatList.d.ts +9 -0
  10. package/dist/types/audit/AuditConversationPanel.d.ts +10 -0
  11. package/dist/types/audit/AuditPanel.d.ts +14 -0
  12. package/dist/types/audit/AuditPanelCustomizeValue.d.ts +9 -0
  13. package/dist/types/audit/AuditSearch.d.ts +5 -0
  14. package/dist/types/audit/AuditSearchValue.d.ts +14 -0
  15. package/dist/types/audit/auditApi.d.ts +94 -0
  16. package/dist/types/audit/index.d.ts +17 -0
  17. package/dist/types/core/api/api.d.ts +17295 -0
  18. package/dist/types/core/api/baseApi.d.ts +15 -0
  19. package/dist/types/core/api/index.d.ts +1 -0
  20. package/dist/{esm/types → types}/core/client.d.ts +9 -6
  21. package/dist/{esm/types → types}/core/types.d.ts +28 -6
  22. package/dist/types/ui/Chat/ChatEditableHeaderName.d.ts +1 -0
  23. package/dist/types/ui/Chat/ChatHeaderActions.d.ts +1 -0
  24. package/dist/{esm/types → types}/ui/Chat/ChatView.d.ts +1 -2
  25. package/dist/types/ui/Chat/Members/ChatMembersButton.d.ts +1 -0
  26. package/dist/types/ui/Chat/Members/ChatMembersPanel.d.ts +1 -0
  27. package/dist/types/ui/Chat/Members/ChatMembersPreview.d.ts +1 -0
  28. package/dist/{esm/types → types}/ui/ChatGroup/ChatGroupPanel.d.ts +2 -2
  29. package/dist/types/ui/ChatGroup/Create/CreateChatButton.d.ts +1 -0
  30. package/dist/{esm/types → types}/ui/ChatGroup/Create/CreateChatForm.d.ts +1 -2
  31. package/dist/types/ui/ChatGroup/Create/CreateChatMemberInput.d.ts +4 -0
  32. package/dist/types/ui/ChatGroup/Create/CreateChatNameInput.d.ts +4 -0
  33. package/dist/types/ui/ChatGroup/Create/CreateChatPanel.d.ts +1 -0
  34. package/dist/types/ui/ChatGroup/Layout/ChatGroupAside.d.ts +1 -0
  35. package/dist/types/ui/ChatGroup/Layout/ChatGroupBody.d.ts +1 -0
  36. package/dist/types/ui/ChatGroup/Layout/ChatGroupFooter.d.ts +1 -0
  37. package/dist/types/ui/ChatGroup/Layout/ChatGroupHeader.d.ts +1 -0
  38. package/dist/types/ui/ChatGroup/Layout/ChatGroupMain.d.ts +1 -0
  39. package/dist/types/ui/ChatGroup/List/ChatListPanel.d.ts +1 -0
  40. package/dist/types/ui/ChatGroup/List/index.d.ts +6 -0
  41. package/dist/types/ui/Chatify.d.ts +9 -0
  42. package/dist/{esm/types → types}/ui/Conversation/Conversation.d.ts +3 -2
  43. package/dist/types/ui/Conversation/ConversationActions.d.ts +1 -0
  44. package/dist/types/ui/Conversation/ConversationBody.d.ts +1 -0
  45. package/dist/{esm/types → types}/ui/Conversation/ConversationContext.d.ts +7 -4
  46. package/dist/types/ui/Conversation/ConversationHeader.d.ts +1 -0
  47. package/dist/types/ui/Conversation/ConversationName.d.ts +1 -0
  48. package/dist/types/ui/Conversation/InputBox/InputBox.d.ts +1 -0
  49. package/dist/types/ui/Conversation/InputBox/InputBoxFile.d.ts +7 -0
  50. package/dist/types/ui/Conversation/InputBox/InputBoxFileList.d.ts +7 -0
  51. package/dist/types/ui/Conversation/InputBox/InputFilesBox.d.ts +11 -0
  52. package/dist/types/ui/Conversation/InputBox/InputSubmitButtonBox.d.ts +6 -0
  53. package/dist/{esm/types → types}/ui/Conversation/InputBox/InputTextBox.d.ts +2 -1
  54. package/dist/{esm/types → types}/ui/Conversation/InputBox/index.d.ts +8 -1
  55. package/dist/types/ui/Conversation/Message/MessageAuthor.d.ts +2 -0
  56. package/dist/types/ui/Conversation/Message/MessageBox.d.ts +5 -0
  57. package/dist/types/ui/Conversation/Message/MessageContent.d.ts +2 -0
  58. package/dist/types/ui/Conversation/Message/MessageFile.d.ts +5 -0
  59. package/dist/types/ui/Conversation/Message/MessageFileList.d.ts +2 -0
  60. package/dist/types/ui/Conversation/Message/MessageInfoBox.d.ts +2 -0
  61. package/dist/{esm/types → types}/ui/Conversation/Message/MessageRow.d.ts +1 -1
  62. package/dist/types/ui/Conversation/Message/MessageText.d.ts +2 -0
  63. package/dist/{esm/types → types}/ui/Conversation/Message/index.d.ts +6 -0
  64. package/dist/types/ui/Conversation/SendingMessage/SendingMessageBox.d.ts +6 -0
  65. package/dist/types/ui/Conversation/SendingMessage/SendingMessageContent.d.ts +2 -0
  66. package/dist/types/ui/Conversation/SendingMessage/SendingMessageInfoBox.d.ts +2 -0
  67. package/dist/types/ui/Conversation/SendingMessage/SendingMessageText.d.ts +2 -0
  68. package/dist/types/ui/Conversation/SystemMessage/SystemMessageBox.d.ts +5 -0
  69. package/dist/{esm/types → types}/ui/Conversation/SystemMessage/SystemMessageRow.d.ts +1 -1
  70. package/dist/types/ui/Thread/ThreadActions.d.ts +1 -0
  71. package/dist/{esm/types → types}/ui/Thread/ThreadContext.d.ts +1 -1
  72. package/dist/types/ui/common/Avatar.d.ts +5 -0
  73. package/dist/types/ui/common/ChatList/ChatList.d.ts +16 -0
  74. package/dist/types/ui/common/ChatList/ChatListItemAvatar.d.ts +2 -0
  75. package/dist/types/ui/common/ChatList/ChatListItemBox.d.ts +9 -0
  76. package/dist/types/ui/common/ChatList/ChatListItemLastMessage.d.ts +2 -0
  77. package/dist/types/ui/common/ChatList/ChatListItemLastMessageAuthor.d.ts +2 -0
  78. package/dist/types/ui/common/ChatList/ChatListItemLastMessageContent.d.ts +2 -0
  79. package/dist/types/ui/common/ChatList/ChatListItemLastMessageSentAt.d.ts +2 -0
  80. package/dist/types/ui/common/ChatList/ChatListItemName.d.ts +2 -0
  81. package/dist/types/ui/common/ChatList/ChatListItemUnreadCount.d.ts +2 -0
  82. package/dist/types/ui/common/ChatList/ChatListValue.d.ts +8 -0
  83. package/dist/{esm/types/ui/ChatGroup/List → types/ui/common/ChatList}/index.d.ts +1 -0
  84. package/dist/types/ui/common/Icon.d.ts +21 -0
  85. package/dist/types/ui/common/MessageSkeleton.d.ts +4 -0
  86. package/dist/{esm/types → types}/ui/common/index.d.ts +1 -0
  87. package/dist/{esm/types → types}/ui/customize.d.ts +3 -3
  88. package/dist/{esm/types → types}/ui/index.d.ts +1 -3
  89. package/dist/{esm/types → types}/ui/localizer.d.ts +12 -2
  90. package/dist/types/ui/useFormatter.d.ts +3 -0
  91. package/package.json +81 -94
  92. package/src/audit/AuditChatList.tsx +25 -0
  93. package/src/audit/AuditConversationPanel.tsx +48 -0
  94. package/src/audit/AuditPanel.tsx +76 -0
  95. package/src/audit/AuditPanelCustomizeValue.ts +11 -0
  96. package/src/audit/AuditSearch.tsx +89 -0
  97. package/src/audit/AuditSearchValue.tsx +42 -0
  98. package/src/audit/auditApi.tsx +110 -0
  99. package/src/audit/index.d.ts +18 -0
  100. package/src/audit/index.tsx +28 -0
  101. package/src/audit/styles.scss +72 -0
  102. package/src/core/api/api.ts +655 -42
  103. package/src/core/api/baseApi.ts +38 -30
  104. package/src/core/api/index.ts +1 -9
  105. package/src/core/client.ts +287 -269
  106. package/src/core/constants.ts +1 -1
  107. package/src/core/debounce.ts +90 -90
  108. package/src/core/index.ts +4 -4
  109. package/src/core/types.tsx +182 -152
  110. package/src/index.ts +2 -2
  111. package/src/styles/aside.scss +26 -161
  112. package/src/styles/chat-list.scss +138 -0
  113. package/src/styles/chat.scss +11 -208
  114. package/src/styles/conversation.scss +200 -0
  115. package/src/styles/index.scss +161 -110
  116. package/src/styles/input.scss +148 -74
  117. package/src/styles/keyframes.scss +14 -14
  118. package/src/styles/members.scss +13 -13
  119. package/src/styles/mixins.scss +25 -20
  120. package/src/styles/variables.scss +13 -10
  121. package/src/ui/Chat/ChatContext.tsx +30 -30
  122. package/src/ui/Chat/ChatEditableHeaderName.tsx +63 -63
  123. package/src/ui/Chat/ChatHeaderActions.tsx +19 -19
  124. package/src/ui/Chat/ChatPanel.tsx +30 -30
  125. package/src/ui/Chat/ChatView.tsx +115 -123
  126. package/src/ui/Chat/Members/ChatMembersButton.tsx +9 -9
  127. package/src/ui/Chat/Members/ChatMembersPanel.tsx +112 -117
  128. package/src/ui/Chat/Members/ChatMembersPreview.tsx +25 -25
  129. package/src/ui/Chat/Members/index.ts +13 -13
  130. package/src/ui/Chat/index.ts +6 -6
  131. package/src/ui/ChatGroup/ChatGroupContext.tsx +50 -50
  132. package/src/ui/ChatGroup/ChatGroupPanel.tsx +73 -73
  133. package/src/ui/ChatGroup/Create/CreateChatButton.tsx +15 -15
  134. package/src/ui/ChatGroup/Create/CreateChatForm.tsx +36 -36
  135. package/src/ui/ChatGroup/Create/CreateChatMemberInput.tsx +65 -65
  136. package/src/ui/ChatGroup/Create/CreateChatNameInput.tsx +25 -25
  137. package/src/ui/ChatGroup/Create/CreateChatPanel.tsx +45 -45
  138. package/src/ui/ChatGroup/Create/index.ts +19 -19
  139. package/src/ui/ChatGroup/Layout/ChatGroupAside.tsx +12 -12
  140. package/src/ui/ChatGroup/Layout/ChatGroupBody.tsx +10 -10
  141. package/src/ui/ChatGroup/Layout/ChatGroupFooter.tsx +3 -3
  142. package/src/ui/ChatGroup/Layout/ChatGroupHeader.tsx +5 -5
  143. package/src/ui/ChatGroup/Layout/ChatGroupMain.tsx +17 -17
  144. package/src/ui/ChatGroup/Layout/index.ts +19 -19
  145. package/src/ui/ChatGroup/List/ChatListPanel.tsx +28 -0
  146. package/src/ui/ChatGroup/List/index.ts +8 -31
  147. package/src/ui/ChatGroup/index.ts +5 -5
  148. package/src/ui/Chatify.tsx +15 -9
  149. package/src/ui/Conversation/Conversation.tsx +92 -76
  150. package/src/ui/Conversation/ConversationActions.tsx +12 -5
  151. package/src/ui/Conversation/ConversationBody.tsx +28 -28
  152. package/src/ui/Conversation/ConversationContext.ts +30 -27
  153. package/src/ui/Conversation/ConversationHeader.tsx +19 -23
  154. package/src/ui/Conversation/ConversationName.tsx +7 -7
  155. package/src/ui/Conversation/InputBox/InputBox.tsx +126 -40
  156. package/src/ui/Conversation/InputBox/InputBoxFile.tsx +38 -0
  157. package/src/ui/Conversation/InputBox/InputBoxFileList.tsx +21 -0
  158. package/src/ui/Conversation/InputBox/InputFilesBox.tsx +78 -9
  159. package/src/ui/Conversation/InputBox/InputSubmitButtonBox.tsx +26 -17
  160. package/src/ui/Conversation/InputBox/InputTextBox.tsx +61 -53
  161. package/src/ui/Conversation/InputBox/index.ts +23 -16
  162. package/src/ui/Conversation/Message/MessageAuthor.tsx +13 -13
  163. package/src/ui/Conversation/Message/MessageBox.tsx +20 -20
  164. package/src/ui/Conversation/Message/MessageContent.tsx +15 -11
  165. package/src/ui/Conversation/Message/MessageFile.tsx +54 -0
  166. package/src/ui/Conversation/Message/MessageFileList.tsx +14 -0
  167. package/src/ui/Conversation/Message/MessageInfoBox.tsx +28 -28
  168. package/src/ui/Conversation/Message/MessageRow.tsx +28 -28
  169. package/src/ui/Conversation/Message/MessageText.tsx +7 -7
  170. package/src/ui/Conversation/Message/index.ts +28 -22
  171. package/src/ui/Conversation/NextObserver/NextMessagesObserver.tsx +47 -47
  172. package/src/ui/Conversation/NextObserver/index.ts +1 -1
  173. package/src/ui/Conversation/ReadObserver/MessageReadObserver.tsx +49 -49
  174. package/src/ui/Conversation/ReadObserver/index.ts +1 -1
  175. package/src/ui/Conversation/SendingMessage/SendingMessageBox.tsx +16 -16
  176. package/src/ui/Conversation/SendingMessage/SendingMessageContent.tsx +13 -13
  177. package/src/ui/Conversation/SendingMessage/SendingMessageInfoBox.tsx +13 -13
  178. package/src/ui/Conversation/SendingMessage/SendingMessageText.tsx +7 -7
  179. package/src/ui/Conversation/SendingMessage/index.ts +16 -16
  180. package/src/ui/Conversation/SystemMessage/SystemMessageBox.tsx +20 -20
  181. package/src/ui/Conversation/SystemMessage/SystemMessageRow.tsx +28 -28
  182. package/src/ui/Conversation/SystemMessage/index.ts +10 -10
  183. package/src/ui/Conversation/index.ts +13 -13
  184. package/src/ui/Thread/ThreadActions.tsx +22 -22
  185. package/src/ui/Thread/ThreadContext.ts +13 -13
  186. package/src/ui/Thread/ThreadPanel.tsx +127 -138
  187. package/src/ui/Thread/index.tsx +3 -3
  188. package/src/ui/color.ts +20 -20
  189. package/src/ui/common/Avatar.tsx +20 -20
  190. package/src/ui/common/ChatList/ChatList.tsx +84 -0
  191. package/src/ui/{ChatGroup/List → common/ChatList}/ChatListItemAvatar.tsx +22 -22
  192. package/src/ui/{ChatGroup/List → common/ChatList}/ChatListItemBox.tsx +32 -26
  193. package/src/ui/{ChatGroup/List → common/ChatList}/ChatListItemLastMessage.tsx +15 -15
  194. package/src/ui/{ChatGroup/List → common/ChatList}/ChatListItemLastMessageAuthor.tsx +15 -15
  195. package/src/ui/{ChatGroup/List → common/ChatList}/ChatListItemLastMessageContent.tsx +21 -21
  196. package/src/ui/{ChatGroup/List → common/ChatList}/ChatListItemLastMessageSentAt.tsx +22 -22
  197. package/src/ui/{ChatGroup/List → common/ChatList}/ChatListItemName.tsx +8 -8
  198. package/src/ui/{ChatGroup/List → common/ChatList}/ChatListItemUnreadCount.tsx +12 -12
  199. package/src/ui/common/ChatList/ChatListValue.ts +9 -0
  200. package/src/ui/common/ChatList/index.ts +32 -0
  201. package/src/ui/common/Icon.tsx +44 -40
  202. package/src/ui/common/MessageSkeleton.tsx +20 -20
  203. package/src/ui/common/index.ts +14 -13
  204. package/src/ui/customize.tsx +51 -53
  205. package/src/ui/index.ts +11 -11
  206. package/src/ui/localizer.tsx +108 -81
  207. package/src/ui/useFormatter.tsx +17 -0
  208. package/dist/css/chatify.css +0 -560
  209. package/dist/esm/index.js +0 -11
  210. package/dist/esm/index.js.map +0 -1
  211. package/dist/esm/types/core/api/accountApi.d.ts +0 -5
  212. package/dist/esm/types/core/api/api.d.ts +0 -2538
  213. package/dist/esm/types/core/api/baseApi.d.ts +0 -10
  214. package/dist/esm/types/core/api/chatApi.d.ts +0 -25
  215. package/dist/esm/types/core/api/chatListApi.d.ts +0 -6
  216. package/dist/esm/types/core/api/chatMemberApi.d.ts +0 -6
  217. package/dist/esm/types/core/api/chatMessageApi.d.ts +0 -34
  218. package/dist/esm/types/core/api/index.d.ts +0 -9
  219. package/dist/esm/types/core/api/threadApi.d.ts +0 -95
  220. package/dist/esm/types/core/api/threadMessageApi.d.ts +0 -28
  221. package/dist/esm/types/ui/Chat/ChatEditableHeaderName.d.ts +0 -2
  222. package/dist/esm/types/ui/Chat/ChatHeaderActions.d.ts +0 -2
  223. package/dist/esm/types/ui/Chat/Members/ChatMembersButton.d.ts +0 -2
  224. package/dist/esm/types/ui/Chat/Members/ChatMembersPanel.d.ts +0 -2
  225. package/dist/esm/types/ui/Chat/Members/ChatMembersPreview.d.ts +0 -2
  226. package/dist/esm/types/ui/ChatGroup/Create/CreateChatButton.d.ts +0 -2
  227. package/dist/esm/types/ui/ChatGroup/Create/CreateChatMemberInput.d.ts +0 -5
  228. package/dist/esm/types/ui/ChatGroup/Create/CreateChatNameInput.d.ts +0 -5
  229. package/dist/esm/types/ui/ChatGroup/Create/CreateChatPanel.d.ts +0 -2
  230. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupAside.d.ts +0 -2
  231. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupBody.d.ts +0 -2
  232. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupFooter.d.ts +0 -2
  233. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupHeader.d.ts +0 -2
  234. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupMain.d.ts +0 -2
  235. package/dist/esm/types/ui/ChatGroup/List/ChatList.d.ts +0 -2
  236. package/dist/esm/types/ui/ChatGroup/List/ChatListItemAvatar.d.ts +0 -3
  237. package/dist/esm/types/ui/ChatGroup/List/ChatListItemBox.d.ts +0 -6
  238. package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessage.d.ts +0 -3
  239. package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessageAuthor.d.ts +0 -3
  240. package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessageContent.d.ts +0 -3
  241. package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessageSentAt.d.ts +0 -3
  242. package/dist/esm/types/ui/ChatGroup/List/ChatListItemName.d.ts +0 -3
  243. package/dist/esm/types/ui/ChatGroup/List/ChatListItemUnreadCount.d.ts +0 -3
  244. package/dist/esm/types/ui/Chatify.d.ts +0 -8
  245. package/dist/esm/types/ui/Conversation/ConversationActions.d.ts +0 -2
  246. package/dist/esm/types/ui/Conversation/ConversationBody.d.ts +0 -2
  247. package/dist/esm/types/ui/Conversation/ConversationHeader.d.ts +0 -2
  248. package/dist/esm/types/ui/Conversation/ConversationName.d.ts +0 -2
  249. package/dist/esm/types/ui/Conversation/InputBox/InputBox.d.ts +0 -2
  250. package/dist/esm/types/ui/Conversation/InputBox/InputFilesBox.d.ts +0 -2
  251. package/dist/esm/types/ui/Conversation/InputBox/InputSubmitButtonBox.d.ts +0 -5
  252. package/dist/esm/types/ui/Conversation/Message/MessageAuthor.d.ts +0 -3
  253. package/dist/esm/types/ui/Conversation/Message/MessageBox.d.ts +0 -6
  254. package/dist/esm/types/ui/Conversation/Message/MessageContent.d.ts +0 -3
  255. package/dist/esm/types/ui/Conversation/Message/MessageInfoBox.d.ts +0 -3
  256. package/dist/esm/types/ui/Conversation/Message/MessageText.d.ts +0 -3
  257. package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageBox.d.ts +0 -7
  258. package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageContent.d.ts +0 -3
  259. package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageInfoBox.d.ts +0 -3
  260. package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageText.d.ts +0 -3
  261. package/dist/esm/types/ui/Conversation/SystemMessage/SystemMessageBox.d.ts +0 -6
  262. package/dist/esm/types/ui/Thread/ThreadActions.d.ts +0 -2
  263. package/dist/esm/types/ui/common/Avatar.d.ts +0 -6
  264. package/dist/esm/types/ui/common/Icon.d.ts +0 -20
  265. package/dist/esm/types/ui/common/MessageSkeleton.d.ts +0 -5
  266. package/src/core/api/accountApi.ts +0 -13
  267. package/src/core/api/chatApi.ts +0 -89
  268. package/src/core/api/chatListApi.ts +0 -149
  269. package/src/core/api/chatMemberApi.ts +0 -22
  270. package/src/core/api/chatMessageApi.ts +0 -156
  271. package/src/core/api/threadApi.ts +0 -132
  272. package/src/core/api/threadMessageApi.ts +0 -127
  273. package/src/ui/ChatGroup/List/ChatList.tsx +0 -42
  274. /package/dist/{esm/types → types}/core/constants.d.ts +0 -0
  275. /package/dist/{esm/types → types}/core/debounce.d.ts +0 -0
  276. /package/dist/{esm/types → types}/core/index.d.ts +0 -0
  277. /package/dist/{esm/types → types}/index.d.ts +0 -0
  278. /package/dist/{esm/types → types}/ui/Chat/ChatContext.d.ts +0 -0
  279. /package/dist/{esm/types → types}/ui/Chat/ChatPanel.d.ts +0 -0
  280. /package/dist/{esm/types → types}/ui/Chat/Members/index.d.ts +0 -0
  281. /package/dist/{esm/types → types}/ui/Chat/index.d.ts +0 -0
  282. /package/dist/{esm/types → types}/ui/ChatGroup/ChatGroupContext.d.ts +0 -0
  283. /package/dist/{esm/types → types}/ui/ChatGroup/Create/index.d.ts +0 -0
  284. /package/dist/{esm/types → types}/ui/ChatGroup/Layout/index.d.ts +0 -0
  285. /package/dist/{esm/types → types}/ui/ChatGroup/index.d.ts +0 -0
  286. /package/dist/{esm/types → types}/ui/Conversation/NextObserver/NextMessagesObserver.d.ts +0 -0
  287. /package/dist/{esm/types → types}/ui/Conversation/NextObserver/index.d.ts +0 -0
  288. /package/dist/{esm/types → types}/ui/Conversation/ReadObserver/MessageReadObserver.d.ts +0 -0
  289. /package/dist/{esm/types → types}/ui/Conversation/ReadObserver/index.d.ts +0 -0
  290. /package/dist/{esm/types → types}/ui/Conversation/SendingMessage/index.d.ts +0 -0
  291. /package/dist/{esm/types → types}/ui/Conversation/SystemMessage/index.d.ts +0 -0
  292. /package/dist/{esm/types → types}/ui/Conversation/index.d.ts +0 -0
  293. /package/dist/{esm/types → types}/ui/Thread/ThreadPanel.d.ts +0 -0
  294. /package/dist/{esm/types → types}/ui/Thread/index.d.ts +0 -0
  295. /package/dist/{esm/types → types}/ui/color.d.ts +0 -0
@@ -1,30 +1,38 @@
1
- import { createApi, fakeBaseQuery } from '@reduxjs/toolkit/query/react';
2
- import { ChatifyClient } from '../client';
3
- import { Debounce } from '../debounce';
4
- import { chatId } from '../types';
5
-
6
- export const DEFAULT_MESSAGE_LIST_TAKE = 20;
7
-
8
- export const CHAT_MESSAGE_READ_QUEUE = new Debounce<string>({
9
- callback: (id) => __settings.client.readChatMessage({ id }),
10
- compare: (a, b) => -a.localeCompare(b),
11
- groupBy: (id) => chatId(id),
12
- timeout: 500,
13
- });
14
-
15
- export interface ChatifyApiSettings {
16
- me: () => string;
17
- client: ChatifyClient;
18
- }
19
-
20
- export const __settings: ChatifyApiSettings = {
21
- me: null!,
22
- client: null!,
23
- };
24
-
25
- export const __baseApi = createApi({
26
- baseQuery: fakeBaseQuery(),
27
- reducerPath: 'chatify',
28
- tagTypes: ['chat', 'account', 'message', 'thread', 'thread-message'],
29
- endpoints: (_) => ({}),
30
- });
1
+ import { BaseQueryFn, EndpointBuilder, createApi, fakeBaseQuery } from '@reduxjs/toolkit/query/react';
2
+ import { ChatifyClient } from '../client';
3
+ import { Debounce } from '../debounce';
4
+ import { chatId } from '../types';
5
+
6
+ export const DEFAULT_MESSAGE_LIST_TAKE = 20;
7
+
8
+ export const CHAT_MESSAGE_READ_QUEUE = new Debounce<string>({
9
+ callback: (id) => __settings.client.readChatMessage({ id }),
10
+ compare: (a, b) => -a.localeCompare(b),
11
+ groupBy: (id) => chatId(id),
12
+ timeout: 500,
13
+ });
14
+
15
+ export interface ChatifyApiSettings {
16
+ me: () => string;
17
+ client: ChatifyClient;
18
+ }
19
+
20
+ export const __settings: ChatifyApiSettings = {
21
+ me: null!,
22
+ client: null!,
23
+ };
24
+
25
+ const TAG_TYPES = ['chat', 'account', 'message', 'thread', 'thread-message'] as const;
26
+
27
+ export interface BaseApiEndpointBuilder
28
+ extends EndpointBuilder<BaseQueryFn, (typeof TAG_TYPES)[number], 'chatify'> {}
29
+
30
+ const baseApi: ReturnType<typeof createApi<BaseQueryFn, {}, 'chatify', (typeof TAG_TYPES)[number]>> =
31
+ createApi({
32
+ baseQuery: fakeBaseQuery(),
33
+ reducerPath: 'chatify',
34
+ tagTypes: TAG_TYPES,
35
+ endpoints: (_) => ({}),
36
+ });
37
+
38
+ export const __baseApi = baseApi;
@@ -1,9 +1 @@
1
- export * from './baseApi';
2
- export * from './accountApi';
3
- export * from './chatApi';
4
- export * from './chatListApi';
5
- export * from './chatMemberApi';
6
- export * from './chatMessageApi';
7
- export * from './threadApi';
8
- export * from './threadMessageApi';
9
- export * from './api';
1
+ export * from './api';
@@ -1,269 +1,287 @@
1
- import { AxiosInstance } from 'axios';
2
- import * as SignalR from '@microsoft/signalr';
3
- import {
4
- Account,
5
- AddChatRequest,
6
- AddChatMemberRequest,
7
- Chat,
8
- ChatListItem,
9
- ChatMessage,
10
- ReadChatMessageEvent,
11
- ReadChatMessageRequest,
12
- RemoveChatMemberRequest,
13
- SendChatMessageRequest,
14
- UpdateChatNameRequest,
15
- SendThreadMessageRequest,
16
- Thread,
17
- ThreadMessage,
18
- ThreadWatchListItem as ThreadListItem,
19
- } from './types';
20
-
21
- export interface ChatifySignalRConfig {
22
- hubUri?: string;
23
- accessTokenFactory?: () => Promise<string>;
24
- headersFactory?: () => Promise<Record<string, string>>;
25
- }
26
-
27
- const DEFAULT_SIGNALR_CONFIG: ChatifySignalRConfig = {
28
- hubUri: '/api/chatify/hub',
29
- headersFactory: () => Promise.resolve({}),
30
- };
31
-
32
- export interface ChatifyClientConfig {
33
- axios: AxiosInstance;
34
- signalR: ChatifySignalRConfig;
35
- }
36
-
37
- export const CHATIFY_SIGNALR_METHODS = [
38
- 'chatify://chat-new-message',
39
- 'chatify://chat-created',
40
- 'chatify://chat-message-read',
41
- 'chatify://chat-member-added',
42
- 'chatify://chat-member-removed',
43
- 'chatify://chat-name-changed',
44
-
45
- 'chatify://thread-created',
46
- 'chatify://thread-message-new',
47
- 'chatify://thread-message-read',
48
- 'chatify://thread-watch-added',
49
- 'chatify://thread-watch-removed',
50
- ] as const;
51
-
52
- export type ChatifySignalRMethod = (typeof CHATIFY_SIGNALR_METHODS)[number];
53
-
54
- export type ChatifySignalRArgsByMethod = {
55
- 'chatify://chat-new-message': [message: ChatMessage, requestId: string];
56
- 'chatify://chat-created': [chat: ChatListItem, requestId: string];
57
- 'chatify://chat-message-read': [events: ReadChatMessageEvent[]];
58
- 'chatify://chat-member-added': [
59
- chatId: string,
60
- chatName: string,
61
- account: Account,
62
- message: ChatMessage,
63
- withHistory: boolean,
64
- read: boolean,
65
- ];
66
- 'chatify://chat-member-removed': [
67
- chatId: string,
68
- accountId: string,
69
- deleteHistory: boolean,
70
- message: ChatMessage,
71
- read: boolean,
72
- ];
73
- 'chatify://chat-name-changed': [chatId: string, newName: string, message: ChatMessage, read: boolean];
74
-
75
- 'chatify://thread-message-new': [threadId: string, message: ThreadMessage, readForId: string | null];
76
- 'chatify://thread-message-read': [threadId: string, messageId: string];
77
- 'chatify://thread-watch-added': [thread: ThreadListItem];
78
- 'chatify://thread-watch-removed': [id: string];
79
- 'chatify://thread-created': [thread: ThreadListItem, watch: boolean];
80
- };
81
-
82
- export class ChatifyClient {
83
- private _config: ChatifyClientConfig;
84
- private _connection: SignalR.HubConnection = null!;
85
- private _connectionPromise: Promise<SignalR.HubConnection> | null = null!;
86
- private _subscribers: Record<string, ((args: any[]) => void)[]> = {};
87
- private _reconnectSubscribers: Array<() => void> = [];
88
-
89
- constructor(config: ChatifyClientConfig) {
90
- this._config = {
91
- ...config,
92
- signalR: {
93
- ...DEFAULT_SIGNALR_CONFIG,
94
- ...config.signalR,
95
- },
96
- };
97
- }
98
-
99
- public connect = async () => {
100
- if (this._connection) {
101
- return;
102
- }
103
-
104
- if (this._connectionPromise) {
105
- return await this._connectionPromise;
106
- }
107
-
108
- this._connectionPromise = this.createAndStartConnection();
109
- this._connection = await this._connectionPromise;
110
- };
111
-
112
- private createAndStartConnection = async () => {
113
- const headers = await this._config.signalR!.headersFactory!();
114
-
115
- const connection = new SignalR.HubConnectionBuilder()
116
- .withUrl(this._config.signalR!.hubUri!, {
117
- accessTokenFactory: this._config.signalR!.accessTokenFactory
118
- ? this._config.signalR!.accessTokenFactory
119
- : undefined,
120
- headers,
121
- })
122
- .withAutomaticReconnect()
123
- .build();
124
-
125
- CHATIFY_SIGNALR_METHODS.forEach((x) => {
126
- connection.on(x, (...args) => {
127
- this._subscribers[x]?.forEach((s) => {
128
- try {
129
- s(args);
130
- } catch (ex) {
131
- console.error(`Failed to notify subscriber`, ex);
132
- }
133
- });
134
- });
135
- });
136
-
137
- connection.onreconnected(() => this._reconnectSubscribers.forEach((subscriber) => subscriber()));
138
-
139
- await connection.start();
140
- return connection;
141
- };
142
-
143
- public subscribe = <TMethod extends ChatifySignalRMethod>(
144
- method: TMethod,
145
- subscriber: (args: ChatifySignalRArgsByMethod[TMethod]) => void,
146
- ) => {
147
- this.connect().then(() => {
148
- this._subscribers[method] = this._subscribers[method] ?? [];
149
- this._subscribers[method].push(subscriber as any);
150
- });
151
- return () => this._subscribers[method].filter((x) => x !== subscriber);
152
- };
153
-
154
- public subscribeReconnect = (subscriber: () => any) => {
155
- this._reconnectSubscribers.push(subscriber);
156
- return () => this._reconnectSubscribers.filter((x) => x !== subscriber);
157
- };
158
-
159
- private get axios() {
160
- return this._config.axios;
161
- }
162
-
163
- public accounts = async () => {
164
- const { data } = await this.axios.get<Account[]>('account');
165
- return data;
166
- };
167
-
168
- public chats = async () => {
169
- const { data } = await this.axios.get<ChatListItem[]>('chat');
170
- return data;
171
- };
172
-
173
- public chat = async (id: string) => {
174
- const { data } = await this.axios.get<Chat>(`chat/${encodeURIComponent(id)}`);
175
- return data;
176
- };
177
-
178
- public addChat = async (args: AddChatRequest) => {
179
- const { data } = await this.axios.post<string>(`chat`, args);
180
- return data;
181
- };
182
-
183
- public chatMessages = async (args: { chatId: string; skip?: number; take?: number }) => {
184
- const { chatId, skip = 0, take = 20 } = args;
185
- const pagingRule = encodeURIComponent(JSON.stringify({ skip, take }));
186
- const { data } = await this.axios.get<ChatMessage[]>(
187
- `chat/${encodeURIComponent(chatId)}/message?pagingRule=${pagingRule}`,
188
- );
189
- return data;
190
- };
191
-
192
- public sendChatMessage = async (request: SendChatMessageRequest) => {
193
- const { chatId, ...rest } = request;
194
- await this.axios.post(`chat/${encodeURIComponent(chatId)}/message`, rest);
195
- };
196
-
197
- public readChatMessage = async (request: ReadChatMessageRequest) => {
198
- await this.axios.put(`chat/message/read`, request);
199
- };
200
-
201
- public removeChatMember = async (request: RemoveChatMemberRequest) => {
202
- await this.axios.delete(`chat/${encodeURIComponent(request.chatId)}/member`, { data: request });
203
- };
204
-
205
- public updateChatName = async (request: UpdateChatNameRequest) => {
206
- await this.axios.put(`chat/${encodeURIComponent(request.id)}/name`, request);
207
- };
208
-
209
- public addChatMember = async (request: AddChatMemberRequest) => {
210
- await this.axios.post(`chat/${encodeURIComponent(request.chatId)}/member`, request);
211
- };
212
-
213
- public sendThreadMessage = async ({ body, threadId }: SendThreadMessageRequest) => {
214
- const { data: id } = await this.axios.post<string>(`thread/${encodeURIComponent(threadId)}/message`, {
215
- body,
216
- });
217
- return id;
218
- };
219
-
220
- public readThreadMessage = async (id: string) => {
221
- await this.axios.put(`thread/message/${encodeURIComponent(id)}/read`);
222
- };
223
-
224
- public watchThreads = async () => {
225
- const { data } = await this.axios.get<ThreadListItem[]>(`thread/watch`);
226
- return data;
227
- };
228
-
229
- public thread = async (id: string) => {
230
- const { data } = await this.axios.get<Thread>(`thread/${encodeURIComponent(id)}`);
231
- return data;
232
- };
233
-
234
- public threadMessages = async ({
235
- threadId,
236
- skip,
237
- take,
238
- }: {
239
- threadId: string;
240
- skip: number;
241
- take: number;
242
- }) => {
243
- const searchParams = new URLSearchParams();
244
- searchParams.append('skip', skip.toString());
245
- searchParams.append('take', take.toString());
246
- const { data } = await this.axios.get<ThreadMessage[]>(
247
- `thread/${encodeURIComponent(threadId)}/message?${searchParams.toString()}`,
248
- );
249
- return data;
250
- };
251
-
252
- public watchThread = async (id: string, watch: boolean) => {
253
- await this.axios.put(`thread/${encodeURIComponent(id)}/watch`, { watch });
254
- };
255
-
256
- public connectToThread = async (id: string) => {
257
- this.connect().then(() => this._connection.invoke('ConnectToThread', id));
258
- };
259
-
260
- public disconnectFromThread = async (id: string) => {
261
- this.connect().then(() => this._connection.invoke('DisconnectFromThread', id));
262
- };
263
- }
264
-
265
- export function unsubscribe(...subscribers: Array<() => void>) {
266
- const result = () => subscribers.forEach((x) => x());
267
- result.when = (promise: Promise<any>) => promise.then(result);
268
- return result;
269
- }
1
+ import { AxiosInstance } from 'axios';
2
+ import * as SignalR from '@microsoft/signalr';
3
+ import {
4
+ Account,
5
+ AddChatRequest,
6
+ AddChatMemberRequest,
7
+ Chat,
8
+ ChatListItem,
9
+ ChatMessage,
10
+ ReadChatMessageEvent,
11
+ ReadChatMessageRequest,
12
+ RemoveChatMemberRequest,
13
+ SendChatMessageRequest,
14
+ UpdateChatNameRequest,
15
+ SendThreadMessageRequest,
16
+ Thread,
17
+ ThreadMessage,
18
+ ThreadWatchListItem as ThreadListItem,
19
+ UpdateAccountRequest,
20
+ } from './types';
21
+
22
+ export interface ChatifySignalRConfig {
23
+ hubUri?: string;
24
+ accessTokenFactory?: () => Promise<string>;
25
+ headersFactory?: () => Promise<Record<string, string>>;
26
+ }
27
+
28
+ const DEFAULT_SIGNALR_CONFIG: ChatifySignalRConfig = {
29
+ hubUri: '/api/chatify/hub',
30
+ headersFactory: () => Promise.resolve({}),
31
+ };
32
+
33
+ export interface ChatifyClientConfig {
34
+ axios: AxiosInstance;
35
+ signalR: ChatifySignalRConfig;
36
+ }
37
+
38
+ export const CHATIFY_SIGNALR_METHODS = [
39
+ 'chatify://chat-new-message',
40
+ 'chatify://chat-created',
41
+ 'chatify://chat-message-read',
42
+ 'chatify://chat-member-added',
43
+ 'chatify://chat-member-removed',
44
+ 'chatify://chat-name-changed',
45
+
46
+ 'chatify://thread-created',
47
+ 'chatify://thread-message-new',
48
+ 'chatify://thread-message-read',
49
+ 'chatify://thread-watch-added',
50
+ 'chatify://thread-watch-removed',
51
+ 'chatify://thread-updated',
52
+ ] as const;
53
+
54
+ export type ChatifySignalRMethod = (typeof CHATIFY_SIGNALR_METHODS)[number];
55
+
56
+ export type ChatifySignalRArgsByMethod = {
57
+ 'chatify://chat-new-message': [message: ChatMessage];
58
+ 'chatify://chat-created': [chat: ChatListItem];
59
+ 'chatify://chat-message-read': [events: ReadChatMessageEvent[]];
60
+ 'chatify://chat-member-added': [
61
+ chatId: string,
62
+ chatName: string,
63
+ account: Account,
64
+ message: ChatMessage,
65
+ withHistory: boolean,
66
+ read: boolean,
67
+ ];
68
+ 'chatify://chat-member-removed': [
69
+ chatId: string,
70
+ accountId: string,
71
+ deleteHistory: boolean,
72
+ message: ChatMessage,
73
+ read: boolean,
74
+ ];
75
+ 'chatify://chat-name-changed': [chatId: string, newName: string, message: ChatMessage, read: boolean];
76
+
77
+ 'chatify://thread-message-new': [threadId: string, message: ThreadMessage, readForId: string | null];
78
+ 'chatify://thread-message-read': [threadId: string, messageId: string];
79
+ 'chatify://thread-watch-added': [thread: ThreadListItem];
80
+ 'chatify://thread-watch-removed': [id: string];
81
+ 'chatify://thread-created': [thread: ThreadListItem, watch: boolean];
82
+ 'chatify://thread-updated': [threadId: string, threadName: string];
83
+ };
84
+
85
+ export class ChatifyClient {
86
+ private _config: ChatifyClientConfig;
87
+ private _connection: SignalR.HubConnection = null!;
88
+ private _connectionPromise: Promise<SignalR.HubConnection> | null = null!;
89
+ private _subscribers: Record<string, ((args: any[]) => void)[]> = {};
90
+ private _reconnectSubscribers: Array<() => void> = [];
91
+ private _threadConnectionByThreadId = new Map<string, number>();
92
+
93
+ constructor(config: ChatifyClientConfig) {
94
+ this._config = {
95
+ ...config,
96
+ signalR: {
97
+ ...DEFAULT_SIGNALR_CONFIG,
98
+ ...config.signalR,
99
+ },
100
+ };
101
+ }
102
+
103
+ public connect = async () => {
104
+ if (this._connection) {
105
+ return;
106
+ }
107
+
108
+ if (this._connectionPromise) {
109
+ return await this._connectionPromise;
110
+ }
111
+
112
+ this._connectionPromise = this.createAndStartConnection();
113
+ this._connection = await this._connectionPromise;
114
+ };
115
+
116
+ private createAndStartConnection = async () => {
117
+ const headers = await this._config.signalR!.headersFactory!();
118
+
119
+ const connection = new SignalR.HubConnectionBuilder()
120
+ .withUrl(this._config.signalR!.hubUri!, {
121
+ accessTokenFactory: this._config.signalR!.accessTokenFactory
122
+ ? this._config.signalR!.accessTokenFactory
123
+ : undefined,
124
+ headers,
125
+ })
126
+ .withAutomaticReconnect()
127
+ .build();
128
+
129
+ CHATIFY_SIGNALR_METHODS.forEach((x) => {
130
+ connection.on(x, (...args) => {
131
+ this._subscribers[x]?.forEach((s) => {
132
+ try {
133
+ s(args);
134
+ } catch (ex) {
135
+ console.error(`Failed to notify subscriber`, ex);
136
+ }
137
+ });
138
+ });
139
+ });
140
+
141
+ connection.onreconnected(() => this._reconnectSubscribers.forEach((subscriber) => subscriber()));
142
+
143
+ await connection.start();
144
+ return connection;
145
+ };
146
+
147
+ public subscribe = <TMethod extends ChatifySignalRMethod>(
148
+ method: TMethod,
149
+ subscriber: (args: ChatifySignalRArgsByMethod[TMethod]) => void,
150
+ ) => {
151
+ this.connect().then(() => {
152
+ this._subscribers[method] = this._subscribers[method] ?? [];
153
+ this._subscribers[method].push(subscriber as any);
154
+ });
155
+ return () => this._subscribers[method].filter((x) => x !== subscriber);
156
+ };
157
+
158
+ public subscribeReconnect = (subscriber: () => any) => {
159
+ this._reconnectSubscribers.push(subscriber);
160
+ return () => this._reconnectSubscribers.filter((x) => x !== subscriber);
161
+ };
162
+
163
+ public get axios() {
164
+ return this._config.axios;
165
+ }
166
+
167
+ public accounts = async () => {
168
+ const { data } = await this.axios.get<Account[]>('account');
169
+ return data;
170
+ };
171
+
172
+ public updateAccount = async (request: UpdateAccountRequest) => {
173
+ await this.axios.put(`account/${encodeURIComponent(request.id)}`, request);
174
+ };
175
+
176
+ public chats = async () => {
177
+ const { data } = await this.axios.get<ChatListItem[]>('chat');
178
+ return data;
179
+ };
180
+
181
+ public chat = async (id: string) => {
182
+ const { data } = await this.axios.get<Chat>(`chat/${encodeURIComponent(id)}`);
183
+ return data;
184
+ };
185
+
186
+ public addChat = async (args: AddChatRequest) => {
187
+ const { data } = await this.axios.post<string>(`chat`, args);
188
+ return data;
189
+ };
190
+
191
+ public chatMessages = async (args: { chatId: string; skip?: number; take?: number }) => {
192
+ const { chatId, skip = 0, take = 20 } = args;
193
+ const pagingRule = encodeURIComponent(JSON.stringify({ skip, take }));
194
+ const { data } = await this.axios.get<ChatMessage[]>(
195
+ `chat/${encodeURIComponent(chatId)}/message?pagingRule=${pagingRule}`,
196
+ );
197
+ return data;
198
+ };
199
+
200
+ public sendChatMessage = async (request: SendChatMessageRequest) => {
201
+ const { chatId, ...rest } = request;
202
+ await this.axios.post(`chat/${encodeURIComponent(chatId)}/message`, rest);
203
+ };
204
+
205
+ public readChatMessage = async (request: ReadChatMessageRequest) => {
206
+ await this.axios.put(`chat/message/read`, request);
207
+ };
208
+
209
+ public removeChatMember = async (request: RemoveChatMemberRequest) => {
210
+ await this.axios.delete(`chat/${encodeURIComponent(request.chatId)}/member`, { data: request });
211
+ };
212
+
213
+ public updateChatName = async (request: UpdateChatNameRequest) => {
214
+ await this.axios.put(`chat/${encodeURIComponent(request.id)}/name`, request);
215
+ };
216
+
217
+ public addChatMember = async (request: AddChatMemberRequest) => {
218
+ await this.axios.post(`chat/${encodeURIComponent(request.chatId)}/member`, request);
219
+ };
220
+
221
+ public sendThreadMessage = async ({ body, threadId }: SendThreadMessageRequest) => {
222
+ const { data: id } = await this.axios.post<string>(`thread/${encodeURIComponent(threadId)}/message`, {
223
+ body,
224
+ });
225
+ return id;
226
+ };
227
+
228
+ public readThreadMessage = async (id: string) => {
229
+ await this.axios.put(`thread/message/${encodeURIComponent(id)}/read`);
230
+ };
231
+
232
+ public watchThreads = async () => {
233
+ const { data } = await this.axios.get<ThreadListItem[]>(`thread/watch`);
234
+ return data;
235
+ };
236
+
237
+ public thread = async (id: string) => {
238
+ const { data } = await this.axios.get<Thread>(`thread/${encodeURIComponent(id)}`);
239
+ return data;
240
+ };
241
+
242
+ public threadMessages = async ({
243
+ threadId,
244
+ skip,
245
+ take,
246
+ }: {
247
+ threadId: string;
248
+ skip: number;
249
+ take: number;
250
+ }) => {
251
+ const searchParams = new URLSearchParams();
252
+ searchParams.append('skip', skip.toString());
253
+ searchParams.append('take', take.toString());
254
+ const { data } = await this.axios.get<ThreadMessage[]>(
255
+ `thread/${encodeURIComponent(threadId)}/message?${searchParams.toString()}`,
256
+ );
257
+ return data;
258
+ };
259
+
260
+ public watchThread = async (id: string, watch: boolean) => {
261
+ await this.axios.put(`thread/${encodeURIComponent(id)}/watch`, { watch });
262
+ };
263
+
264
+ public connectToThread = async (id: string) => {
265
+ const connectionCount = this._threadConnectionByThreadId.get(id) ?? 0;
266
+ this._threadConnectionByThreadId.set(id, connectionCount + 1);
267
+
268
+ if (connectionCount === 0) {
269
+ this.connect().then(() => this._connection.invoke('ConnectToThread', id));
270
+ }
271
+ };
272
+
273
+ public disconnectFromThread = async (id: string) => {
274
+ const connectionCount = this._threadConnectionByThreadId.get(id) ?? 0;
275
+ this._threadConnectionByThreadId.set(id, Math.max(0, connectionCount - 1));
276
+
277
+ if (connectionCount === 1) {
278
+ this.connect().then(() => this._connection.invoke('DisconnectFromThread', id));
279
+ }
280
+ };
281
+ }
282
+
283
+ export function unsubscribe(...subscribers: Array<() => void>) {
284
+ const result = () => subscribers.forEach((x) => x());
285
+ result.when = (promise: Promise<any>) => promise.then(result);
286
+ return result;
287
+ }
@@ -1 +1 @@
1
- export const SYSTEM_ID = 'chatify::system';
1
+ export const SYSTEM_ID = 'chatify::system';