@webinex/chatify 1.0.0-rc2 → 1.0.0-rc3

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 (267) hide show
  1. package/dist/css/chatify.css +183 -141
  2. package/dist/esm/index.js +1 -1
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/types/core/action.d.ts +110 -42
  5. package/dist/esm/types/core/client.d.ts +2 -1
  6. package/dist/esm/types/core/index.d.ts +11 -8
  7. package/dist/esm/types/core/models.d.ts +10 -4
  8. package/dist/esm/types/core/state.d.ts +36 -7
  9. package/dist/esm/types/core/useAddChatMutation.d.ts +2 -0
  10. package/dist/esm/types/core/useAddMemberMutation.d.ts +2 -0
  11. package/dist/esm/types/core/useFetchNextMutation.d.ts +3 -0
  12. package/dist/esm/types/core/useGetAccountsQuery.d.ts +1 -0
  13. package/dist/esm/types/core/useGetChatListQuery.d.ts +1 -0
  14. package/dist/{cjs/types/core/useChat.d.ts → esm/types/core/useGetChatQuery.d.ts} +1 -1
  15. package/dist/esm/types/core/useGetMessagesQuery.d.ts +4 -0
  16. package/dist/esm/types/core/useRemoveMemberMutation.d.ts +2 -0
  17. package/dist/esm/types/core/useSendMutation.d.ts +2 -0
  18. package/dist/esm/types/core/useUpdateChatNameMutation.d.ts +2 -0
  19. package/dist/esm/types/ui/AddChatButton.d.ts +2 -2
  20. package/dist/esm/types/ui/Avatar.d.ts +2 -2
  21. package/dist/esm/types/ui/ChatList/ChatList.d.ts +2 -0
  22. package/dist/esm/types/ui/ChatList/ChatListItemBox.d.ts +6 -0
  23. package/dist/esm/types/ui/ChatList/ChatListItemLastMessage.d.ts +3 -0
  24. package/dist/esm/types/ui/ChatList/ChatListItemLastMessageAuthor.d.ts +3 -0
  25. package/dist/esm/types/ui/ChatList/ChatListItemLastMessageContent.d.ts +3 -0
  26. package/dist/esm/types/ui/ChatList/ChatListItemName.d.ts +3 -0
  27. package/dist/esm/types/ui/ChatList/ChatListItemUnreadCount.d.ts +3 -0
  28. package/dist/esm/types/ui/ChatList/index.d.ts +7 -0
  29. package/dist/esm/types/ui/ChatName.d.ts +2 -2
  30. package/dist/esm/types/ui/ChatPanel/ChatBody.d.ts +5 -0
  31. package/dist/esm/types/ui/ChatPanel/ChatHeader.d.ts +5 -0
  32. package/dist/esm/types/ui/ChatPanel/ChatHeaderMembers.d.ts +5 -0
  33. package/dist/esm/types/ui/ChatPanel/ChatHeaderName.d.ts +5 -0
  34. package/dist/esm/types/ui/ChatPanel/ChatMembersButton.d.ts +5 -0
  35. package/dist/esm/types/ui/ChatPanel/ChatMembersPanel.d.ts +5 -0
  36. package/dist/esm/types/ui/ChatPanel/ChatPanel.d.ts +5 -0
  37. package/dist/esm/types/ui/ChatPanel/index.d.ts +6 -0
  38. package/dist/esm/types/ui/Chatify.d.ts +45 -23
  39. package/dist/esm/types/ui/CreateChatPanel/CreateChatForm.d.ts +11 -0
  40. package/dist/esm/types/ui/CreateChatPanel/CreateChatMemberInput.d.ts +5 -0
  41. package/dist/esm/types/ui/CreateChatPanel/CreateChatNameInput.d.ts +5 -0
  42. package/dist/esm/types/ui/CreateChatPanel/CreateChatPanel.d.ts +2 -0
  43. package/dist/esm/types/ui/CreateChatPanel/index.d.ts +4 -0
  44. package/dist/esm/types/ui/Icon.d.ts +13 -4
  45. package/dist/esm/types/ui/InputBox/InputBox.d.ts +2 -0
  46. package/dist/esm/types/ui/InputBox/InputFilesBox.d.ts +2 -0
  47. package/dist/esm/types/ui/InputBox/InputSubmitButtonBox.d.ts +5 -0
  48. package/dist/esm/types/ui/InputBox/InputTextBox.d.ts +7 -0
  49. package/dist/esm/types/ui/InputBox/index.d.ts +4 -0
  50. package/dist/esm/types/ui/Layout/Aside.d.ts +2 -0
  51. package/dist/esm/types/ui/Layout/Body.d.ts +2 -0
  52. package/dist/esm/types/ui/Layout/Footer.d.ts +2 -0
  53. package/dist/esm/types/ui/Layout/Header.d.ts +2 -0
  54. package/dist/esm/types/ui/Layout/Main.d.ts +2 -0
  55. package/dist/esm/types/ui/Layout/index.d.ts +5 -0
  56. package/dist/esm/types/ui/Message/MessageAuthor.d.ts +3 -0
  57. package/dist/esm/types/ui/Message/MessageBox.d.ts +6 -0
  58. package/dist/esm/types/ui/Message/MessageContent.d.ts +3 -0
  59. package/dist/esm/types/ui/Message/MessageInfoBox.d.ts +3 -0
  60. package/dist/esm/types/ui/Message/MessageRow.d.ts +6 -0
  61. package/dist/esm/types/ui/Message/MessageText.d.ts +3 -0
  62. package/dist/esm/types/ui/Message/index.d.ts +6 -0
  63. package/dist/esm/types/ui/MessageReadObserver.d.ts +6 -0
  64. package/dist/esm/types/ui/Next.d.ts +4 -0
  65. package/dist/esm/types/ui/SendingMessage/SendingMessageBox.d.ts +7 -0
  66. package/dist/esm/types/ui/SendingMessage/SendingMessageContent.d.ts +3 -0
  67. package/dist/esm/types/ui/SendingMessage/SendingMessageInfoBox.d.ts +3 -0
  68. package/dist/esm/types/ui/SendingMessage/SendingMessageText.d.ts +3 -0
  69. package/dist/esm/types/ui/SendingMessage/index.d.ts +4 -0
  70. package/dist/esm/types/ui/SystemMessage/SystemMessageBox.d.ts +6 -0
  71. package/dist/esm/types/ui/SystemMessage/SystemMessageRow.d.ts +9 -0
  72. package/dist/esm/types/ui/SystemMessage/index.d.ts +2 -0
  73. package/dist/esm/types/{util → ui}/customize.d.ts +2 -3
  74. package/dist/esm/types/ui/index.d.ts +6 -6
  75. package/dist/esm/types/ui/localizer.d.ts +5 -0
  76. package/dist/esm/types/util/index.d.ts +0 -1
  77. package/dist/index.d.ts +353 -142
  78. package/package.json +3 -1
  79. package/src/core/action.tsx +319 -233
  80. package/src/core/client.ts +6 -0
  81. package/src/core/index.ts +11 -8
  82. package/src/core/models.tsx +11 -4
  83. package/src/core/reducer.tsx +2 -1
  84. package/src/core/state.ts +68 -14
  85. package/src/core/useAddChatMutation.tsx +22 -0
  86. package/src/core/useAddMemberMutation.tsx +25 -0
  87. package/src/core/useFetchNextMutation.tsx +28 -0
  88. package/src/core/useGetAccountsQuery.tsx +33 -0
  89. package/src/core/useGetChatListQuery.tsx +33 -0
  90. package/src/core/useGetChatQuery.tsx +34 -0
  91. package/src/core/useGetMessagesQuery.tsx +35 -0
  92. package/src/core/useReadMonitor.tsx +8 -7
  93. package/src/core/useRemoveMemberMutation.tsx +23 -0
  94. package/src/core/useSendMutation.tsx +24 -0
  95. package/src/core/useSignalRMonitor.tsx +19 -5
  96. package/src/core/useUpdateChatNameMutation.tsx +23 -0
  97. package/src/{ui/styles → styles}/aside.scss +1 -1
  98. package/src/styles/chat.scss +222 -0
  99. package/src/styles/index.scss +79 -0
  100. package/src/styles/settings.scss +5 -0
  101. package/src/ui/AddChatButton.tsx +4 -8
  102. package/src/ui/Avatar.tsx +1 -1
  103. package/src/ui/ChatList/ChatList.tsx +42 -0
  104. package/src/ui/ChatList/ChatListItemBox.tsx +22 -0
  105. package/src/ui/ChatList/ChatListItemLastMessage.tsx +13 -0
  106. package/src/ui/ChatList/ChatListItemLastMessageAuthor.tsx +20 -0
  107. package/src/ui/ChatList/ChatListItemLastMessageContent.tsx +21 -0
  108. package/src/ui/ChatList/ChatListItemName.tsx +13 -0
  109. package/src/ui/ChatList/ChatListItemUnreadCount.tsx +12 -0
  110. package/src/ui/ChatList/index.ts +7 -0
  111. package/src/ui/ChatName.tsx +3 -8
  112. package/src/ui/ChatPanel/ChatBody.tsx +44 -0
  113. package/src/ui/ChatPanel/ChatHeader.tsx +33 -0
  114. package/src/ui/{ChatHeaderMembers.tsx → ChatPanel/ChatHeaderMembers.tsx} +5 -9
  115. package/src/ui/ChatPanel/ChatHeaderName.tsx +67 -0
  116. package/src/ui/ChatPanel/ChatMembersButton.tsx +21 -0
  117. package/src/ui/ChatPanel/ChatMembersPanel.tsx +117 -0
  118. package/src/ui/ChatPanel/ChatPanel.tsx +27 -0
  119. package/src/ui/ChatPanel/index.ts +6 -0
  120. package/src/ui/Chatify.tsx +78 -36
  121. package/src/ui/CreateChatPanel/CreateChatForm.tsx +36 -0
  122. package/src/ui/CreateChatPanel/CreateChatMemberInput.tsx +66 -0
  123. package/src/ui/CreateChatPanel/CreateChatNameInput.tsx +25 -0
  124. package/src/ui/CreateChatPanel/CreateChatPanel.tsx +33 -0
  125. package/src/ui/CreateChatPanel/index.ts +4 -0
  126. package/src/ui/Icon.tsx +18 -6
  127. package/src/ui/InputBox/InputBox.tsx +38 -0
  128. package/src/ui/InputBox/InputFilesBox.tsx +9 -0
  129. package/src/ui/InputBox/InputSubmitButtonBox.tsx +17 -0
  130. package/src/ui/InputBox/InputTextBox.tsx +50 -0
  131. package/src/ui/InputBox/index.ts +4 -0
  132. package/src/ui/Layout/Aside.tsx +10 -0
  133. package/src/ui/Layout/Body.tsx +10 -0
  134. package/src/ui/Layout/Footer.tsx +3 -0
  135. package/src/ui/Layout/Header.tsx +10 -0
  136. package/src/ui/Layout/Main.tsx +15 -0
  137. package/src/ui/Layout/index.ts +5 -0
  138. package/src/ui/Message/MessageAuthor.tsx +13 -0
  139. package/src/ui/Message/MessageBox.tsx +20 -0
  140. package/src/ui/Message/MessageContent.tsx +13 -0
  141. package/src/ui/Message/MessageInfoBox.tsx +25 -0
  142. package/src/ui/Message/MessageRow.tsx +24 -0
  143. package/src/ui/Message/MessageText.tsx +7 -0
  144. package/src/ui/Message/index.ts +6 -0
  145. package/src/ui/MessageReadObserver.tsx +45 -0
  146. package/src/ui/{LoadMore.tsx → Next.tsx} +16 -8
  147. package/src/ui/SendingMessage/SendingMessageBox.tsx +16 -0
  148. package/src/ui/SendingMessage/SendingMessageContent.tsx +13 -0
  149. package/src/ui/SendingMessage/SendingMessageInfoBox.tsx +13 -0
  150. package/src/ui/SendingMessage/SendingMessageText.tsx +7 -0
  151. package/src/ui/SendingMessage/index.ts +4 -0
  152. package/src/ui/SystemMessage/SystemMessageBox.tsx +20 -0
  153. package/src/ui/SystemMessage/SystemMessageRow.tsx +43 -0
  154. package/src/ui/SystemMessage/index.ts +2 -0
  155. package/src/{util → ui}/customize.tsx +5 -5
  156. package/src/ui/index.ts +6 -6
  157. package/src/ui/localizer.tsx +12 -0
  158. package/src/util/index.ts +0 -1
  159. package/dist/cjs/index.js +0 -2
  160. package/dist/cjs/index.js.map +0 -1
  161. package/dist/cjs/types/ChatifyContext.d.ts +0 -11
  162. package/dist/cjs/types/core/action.d.ts +0 -76
  163. package/dist/cjs/types/core/client.d.ts +0 -35
  164. package/dist/cjs/types/core/index.d.ts +0 -14
  165. package/dist/cjs/types/core/models.d.ts +0 -64
  166. package/dist/cjs/types/core/reducer.d.ts +0 -11
  167. package/dist/cjs/types/core/state.d.ts +0 -25
  168. package/dist/cjs/types/core/useAccounts.d.ts +0 -1
  169. package/dist/cjs/types/core/useAddChat.d.ts +0 -2
  170. package/dist/cjs/types/core/useAddMember.d.ts +0 -2
  171. package/dist/cjs/types/core/useAddMessage.d.ts +0 -5
  172. package/dist/cjs/types/core/useChatList.d.ts +0 -1
  173. package/dist/cjs/types/core/useLoadMore.d.ts +0 -3
  174. package/dist/cjs/types/core/useMessages.d.ts +0 -15
  175. package/dist/cjs/types/core/useMutation.d.ts +0 -12
  176. package/dist/cjs/types/core/useQuery.d.ts +0 -7
  177. package/dist/cjs/types/core/useReadMonitor.d.ts +0 -1
  178. package/dist/cjs/types/core/useRemoveMember.d.ts +0 -2
  179. package/dist/cjs/types/core/useSignalRMonitor.d.ts +0 -2
  180. package/dist/cjs/types/index.d.ts +0 -3
  181. package/dist/cjs/types/ui/AddChat.d.ts +0 -1
  182. package/dist/cjs/types/ui/AddChatButton.d.ts +0 -2
  183. package/dist/cjs/types/ui/Aside.d.ts +0 -1
  184. package/dist/cjs/types/ui/Avatar.d.ts +0 -6
  185. package/dist/cjs/types/ui/Chat.d.ts +0 -4
  186. package/dist/cjs/types/ui/ChatBody.d.ts +0 -4
  187. package/dist/cjs/types/ui/ChatHeader.d.ts +0 -4
  188. package/dist/cjs/types/ui/ChatHeaderMembers.d.ts +0 -5
  189. package/dist/cjs/types/ui/ChatHeaderSettingsButton.d.ts +0 -5
  190. package/dist/cjs/types/ui/ChatListItem.d.ts +0 -11
  191. package/dist/cjs/types/ui/ChatName.d.ts +0 -5
  192. package/dist/cjs/types/ui/ChatSettings.d.ts +0 -1
  193. package/dist/cjs/types/ui/Chatify.d.ts +0 -49
  194. package/dist/cjs/types/ui/Footer.d.ts +0 -2
  195. package/dist/cjs/types/ui/Header.d.ts +0 -2
  196. package/dist/cjs/types/ui/Icon.d.ts +0 -7
  197. package/dist/cjs/types/ui/InputForm.d.ts +0 -1
  198. package/dist/cjs/types/ui/LoadMore.d.ts +0 -4
  199. package/dist/cjs/types/ui/Main.d.ts +0 -1
  200. package/dist/cjs/types/ui/Message.d.ts +0 -18
  201. package/dist/cjs/types/ui/MessageSkeleton.d.ts +0 -4
  202. package/dist/cjs/types/ui/SendingMessage.d.ts +0 -10
  203. package/dist/cjs/types/ui/SystemMessage.d.ts +0 -8
  204. package/dist/cjs/types/ui/index.d.ts +0 -11
  205. package/dist/cjs/types/ui/localizer.d.ts +0 -32
  206. package/dist/cjs/types/util/customize.d.ts +0 -12
  207. package/dist/cjs/types/util/index.d.ts +0 -3
  208. package/dist/cjs/types/util/uniqBy.d.ts +0 -1
  209. package/dist/cjs/types/util/uniqId.d.ts +0 -1
  210. package/dist/esm/types/core/useAccounts.d.ts +0 -1
  211. package/dist/esm/types/core/useAddChat.d.ts +0 -2
  212. package/dist/esm/types/core/useAddMember.d.ts +0 -2
  213. package/dist/esm/types/core/useAddMessage.d.ts +0 -5
  214. package/dist/esm/types/core/useChat.d.ts +0 -3
  215. package/dist/esm/types/core/useChatList.d.ts +0 -1
  216. package/dist/esm/types/core/useLoadMore.d.ts +0 -3
  217. package/dist/esm/types/core/useMessages.d.ts +0 -15
  218. package/dist/esm/types/core/useMutation.d.ts +0 -12
  219. package/dist/esm/types/core/useQuery.d.ts +0 -7
  220. package/dist/esm/types/core/useRemoveMember.d.ts +0 -2
  221. package/dist/esm/types/ui/AddChat.d.ts +0 -1
  222. package/dist/esm/types/ui/Aside.d.ts +0 -1
  223. package/dist/esm/types/ui/Chat.d.ts +0 -4
  224. package/dist/esm/types/ui/ChatBody.d.ts +0 -4
  225. package/dist/esm/types/ui/ChatHeader.d.ts +0 -4
  226. package/dist/esm/types/ui/ChatHeaderMembers.d.ts +0 -5
  227. package/dist/esm/types/ui/ChatHeaderSettingsButton.d.ts +0 -5
  228. package/dist/esm/types/ui/ChatListItem.d.ts +0 -11
  229. package/dist/esm/types/ui/ChatSettings.d.ts +0 -1
  230. package/dist/esm/types/ui/Footer.d.ts +0 -2
  231. package/dist/esm/types/ui/Header.d.ts +0 -2
  232. package/dist/esm/types/ui/InputForm.d.ts +0 -1
  233. package/dist/esm/types/ui/LoadMore.d.ts +0 -4
  234. package/dist/esm/types/ui/Main.d.ts +0 -1
  235. package/dist/esm/types/ui/Message.d.ts +0 -18
  236. package/dist/esm/types/ui/SendingMessage.d.ts +0 -10
  237. package/dist/esm/types/ui/SystemMessage.d.ts +0 -8
  238. package/src/core/useAccounts.tsx +0 -11
  239. package/src/core/useAddChat.tsx +0 -12
  240. package/src/core/useAddMember.tsx +0 -12
  241. package/src/core/useAddMessage.tsx +0 -40
  242. package/src/core/useChat.tsx +0 -12
  243. package/src/core/useChatList.tsx +0 -10
  244. package/src/core/useLoadMore.tsx +0 -42
  245. package/src/core/useMessages.tsx +0 -23
  246. package/src/core/useMutation.tsx +0 -48
  247. package/src/core/useQuery.tsx +0 -45
  248. package/src/core/useRemoveMember.tsx +0 -12
  249. package/src/ui/AddChat.tsx +0 -55
  250. package/src/ui/Aside.tsx +0 -41
  251. package/src/ui/Chat.tsx +0 -26
  252. package/src/ui/ChatBody.tsx +0 -43
  253. package/src/ui/ChatHeader.tsx +0 -33
  254. package/src/ui/ChatHeaderSettingsButton.tsx +0 -26
  255. package/src/ui/ChatListItem.tsx +0 -101
  256. package/src/ui/ChatSettings.tsx +0 -59
  257. package/src/ui/Footer.tsx +0 -7
  258. package/src/ui/Header.tsx +0 -14
  259. package/src/ui/InputForm.tsx +0 -51
  260. package/src/ui/Main.tsx +0 -16
  261. package/src/ui/Message.tsx +0 -118
  262. package/src/ui/SendingMessage.tsx +0 -50
  263. package/src/ui/SystemMessage.tsx +0 -32
  264. package/src/ui/styles/index.scss +0 -248
  265. /package/src/{ui/styles → styles}/keyframes.scss +0 -0
  266. /package/src/{ui/styles → styles}/mixins.scss +0 -0
  267. /package/src/{ui/styles → styles}/variables.scss +0 -0
@@ -1,72 +1,140 @@
1
1
  import type { State } from './state';
2
- import { Account, ChatListItem, Message, ReadEvent } from './models';
2
+ import { Account, Chat, ChatListItem, Message, ReadEvent, File } from './models';
3
3
  export declare const ACTIONS: {
4
- query_fetch: (state: State, { key }: {
5
- key: string;
6
- }) => State;
7
- query_resolve: (state: State, { key, data }: {
8
- key: string;
9
- data: any[];
10
- }) => State;
11
- query_reject: (state: State, { key, error }: {
12
- key: string;
13
- error: any;
14
- }) => State;
15
- mutation_fetch: (state: State, { key }: {
16
- key: string;
17
- }) => State;
18
- mutation_resolve: (state: State, { key }: {
19
- key: string;
20
- }) => State;
21
- mutation_reject: (state: State, { key, error }: {
22
- key: string;
23
- error: any;
24
- }) => State;
25
4
  update: (state: State, { mutation }: {
26
5
  mutation: (state: State) => State;
27
- }) => State;
28
- chat_open: (state: State, { chatId }: {
6
+ }) => void;
7
+ messages_fetch: (state: State, { chatId }: {
29
8
  chatId: string;
30
- }) => State;
31
- new_chat_open: (state: State) => State;
32
- chat_settings_open: (state: State, { chatId }: {
9
+ }) => void;
10
+ messages_fulfilled: (state: State, { chatId, messages, hasMore }: {
33
11
  chatId: string;
34
- }) => State;
35
- message_received: (state: State, { message, requestId }: {
12
+ messages: Message[];
13
+ hasMore: boolean;
14
+ }) => void;
15
+ messages_rejected: (state: State, { chatId, error }: {
16
+ chatId: string;
17
+ error: any;
18
+ }) => void;
19
+ fetchNext_fetch: (state: State, { chatId }: {
20
+ chatId: string;
21
+ }) => void;
22
+ fetchNext_fulfilled: (state: State, { chatId, messages, hasMore }: {
23
+ chatId: string;
24
+ messages: Message[];
25
+ hasMore: boolean;
26
+ }) => void;
27
+ fetchNext_rejected: (state: State, { chatId, error }: {
28
+ chatId: string;
29
+ error: any;
30
+ }) => void;
31
+ chatList_fetch: (state: State) => void;
32
+ chatList_fulfilled: (state: State, { chats }: {
33
+ chats: ChatListItem[];
34
+ }) => void;
35
+ chatList_rejected: (state: State, { error }: {
36
+ error: any;
37
+ }) => void;
38
+ removeMember_fetch: (state: State) => void;
39
+ removeMember_fulfilled: (state: State) => void;
40
+ removeMember_rejected: (state: State, { error }: {
41
+ error: any;
42
+ }) => void;
43
+ addMember_fetch: (state: State) => void;
44
+ addMember_fulfilled: (state: State) => void;
45
+ addMember_rejected: (state: State, { error }: {
46
+ error: any;
47
+ }) => void;
48
+ updateChatName_fetch: (state: State) => void;
49
+ updateChatName_fulfilled: (state: State) => void;
50
+ updateChatName_rejected: (state: State, { error }: {
51
+ error: any;
52
+ }) => void;
53
+ addChat_fetch: (state: State) => void;
54
+ addChat_fulfilled: (state: State) => void;
55
+ addChat_rejected: (state: State, { error }: {
56
+ error: any;
57
+ }) => void;
58
+ accounts_fetch: (state: State) => void;
59
+ accounts_fulfilled: (state: State, { accounts }: {
60
+ accounts: Account[];
61
+ }) => void;
62
+ accounts_rejected: (state: State, { error }: {
63
+ error: any;
64
+ }) => void;
65
+ chat_open: (state: State, { chatId }: {
66
+ chatId: string;
67
+ }) => void;
68
+ new_chat_open: (state: State) => void;
69
+ toggle_members_view: (state: State) => void;
70
+ message_received: (state: State, { message, requestId, me }: {
36
71
  message: Message;
37
72
  requestId: string;
38
- }) => State;
73
+ me: string;
74
+ }) => void;
39
75
  chat_created: (state: State, { chat }: {
40
76
  chat: ChatListItem;
41
77
  requestId?: string | undefined;
42
- }) => State;
78
+ }) => void;
43
79
  read: (state: State, { id, timestamp }: {
44
80
  id: string;
45
81
  timestamp: number;
46
- }) => State;
47
- read_send: (state: State, { ids }: {
48
- ids: string[];
49
- }) => State;
50
- read_reject: (state: State, { ids, timestamp }: {
51
- ids: string[];
82
+ }) => void;
83
+ read_send: (state: State, { id }: {
84
+ id: string;
85
+ }) => void;
86
+ read_reject: (state: State, { id, timestamp }: {
87
+ id: string;
52
88
  timestamp: number;
53
- }) => State;
89
+ }) => void;
54
90
  read_received: (state: State, { events }: {
55
91
  events: ReadEvent[];
56
- }) => State;
57
- member_added: (state: State, { chatId, chatName, account, me, message, }: {
92
+ }) => void;
93
+ member_added: (state: State, { chatId, chatName, account, me, message, withHistory, }: {
58
94
  chatId: string;
59
95
  chatName: string;
60
96
  account: Account;
61
97
  me: string;
62
98
  message: Message;
99
+ withHistory: boolean;
63
100
  }) => State;
64
- member_removed: (state: State, { chatId, accountId, deleteHistory, me, }: {
101
+ member_removed: (state: State, { chatId, accountId, deleteHistory, me, message, }: {
65
102
  chatId: string;
66
103
  accountId: string;
67
104
  deleteHistory: boolean;
68
105
  me: string;
69
- }) => State;
106
+ message: Message;
107
+ }) => void;
108
+ chat_fetch: (state: State, { chatId }: {
109
+ chatId: string;
110
+ }) => void;
111
+ chat_fulfilled: (state: State, { chat }: {
112
+ chat: Chat;
113
+ }) => void;
114
+ chat_rejected: (state: State, { chatId, error }: {
115
+ chatId: string;
116
+ error: any;
117
+ }) => void;
118
+ send_fetch: (state: State, { chatId, text, files, requestId, }: {
119
+ chatId: string;
120
+ text: string;
121
+ files: File[];
122
+ requestId: string;
123
+ }) => void;
124
+ send_fulfilled: (state: State, { chatId, requestId }: {
125
+ chatId: string;
126
+ requestId: string;
127
+ }) => void;
128
+ send_rejected: (state: State, { chatId, requestId, error }: {
129
+ chatId: string;
130
+ requestId: string;
131
+ error: any;
132
+ }) => void;
133
+ chatNameChanged_received: (state: State, { chatId, newName, message }: {
134
+ chatId: string;
135
+ newName: string;
136
+ message: Message;
137
+ }) => void;
70
138
  };
71
139
  export type Action = {
72
140
  [K in keyof typeof ACTIONS]: {
@@ -1,5 +1,5 @@
1
1
  import { AxiosInstance } from 'axios';
2
- import { Account, AddChatRequest, AddMemberRequest, Chat, ChatListItem, Message, ReadRequest, RemoveMemberRequest, SendMessageRequest } from './models';
2
+ import { Account, AddChatRequest, AddMemberRequest, Chat, ChatListItem, Message, ReadRequest, RemoveMemberRequest, SendMessageRequest, UpdateChatNameRequest } from './models';
3
3
  export interface ChatifySignalRConfig {
4
4
  hubUri?: string;
5
5
  accessTokenFactory?: () => Promise<string>;
@@ -31,5 +31,6 @@ export declare class ChatifyClient {
31
31
  send: (request: SendMessageRequest) => Promise<void>;
32
32
  read: (request: ReadRequest) => Promise<void>;
33
33
  removeMember: (request: RemoveMemberRequest) => Promise<void>;
34
+ updateChatName: (request: UpdateChatNameRequest) => Promise<void>;
34
35
  addMember: (request: AddMemberRequest) => Promise<void>;
35
36
  }
@@ -2,13 +2,16 @@ export * from './models';
2
2
  export * from './client';
3
3
  export * from './action';
4
4
  export * from './reducer';
5
- export * from './useChat';
6
- export * from './useChatList';
7
- export * from './useLoadMore';
8
- export * from './useMessages';
5
+ export * from './state';
6
+ export * from './useGetChatQuery';
7
+ export * from './useGetChatListQuery';
8
+ export * from './useFetchNextMutation';
9
+ export * from './useGetMessagesQuery';
9
10
  export * from './useSignalRMonitor';
10
- export * from './useAccounts';
11
- export * from './useAddChat';
11
+ export * from './useGetAccountsQuery';
12
+ export * from './useAddChatMutation';
12
13
  export * from './useReadMonitor';
13
- export * from './useAddMember';
14
- export * from './useRemoveMember';
14
+ export * from './useAddMemberMutation';
15
+ export * from './useRemoveMemberMutation';
16
+ export * from './useSendMutation';
17
+ export * from './useUpdateChatNameMutation';
@@ -15,7 +15,6 @@ export interface Message {
15
15
  files: File[];
16
16
  sentAt: string;
17
17
  sentBy: Account;
18
- read: boolean;
19
18
  requestId?: string;
20
19
  }
21
20
  export interface Chat {
@@ -27,7 +26,9 @@ export interface ChatListItem {
27
26
  id: string;
28
27
  name: string;
29
28
  message: Message;
30
- unreadCount: number;
29
+ totalUnreadCount: number;
30
+ active: boolean;
31
+ lastReadMessageId: string | null;
31
32
  }
32
33
  export interface SendMessageRequest {
33
34
  chatId: string;
@@ -46,11 +47,12 @@ export interface AddChatRequest {
46
47
  members: string[];
47
48
  }
48
49
  export interface ReadRequest {
49
- ids: string[];
50
+ id: string;
50
51
  }
51
52
  export interface ReadEvent {
52
- messageId: string;
53
53
  chatId: string;
54
+ newLastReadMessageId: string;
55
+ readCount: number;
54
56
  }
55
57
  export interface RemoveMemberRequest {
56
58
  chatId: string;
@@ -62,3 +64,7 @@ export interface AddMemberRequest {
62
64
  accountId: string;
63
65
  withHistory: boolean;
64
66
  }
67
+ export interface UpdateChatNameRequest {
68
+ id: string;
69
+ name: string;
70
+ }
@@ -1,5 +1,17 @@
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
+ };
1
12
  export interface UIState {
2
- view?: 'chat' | 'new-chat' | 'chat-settings';
13
+ view?: 'chat' | 'new-chat';
14
+ showMembers: boolean;
3
15
  chatId?: string;
4
16
  }
5
17
  export interface QueryState<TData> {
@@ -12,14 +24,31 @@ export interface MutationState {
12
24
  isFetching: boolean;
13
25
  error?: any;
14
26
  }
27
+ export interface QueueState<TValue> {
28
+ queued: TValue[];
29
+ processing: TValue[];
30
+ timestamp: number;
31
+ }
15
32
  export interface State {
16
33
  ui: UIState;
17
- query: Record<string, QueryState<any>>;
18
- mutation: Record<string, MutationState>;
19
- read: {
20
- queued: string[];
21
- sent: string[];
22
- timestamp: number;
34
+ query: {
35
+ messages: Record<string, QueryState<MessageState[]>>;
36
+ chats: Record<string, QueryState<Chat>>;
37
+ chatList: QueryState<ChatListItem[]>;
38
+ accounts: QueryState<Account[]>;
39
+ };
40
+ mutation: {
41
+ fetchNext: MutationState;
42
+ removeMember: MutationState;
43
+ addMember: MutationState;
44
+ updateChatName: MutationState;
45
+ addChat: MutationState;
46
+ send: MutationState;
47
+ };
48
+ queue: {
49
+ read: QueueState<string>;
50
+ send: QueueState<SendMessageRequest>;
23
51
  };
24
52
  }
53
+ export declare const INITIAL_QUERY_STATE: QueryState<any>;
25
54
  export declare const INITIAL_STATE: State;
@@ -0,0 +1,2 @@
1
+ import { AddChatRequest } from './models';
2
+ export declare function useAddChatMutation(): readonly [(args: AddChatRequest) => void, import("./state").MutationState];
@@ -0,0 +1,2 @@
1
+ import { AddMemberRequest } from './models';
2
+ export declare function useAddMemberMutation(): readonly [(args: AddMemberRequest) => void, import("./state").MutationState];
@@ -0,0 +1,3 @@
1
+ export declare function useFetchNextMutation({ chatId }: {
2
+ chatId: string;
3
+ }): readonly [() => void, import("./state").MutationState];
@@ -0,0 +1 @@
1
+ export declare function useGetAccountsQuery(): import("./state").QueryState<import("./models").Account[]>;
@@ -0,0 +1 @@
1
+ export declare function useGetChatListQuery(): import("./state").QueryState<import("./models").ChatListItem[]>;
@@ -1,3 +1,3 @@
1
- export declare function useChat(args: {
1
+ export declare function useGetChatQuery(args: {
2
2
  chatId: string;
3
3
  }): import("./state").QueryState<import("./models").Chat>;
@@ -0,0 +1,4 @@
1
+ import { MessageState, QueryState } from './state';
2
+ export declare function useGetMessagesQuery(args: {
3
+ chatId: string;
4
+ }): QueryState<MessageState[]>;
@@ -0,0 +1,2 @@
1
+ import { RemoveMemberRequest } from './models';
2
+ export declare function useRemoveMemberMutation(): readonly [(args: RemoveMemberRequest) => void, import("./state").MutationState];
@@ -0,0 +1,2 @@
1
+ import { SendMessageRequest } from './models';
2
+ export declare function useSendMutation(): readonly [(args: SendMessageRequest) => void, import("./state").MutationState];
@@ -0,0 +1,2 @@
1
+ import { UpdateChatNameRequest } from './models';
2
+ export declare function useUpdateChatNameMutation(): readonly [(args: UpdateChatNameRequest) => void, import("./state").MutationState];
@@ -1,2 +1,2 @@
1
- import { FC } from 'react';
2
- export declare const AddChatButton: import("../util").Customizable<FC, "AddChatButton">;
1
+ /// <reference types="react" />
2
+ export declare const AddChatButton: import("./customize").Customizable<import("react").ComponentType<unknown>>;
@@ -1,6 +1,6 @@
1
- import { FC } from 'react';
1
+ /// <reference types="react" />
2
2
  import { Account } from '../core';
3
3
  export interface AvatarProps {
4
4
  account: Account;
5
5
  }
6
- export declare const Avatar: import("../util").Customizable<FC<AvatarProps>, "Avatar">;
6
+ export declare const Avatar: import("./customize").Customizable<import("react").ComponentType<AvatarProps>>;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const ChatList: import("../customize").Customizable<import("react").ComponentType<unknown>>;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import { ChatListItem as ChatListItemModel } from '../../core';
3
+ export interface ChatListItemBoxProps {
4
+ chat: ChatListItemModel;
5
+ }
6
+ export declare const ChatListItemBox: import("../customize").Customizable<import("react").ComponentType<ChatListItemBoxProps>>;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
3
+ export declare const ChatListItemLastMessage: import("../customize").Customizable<import("react").ComponentType<ChatListItemBoxProps>>;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
3
+ export declare const ChatListItemLastMessageAuthor: import("../customize").Customizable<import("react").ComponentType<ChatListItemBoxProps>>;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
3
+ export declare const ChatListItemLastMessageContent: import("../customize").Customizable<import("react").ComponentType<ChatListItemBoxProps>>;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
3
+ export declare const ChatListItemName: import("../customize").Customizable<import("react").ComponentType<ChatListItemBoxProps>>;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { ChatListItemBoxProps } from './ChatListItemBox';
3
+ export declare const ChatListItemUnreadCount: import("../customize").Customizable<import("react").ComponentType<ChatListItemBoxProps>>;
@@ -0,0 +1,7 @@
1
+ export * from './ChatList';
2
+ export * from './ChatListItemBox';
3
+ export * from './ChatListItemLastMessage';
4
+ export * from './ChatListItemLastMessageAuthor';
5
+ export * from './ChatListItemLastMessageContent';
6
+ export * from './ChatListItemName';
7
+ export * from './ChatListItemUnreadCount';
@@ -1,5 +1,5 @@
1
- import { FC } from 'react';
1
+ /// <reference types="react" />
2
2
  export interface ChatNameProps {
3
3
  name: string;
4
4
  }
5
- export declare const ChatName: import("../util").Customizable<FC<ChatNameProps>, "ChatName">;
5
+ export declare const ChatName: import("./customize").Customizable<import("react").ComponentType<ChatNameProps>>;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export interface ChatBodyProps {
3
+ id: string;
4
+ }
5
+ export declare const ChatBody: import("../customize").Customizable<import("react").ComponentType<ChatBodyProps>>;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export interface ChatHeaderProps {
3
+ id: string;
4
+ }
5
+ export declare const ChatHeader: import("../customize").Customizable<import("react").ComponentType<ChatHeaderProps>>;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export interface ChatHeaderMembersProps {
3
+ id: string;
4
+ }
5
+ export declare const ChatHeaderMembers: import("../customize").Customizable<import("react").ComponentType<ChatHeaderMembersProps>>;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export interface ChatHeaderNameProps {
3
+ id: string;
4
+ }
5
+ export declare const ChatHeaderName: import("../customize").Customizable<import("react").ComponentType<ChatHeaderNameProps>>;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export interface ChatMembersButtonProps {
3
+ id: string;
4
+ }
5
+ export declare const ChatMembersButton: import("../customize").Customizable<import("react").ComponentType<ChatMembersButtonProps>>;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export interface ChatMembersPanelProps {
3
+ id: string;
4
+ }
5
+ export declare const ChatMembersPanel: import("../customize").Customizable<import("react").ComponentType<ChatMembersPanelProps>>;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export interface ChatPanelProps {
3
+ id: string;
4
+ }
5
+ export declare const ChatPanel: import("../customize").Customizable<import("react").ComponentType<ChatPanelProps>>;
@@ -0,0 +1,6 @@
1
+ export * from './ChatBody';
2
+ export * from './ChatHeader';
3
+ export * from './ChatHeaderMembers';
4
+ export * from './ChatHeaderName';
5
+ export * from './ChatPanel';
6
+ export * from './ChatMembersButton';
@@ -1,43 +1,65 @@
1
1
  import { CSSProperties, FC } from 'react';
2
2
  import { Localizer } from './localizer';
3
3
  import { Avatar } from './Avatar';
4
- import { ChatHeaderMembers } from './ChatHeaderMembers';
5
- import { ChatSettingsButton } from './ChatHeaderSettingsButton';
6
- import { Header } from './Header';
4
+ import { ChatHeaderMembers } from './ChatPanel/ChatHeaderMembers';
5
+ import { ChatMembersButton } from './ChatPanel/ChatMembersButton';
7
6
  import { AddChatButton } from './AddChatButton';
8
- import { Footer } from './Footer';
9
7
  import { ChatName } from './ChatName';
10
- import { ChatListItemBox, ChatListItemLastMessage, ChatListItemLastMessageAuthor, ChatListItemLastMessageContent, ChatListItemName, ChatListItemUnreadCount } from './ChatListItem';
11
- import { SendingMessage, SendingMessageContent, SendingMessageInfoBox, SendingMessageText } from './SendingMessage';
12
- import { MessageAuthor, MessageContent, MessageBox, MessageInfoBox, MessageReadObserver, MessageRow, MessageText } from './Message';
8
+ import { Aside, Main, Body, Footer, Header } from './Layout';
9
+ import { ChatListItemBox, ChatListItemLastMessageContent, ChatListItemLastMessageAuthor, ChatListItemLastMessage, ChatListItemUnreadCount, ChatListItemName } from './ChatList';
10
+ import { SendingMessageBox, SendingMessageContent, SendingMessageInfoBox, SendingMessageText } from './SendingMessage';
11
+ import { MessageBox, MessageRow, MessageContent, MessageText, MessageAuthor, MessageInfoBox } from './Message';
12
+ import { MessageReadObserver } from './MessageReadObserver';
13
13
  import { Icon } from './Icon';
14
- import { SystemMessage } from './SystemMessage';
14
+ import { SystemMessageRow } from './SystemMessage/SystemMessageRow';
15
+ import { ChatList } from './ChatList';
16
+ import { ChatBody, ChatHeader, ChatHeaderName, ChatPanel } from './ChatPanel';
17
+ import { InputBox, InputFilesBox, InputSubmitButtonBox, InputTextBox } from './InputBox';
18
+ import { SystemMessageBox } from './SystemMessage';
19
+ import { CreateChatForm, CreateChatMemberInput, CreateChatNameInput, CreateChatPanel } from './CreateChatPanel';
15
20
  export interface ChatifyCustomizeValue {
16
- Avatar?: typeof Avatar.Component | null;
17
- Header?: typeof Header.Component | null;
18
- Footer?: typeof Footer.Component | null;
19
- AddChatButton?: typeof AddChatButton.Component | null;
20
- ChatHeaderMembers?: typeof ChatHeaderMembers.Component | null;
21
- ChatSettingsButton?: typeof ChatSettingsButton.Component | null;
22
- ChatName?: typeof ChatName.Component | null;
21
+ ChatList?: typeof ChatList.Component | null;
23
22
  ChatListItemBox?: typeof ChatListItemBox.Component | null;
24
23
  ChatListItemName?: typeof ChatListItemName.Component | null;
25
24
  ChatListItemUnreadCount?: typeof ChatListItemUnreadCount.Component | null;
26
25
  ChatListItemLastMessage?: typeof ChatListItemLastMessage.Component | null;
27
26
  ChatListItemLastMessageAuthor?: typeof ChatListItemLastMessageAuthor.Component | null;
28
27
  ChatListItemLastMessageContent?: typeof ChatListItemLastMessageContent.Component | null;
29
- SystemMessage?: typeof SystemMessage.Component | null;
30
- SendingMessage?: typeof SendingMessage.Component | null;
31
- SendingMessageBody?: typeof SendingMessageContent.Component | null;
32
- SendingMessageInfoBox?: typeof SendingMessageInfoBox.Component | null;
33
- SendingMessageText?: typeof SendingMessageText.Component | null;
28
+ Header?: typeof Header.Component | null;
29
+ Footer?: typeof Footer.Component | null;
30
+ Body?: typeof Body.Component | null;
31
+ Main?: typeof Main.Component | null;
32
+ Aside?: typeof Aside.Component | null;
33
+ MessageAuthor?: typeof MessageAuthor.Component | null;
34
34
  MessageBox?: typeof MessageBox.Component | null;
35
- MessageReadObserver?: typeof MessageReadObserver.Component | null;
36
- MessageRow?: typeof MessageRow.Component | null;
37
35
  MessageContent?: typeof MessageContent.Component | null;
38
36
  MessageInfoBox?: typeof MessageInfoBox.Component | null;
37
+ MessageRow?: typeof MessageRow.Component | null;
39
38
  MessageText?: typeof MessageText.Component | null;
40
- MessageAuthor?: typeof MessageAuthor.Component | null;
39
+ SendingMessageBox?: typeof SendingMessageBox.Component | null;
40
+ SendingMessageContent?: typeof SendingMessageContent.Component | null;
41
+ SendingMessageInfoBox?: typeof SendingMessageInfoBox.Component | null;
42
+ SendingMessageText?: typeof SendingMessageText.Component | null;
43
+ ChatBody?: typeof ChatBody.Component | null;
44
+ ChatHeader?: typeof ChatHeader.Component | null;
45
+ ChatHeaderMembers?: typeof ChatHeaderMembers.Component | null;
46
+ ChatHeaderName?: typeof ChatHeaderName.Component | null;
47
+ ChatPanel?: typeof ChatPanel.Component | null;
48
+ ChatMembersButton?: typeof ChatMembersButton.Component | null;
49
+ InputBox?: typeof InputBox.Component | null;
50
+ InputFilesBox?: typeof InputFilesBox.Component | null;
51
+ InputSubmitButtonBox?: typeof InputSubmitButtonBox.Component | null;
52
+ InputTextBox?: typeof InputTextBox.Component | null;
53
+ SystemMessageBox?: typeof SystemMessageBox.Component | null;
54
+ SystemMessageRow?: typeof SystemMessageRow.Component | null;
55
+ CreateChatForm?: typeof CreateChatForm.Component | null;
56
+ CreateChatMemberInput?: typeof CreateChatMemberInput.Component | null;
57
+ CreateChatNameInput?: typeof CreateChatNameInput.Component | null;
58
+ CreateChatPanel?: typeof CreateChatPanel.Component | null;
59
+ MessageReadObserver?: typeof MessageReadObserver.Component | null;
60
+ Avatar?: typeof Avatar.Component | null;
61
+ AddChatButton?: typeof AddChatButton.Component | null;
62
+ ChatName?: typeof ChatName.Component | null;
41
63
  Icon?: typeof Icon.Component | null;
42
64
  }
43
65
  export interface ChatifyProps {
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ export interface CreateChatFormValue {
3
+ name: string;
4
+ members: string[];
5
+ }
6
+ export interface CreateChatFormProps {
7
+ value?: CreateChatFormValue;
8
+ onSubmit: (value: CreateChatFormValue) => void;
9
+ busy?: boolean;
10
+ }
11
+ export declare const CreateChatForm: import("../customize").Customizable<import("react").ComponentType<CreateChatFormProps>>;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export interface CreateChatMemberInputProps {
3
+ name: string;
4
+ }
5
+ export declare const CreateChatMemberInput: import("../customize").Customizable<import("react").ComponentType<CreateChatMemberInputProps>>;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export interface CreateChatNameInputProps {
3
+ name: string;
4
+ }
5
+ export declare const CreateChatNameInput: import("../customize").Customizable<import("react").ComponentType<CreateChatNameInputProps>>;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const CreateChatPanel: import("../customize").Customizable<import("react").ComponentType<unknown>>;
@@ -0,0 +1,4 @@
1
+ export * from './CreateChatForm';
2
+ export * from './CreateChatMemberInput';
3
+ export * from './CreateChatNameInput';
4
+ export * from './CreateChatPanel';