@webinex/chatify 2.0.1-alpha1 → 2.0.2-alpha2

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 (232) hide show
  1. package/dist/css/chatify.css +111 -12
  2. package/dist/esm/index.js +2 -2
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/types/core/api/api.d.ts +10784 -232
  5. package/dist/esm/types/core/api/baseApi.d.ts +1 -1
  6. package/dist/esm/types/ui/Conversation/Conversation.d.ts +2 -0
  7. package/dist/esm/types/ui/Conversation/ConversationContext.d.ts +2 -0
  8. package/dist/esm/types/ui/Conversation/InputBox/InputBoxFile.d.ts +8 -0
  9. package/dist/esm/types/ui/Conversation/InputBox/InputBoxFileList.d.ts +8 -0
  10. package/dist/esm/types/ui/Conversation/InputBox/InputFilesBox.d.ts +11 -1
  11. package/dist/esm/types/ui/Conversation/InputBox/InputSubmitButtonBox.d.ts +2 -0
  12. package/dist/esm/types/ui/Conversation/InputBox/InputTextBox.d.ts +1 -0
  13. package/dist/esm/types/ui/Conversation/InputBox/index.d.ts +8 -1
  14. package/dist/esm/types/ui/Conversation/Message/MessageFile.d.ts +6 -0
  15. package/dist/esm/types/ui/Conversation/Message/MessageFileList.d.ts +3 -0
  16. package/dist/esm/types/ui/Conversation/Message/index.d.ts +6 -0
  17. package/dist/esm/types/ui/common/Icon.d.ts +2 -0
  18. package/dist/esm/types/ui/customize.d.ts +2 -2
  19. package/dist/esm/types/ui/localizer.d.ts +5 -0
  20. package/dist/esm/types/ui/useFormatter.d.ts +3 -0
  21. package/dist/index.d.ts +10835 -239
  22. package/package.json +94 -93
  23. package/src/core/api/api.ts +643 -642
  24. package/src/core/api/baseApi.ts +38 -38
  25. package/src/core/api/index.ts +1 -1
  26. package/src/core/client.ts +280 -280
  27. package/src/core/constants.ts +1 -1
  28. package/src/core/debounce.ts +90 -90
  29. package/src/core/index.ts +4 -4
  30. package/src/core/types.tsx +152 -152
  31. package/src/index.ts +2 -2
  32. package/src/styles/aside.scss +162 -161
  33. package/src/styles/chat.scss +209 -208
  34. package/src/styles/index.scss +153 -110
  35. package/src/styles/input.scss +147 -74
  36. package/src/styles/keyframes.scss +14 -14
  37. package/src/styles/members.scss +13 -13
  38. package/src/styles/mixins.scss +25 -20
  39. package/src/styles/variables.scss +13 -10
  40. package/src/ui/Chat/ChatContext.tsx +30 -30
  41. package/src/ui/Chat/ChatEditableHeaderName.tsx +63 -63
  42. package/src/ui/Chat/ChatHeaderActions.tsx +19 -19
  43. package/src/ui/Chat/ChatPanel.tsx +30 -30
  44. package/src/ui/Chat/ChatView.tsx +115 -115
  45. package/src/ui/Chat/Members/ChatMembersButton.tsx +9 -9
  46. package/src/ui/Chat/Members/ChatMembersPanel.tsx +112 -112
  47. package/src/ui/Chat/Members/ChatMembersPreview.tsx +25 -25
  48. package/src/ui/Chat/Members/index.ts +13 -13
  49. package/src/ui/Chat/index.ts +6 -6
  50. package/src/ui/ChatGroup/ChatGroupContext.tsx +50 -50
  51. package/src/ui/ChatGroup/ChatGroupPanel.tsx +73 -73
  52. package/src/ui/ChatGroup/Create/CreateChatButton.tsx +15 -15
  53. package/src/ui/ChatGroup/Create/CreateChatForm.tsx +36 -36
  54. package/src/ui/ChatGroup/Create/CreateChatMemberInput.tsx +65 -65
  55. package/src/ui/ChatGroup/Create/CreateChatNameInput.tsx +25 -25
  56. package/src/ui/ChatGroup/Create/CreateChatPanel.tsx +45 -45
  57. package/src/ui/ChatGroup/Create/index.ts +19 -19
  58. package/src/ui/ChatGroup/Layout/ChatGroupAside.tsx +12 -12
  59. package/src/ui/ChatGroup/Layout/ChatGroupBody.tsx +10 -10
  60. package/src/ui/ChatGroup/Layout/ChatGroupFooter.tsx +3 -3
  61. package/src/ui/ChatGroup/Layout/ChatGroupHeader.tsx +5 -5
  62. package/src/ui/ChatGroup/Layout/ChatGroupMain.tsx +17 -17
  63. package/src/ui/ChatGroup/Layout/index.ts +19 -19
  64. package/src/ui/ChatGroup/List/ChatList.tsx +41 -41
  65. package/src/ui/ChatGroup/List/ChatListItemAvatar.tsx +22 -22
  66. package/src/ui/ChatGroup/List/ChatListItemBox.tsx +26 -26
  67. package/src/ui/ChatGroup/List/ChatListItemLastMessage.tsx +15 -15
  68. package/src/ui/ChatGroup/List/ChatListItemLastMessageAuthor.tsx +15 -15
  69. package/src/ui/ChatGroup/List/ChatListItemLastMessageContent.tsx +21 -21
  70. package/src/ui/ChatGroup/List/ChatListItemLastMessageSentAt.tsx +22 -22
  71. package/src/ui/ChatGroup/List/ChatListItemName.tsx +8 -8
  72. package/src/ui/ChatGroup/List/ChatListItemUnreadCount.tsx +12 -12
  73. package/src/ui/ChatGroup/List/index.ts +31 -31
  74. package/src/ui/ChatGroup/index.ts +5 -5
  75. package/src/ui/Chatify.tsx +9 -9
  76. package/src/ui/Conversation/Conversation.tsx +78 -76
  77. package/src/ui/Conversation/ConversationActions.tsx +5 -5
  78. package/src/ui/Conversation/ConversationBody.tsx +28 -28
  79. package/src/ui/Conversation/ConversationContext.ts +29 -27
  80. package/src/ui/Conversation/ConversationHeader.tsx +23 -23
  81. package/src/ui/Conversation/ConversationName.tsx +7 -7
  82. package/src/ui/Conversation/InputBox/InputBox.tsx +113 -40
  83. package/src/ui/Conversation/InputBox/InputBoxFile.tsx +38 -0
  84. package/src/ui/Conversation/InputBox/InputBoxFileList.tsx +21 -0
  85. package/src/ui/Conversation/InputBox/InputFilesBox.tsx +78 -9
  86. package/src/ui/Conversation/InputBox/InputSubmitButtonBox.tsx +26 -17
  87. package/src/ui/Conversation/InputBox/InputTextBox.tsx +55 -53
  88. package/src/ui/Conversation/InputBox/index.ts +23 -16
  89. package/src/ui/Conversation/Message/MessageAuthor.tsx +13 -13
  90. package/src/ui/Conversation/Message/MessageBox.tsx +20 -20
  91. package/src/ui/Conversation/Message/MessageContent.tsx +15 -11
  92. package/src/ui/Conversation/Message/MessageFile.tsx +52 -0
  93. package/src/ui/Conversation/Message/MessageFileList.tsx +14 -0
  94. package/src/ui/Conversation/Message/MessageInfoBox.tsx +28 -28
  95. package/src/ui/Conversation/Message/MessageRow.tsx +28 -28
  96. package/src/ui/Conversation/Message/MessageText.tsx +7 -7
  97. package/src/ui/Conversation/Message/index.ts +28 -22
  98. package/src/ui/Conversation/NextObserver/NextMessagesObserver.tsx +47 -47
  99. package/src/ui/Conversation/NextObserver/index.ts +1 -1
  100. package/src/ui/Conversation/ReadObserver/MessageReadObserver.tsx +49 -49
  101. package/src/ui/Conversation/ReadObserver/index.ts +1 -1
  102. package/src/ui/Conversation/SendingMessage/SendingMessageBox.tsx +16 -16
  103. package/src/ui/Conversation/SendingMessage/SendingMessageContent.tsx +13 -13
  104. package/src/ui/Conversation/SendingMessage/SendingMessageInfoBox.tsx +13 -13
  105. package/src/ui/Conversation/SendingMessage/SendingMessageText.tsx +7 -7
  106. package/src/ui/Conversation/SendingMessage/index.ts +16 -16
  107. package/src/ui/Conversation/SystemMessage/SystemMessageBox.tsx +20 -20
  108. package/src/ui/Conversation/SystemMessage/SystemMessageRow.tsx +28 -28
  109. package/src/ui/Conversation/SystemMessage/index.ts +10 -10
  110. package/src/ui/Conversation/index.ts +13 -13
  111. package/src/ui/Thread/ThreadActions.tsx +22 -22
  112. package/src/ui/Thread/ThreadContext.ts +13 -13
  113. package/src/ui/Thread/ThreadPanel.tsx +127 -127
  114. package/src/ui/Thread/index.tsx +3 -3
  115. package/src/ui/color.ts +20 -20
  116. package/src/ui/common/Avatar.tsx +20 -20
  117. package/src/ui/common/Icon.tsx +44 -40
  118. package/src/ui/common/MessageSkeleton.tsx +20 -20
  119. package/src/ui/common/index.ts +13 -13
  120. package/src/ui/customize.tsx +51 -53
  121. package/src/ui/index.ts +11 -11
  122. package/src/ui/localizer.tsx +96 -81
  123. package/src/ui/useFormatter.tsx +17 -0
  124. package/dist/esm/types/core/api/accountApi.d.ts +0 -5
  125. package/dist/esm/types/core/api/chatApi.d.ts +0 -16
  126. package/dist/esm/types/core/api/chatListApi.d.ts +0 -5
  127. package/dist/esm/types/core/api/chatMemberApi.d.ts +0 -6
  128. package/dist/esm/types/core/api/chatMessageApi.d.ts +0 -3
  129. package/dist/esm/types/core/api/threadApi.d.ts +0 -1
  130. package/dist/esm/types/core/api/threadMessageApi.d.ts +0 -6
  131. package/src/core/api/accountApi.ts +0 -11
  132. package/src/core/api/chatApi.ts +0 -87
  133. package/src/core/api/chatListApi.ts +0 -134
  134. package/src/core/api/chatMemberApi.ts +0 -20
  135. package/src/core/api/chatMessageApi.ts +0 -12
  136. package/src/core/api/threadApi.ts +0 -8
  137. package/src/core/api/threadMessageApi.ts +0 -20
  138. package/src/types/core/api/accountApi.d.ts +0 -5
  139. package/src/types/core/api/api.d.ts +0 -2380
  140. package/src/types/core/api/baseApi.d.ts +0 -15
  141. package/src/types/core/api/chatApi.d.ts +0 -16
  142. package/src/types/core/api/chatListApi.d.ts +0 -5
  143. package/src/types/core/api/chatMemberApi.d.ts +0 -6
  144. package/src/types/core/api/chatMessageApi.d.ts +0 -3
  145. package/src/types/core/api/index.d.ts +0 -1
  146. package/src/types/core/api/threadApi.d.ts +0 -1
  147. package/src/types/core/api/threadMessageApi.d.ts +0 -6
  148. package/src/types/core/client.d.ts +0 -83
  149. package/src/types/core/constants.d.ts +0 -1
  150. package/src/types/core/debounce.d.ts +0 -27
  151. package/src/types/core/index.d.ts +0 -4
  152. package/src/types/core/types.d.ts +0 -105
  153. package/src/types/index.d.ts +0 -2
  154. package/src/types/ui/Chat/ChatContext.d.ts +0 -10
  155. package/src/types/ui/Chat/ChatEditableHeaderName.d.ts +0 -2
  156. package/src/types/ui/Chat/ChatHeaderActions.d.ts +0 -2
  157. package/src/types/ui/Chat/ChatPanel.d.ts +0 -13
  158. package/src/types/ui/Chat/ChatView.d.ts +0 -17
  159. package/src/types/ui/Chat/Members/ChatMembersButton.d.ts +0 -2
  160. package/src/types/ui/Chat/Members/ChatMembersPanel.d.ts +0 -2
  161. package/src/types/ui/Chat/Members/ChatMembersPreview.d.ts +0 -2
  162. package/src/types/ui/Chat/Members/index.d.ts +0 -11
  163. package/src/types/ui/Chat/index.d.ts +0 -6
  164. package/src/types/ui/ChatGroup/ChatGroupContext.d.ts +0 -12
  165. package/src/types/ui/ChatGroup/ChatGroupPanel.d.ts +0 -15
  166. package/src/types/ui/ChatGroup/Create/CreateChatButton.d.ts +0 -2
  167. package/src/types/ui/ChatGroup/Create/CreateChatForm.d.ts +0 -11
  168. package/src/types/ui/ChatGroup/Create/CreateChatMemberInput.d.ts +0 -5
  169. package/src/types/ui/ChatGroup/Create/CreateChatNameInput.d.ts +0 -5
  170. package/src/types/ui/ChatGroup/Create/CreateChatPanel.d.ts +0 -2
  171. package/src/types/ui/ChatGroup/Create/index.d.ts +0 -17
  172. package/src/types/ui/ChatGroup/Layout/ChatGroupAside.d.ts +0 -2
  173. package/src/types/ui/ChatGroup/Layout/ChatGroupBody.d.ts +0 -2
  174. package/src/types/ui/ChatGroup/Layout/ChatGroupFooter.d.ts +0 -2
  175. package/src/types/ui/ChatGroup/Layout/ChatGroupHeader.d.ts +0 -2
  176. package/src/types/ui/ChatGroup/Layout/ChatGroupMain.d.ts +0 -2
  177. package/src/types/ui/ChatGroup/Layout/index.d.ts +0 -17
  178. package/src/types/ui/ChatGroup/List/ChatList.d.ts +0 -2
  179. package/src/types/ui/ChatGroup/List/ChatListItemAvatar.d.ts +0 -3
  180. package/src/types/ui/ChatGroup/List/ChatListItemBox.d.ts +0 -6
  181. package/src/types/ui/ChatGroup/List/ChatListItemLastMessage.d.ts +0 -3
  182. package/src/types/ui/ChatGroup/List/ChatListItemLastMessageAuthor.d.ts +0 -3
  183. package/src/types/ui/ChatGroup/List/ChatListItemLastMessageContent.d.ts +0 -3
  184. package/src/types/ui/ChatGroup/List/ChatListItemLastMessageSentAt.d.ts +0 -3
  185. package/src/types/ui/ChatGroup/List/ChatListItemName.d.ts +0 -3
  186. package/src/types/ui/ChatGroup/List/ChatListItemUnreadCount.d.ts +0 -3
  187. package/src/types/ui/ChatGroup/List/index.d.ts +0 -29
  188. package/src/types/ui/ChatGroup/index.d.ts +0 -5
  189. package/src/types/ui/Chatify.d.ts +0 -8
  190. package/src/types/ui/Conversation/Conversation.d.ts +0 -21
  191. package/src/types/ui/Conversation/ConversationActions.d.ts +0 -2
  192. package/src/types/ui/Conversation/ConversationBody.d.ts +0 -2
  193. package/src/types/ui/Conversation/ConversationContext.d.ts +0 -20
  194. package/src/types/ui/Conversation/ConversationHeader.d.ts +0 -2
  195. package/src/types/ui/Conversation/ConversationName.d.ts +0 -2
  196. package/src/types/ui/Conversation/InputBox/InputBox.d.ts +0 -2
  197. package/src/types/ui/Conversation/InputBox/InputFilesBox.d.ts +0 -2
  198. package/src/types/ui/Conversation/InputBox/InputSubmitButtonBox.d.ts +0 -5
  199. package/src/types/ui/Conversation/InputBox/InputTextBox.d.ts +0 -8
  200. package/src/types/ui/Conversation/InputBox/index.d.ts +0 -14
  201. package/src/types/ui/Conversation/Message/MessageAuthor.d.ts +0 -3
  202. package/src/types/ui/Conversation/Message/MessageBox.d.ts +0 -6
  203. package/src/types/ui/Conversation/Message/MessageContent.d.ts +0 -3
  204. package/src/types/ui/Conversation/Message/MessageInfoBox.d.ts +0 -3
  205. package/src/types/ui/Conversation/Message/MessageRow.d.ts +0 -6
  206. package/src/types/ui/Conversation/Message/MessageText.d.ts +0 -3
  207. package/src/types/ui/Conversation/Message/index.d.ts +0 -20
  208. package/src/types/ui/Conversation/NextObserver/NextMessagesObserver.d.ts +0 -5
  209. package/src/types/ui/Conversation/NextObserver/index.d.ts +0 -1
  210. package/src/types/ui/Conversation/ReadObserver/MessageReadObserver.d.ts +0 -6
  211. package/src/types/ui/Conversation/ReadObserver/index.d.ts +0 -1
  212. package/src/types/ui/Conversation/SendingMessage/SendingMessageBox.d.ts +0 -7
  213. package/src/types/ui/Conversation/SendingMessage/SendingMessageContent.d.ts +0 -3
  214. package/src/types/ui/Conversation/SendingMessage/SendingMessageInfoBox.d.ts +0 -3
  215. package/src/types/ui/Conversation/SendingMessage/SendingMessageText.d.ts +0 -3
  216. package/src/types/ui/Conversation/SendingMessage/index.d.ts +0 -14
  217. package/src/types/ui/Conversation/SystemMessage/SystemMessageBox.d.ts +0 -6
  218. package/src/types/ui/Conversation/SystemMessage/SystemMessageRow.d.ts +0 -9
  219. package/src/types/ui/Conversation/SystemMessage/index.d.ts +0 -8
  220. package/src/types/ui/Conversation/index.d.ts +0 -12
  221. package/src/types/ui/Thread/ThreadActions.d.ts +0 -2
  222. package/src/types/ui/Thread/ThreadContext.d.ts +0 -8
  223. package/src/types/ui/Thread/ThreadPanel.d.ts +0 -14
  224. package/src/types/ui/Thread/index.d.ts +0 -3
  225. package/src/types/ui/color.d.ts +0 -6
  226. package/src/types/ui/common/Avatar.d.ts +0 -6
  227. package/src/types/ui/common/Icon.d.ts +0 -20
  228. package/src/types/ui/common/MessageSkeleton.d.ts +0 -5
  229. package/src/types/ui/common/index.d.ts +0 -11
  230. package/src/types/ui/customize.d.ts +0 -9
  231. package/src/types/ui/index.d.ts +0 -11
  232. package/src/types/ui/localizer.d.ts +0 -35
@@ -1,26 +1,26 @@
1
- import { ChatListItem as ChatListItemModel } from '../../../core';
2
- import { customize } from '../../customize';
3
- import { ChatListItemName } from './ChatListItemName';
4
- import { ChatListItemUnreadCount } from './ChatListItemUnreadCount';
5
- import { ChatListItemLastMessage } from './ChatListItemLastMessage';
6
- import { ChatListItemAvatar } from './ChatListItemAvatar';
7
-
8
- export interface ChatListItemBoxProps {
9
- chat: ChatListItemModel;
10
- }
11
-
12
- export const ChatListItemBox = customize('ChatListItemBox', (props: ChatListItemBoxProps) => {
13
- const { message, lastReadMessageId } = props.chat;
14
- const read = lastReadMessageId != null && lastReadMessageId.localeCompare(message.id) >= 0;
15
-
16
- return (
17
- <div className={'wxchtf-chat' + (!read ? ' --unread' : '')}>
18
- <ChatListItemAvatar {...props} />
19
- <span className="wxchtf-chat-info">
20
- <ChatListItemName {...props} />
21
- <ChatListItemUnreadCount {...props} />
22
- <ChatListItemLastMessage {...props} />
23
- </span>
24
- </div>
25
- );
26
- });
1
+ import { ChatListItem as ChatListItemModel } from '../../../core';
2
+ import { customize } from '../../customize';
3
+ import { ChatListItemName } from './ChatListItemName';
4
+ import { ChatListItemUnreadCount } from './ChatListItemUnreadCount';
5
+ import { ChatListItemLastMessage } from './ChatListItemLastMessage';
6
+ import { ChatListItemAvatar } from './ChatListItemAvatar';
7
+
8
+ export interface ChatListItemBoxProps {
9
+ chat: ChatListItemModel;
10
+ }
11
+
12
+ export const ChatListItemBox = customize('ChatListItemBox', (props: ChatListItemBoxProps) => {
13
+ const { message, lastReadMessageId } = props.chat;
14
+ const read = lastReadMessageId != null && lastReadMessageId.localeCompare(message.id) >= 0;
15
+
16
+ return (
17
+ <div className={'wxchtf-chat' + (!read ? ' --unread' : '')}>
18
+ <ChatListItemAvatar {...props} />
19
+ <span className="wxchtf-chat-info">
20
+ <ChatListItemName {...props} />
21
+ <ChatListItemUnreadCount {...props} />
22
+ <ChatListItemLastMessage {...props} />
23
+ </span>
24
+ </div>
25
+ );
26
+ });
@@ -1,15 +1,15 @@
1
- import { customize } from '../../customize';
2
- import type { ChatListItemBoxProps } from './ChatListItemBox';
3
- import { ChatListItemLastMessageContent } from './ChatListItemLastMessageContent';
4
- import { ChatListItemLastMessageAuthor } from './ChatListItemLastMessageAuthor';
5
- import { ChatListItemLastMessageSentAt } from './ChatListItemLastMessageSentAt';
6
-
7
- export const ChatListItemLastMessage = customize('ChatListItemLastMessage', (props: ChatListItemBoxProps) => {
8
- return (
9
- <div className="wxchtf-chat-last">
10
- <ChatListItemLastMessageAuthor {...props} />
11
- <ChatListItemLastMessageContent {...props} />
12
- <ChatListItemLastMessageSentAt {...props} />
13
- </div>
14
- );
15
- });
1
+ import { customize } from '../../customize';
2
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
3
+ import { ChatListItemLastMessageContent } from './ChatListItemLastMessageContent';
4
+ import { ChatListItemLastMessageAuthor } from './ChatListItemLastMessageAuthor';
5
+ import { ChatListItemLastMessageSentAt } from './ChatListItemLastMessageSentAt';
6
+
7
+ export const ChatListItemLastMessage = customize('ChatListItemLastMessage', (props: ChatListItemBoxProps) => {
8
+ return (
9
+ <div className="wxchtf-chat-last">
10
+ <ChatListItemLastMessageAuthor {...props} />
11
+ <ChatListItemLastMessageContent {...props} />
12
+ <ChatListItemLastMessageSentAt {...props} />
13
+ </div>
14
+ );
15
+ });
@@ -1,15 +1,15 @@
1
- import { customize } from '../../customize';
2
- import type { ChatListItemBoxProps } from './ChatListItemBox';
3
-
4
- export const ChatListItemLastMessageAuthor = customize(
5
- 'ChatListItemLastMessageAuthor',
6
- (props: ChatListItemBoxProps) => {
7
- const { message } = props.chat;
8
-
9
- if (message.sentBy.id === 'chatify::system') {
10
- return null;
11
- }
12
-
13
- return <div className="wxchtf-chat-last-author">{message.sentBy.name}</div>;
14
- },
15
- );
1
+ import { customize } from '../../customize';
2
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
3
+
4
+ export const ChatListItemLastMessageAuthor = customize(
5
+ 'ChatListItemLastMessageAuthor',
6
+ (props: ChatListItemBoxProps) => {
7
+ const { message } = props.chat;
8
+
9
+ if (message.sentBy.id === 'chatify::system') {
10
+ return null;
11
+ }
12
+
13
+ return <div className="wxchtf-chat-last-author">{message.sentBy.name}</div>;
14
+ },
15
+ );
@@ -1,21 +1,21 @@
1
- import { useLocalizer } from '../../localizer';
2
- import { formatSystemMessage } from '../../Conversation/SystemMessage';
3
- import { FC } from 'react';
4
- import { customize } from '../../customize';
5
- import type { ChatListItemBoxProps } from './ChatListItemBox';
6
-
7
- export const ChatListItemLastMessageContent = customize<FC<ChatListItemBoxProps>>(
8
- 'ChatListItemLastMessageContent',
9
- (props) => {
10
- const { message } = props.chat;
11
- const localizer = useLocalizer();
12
-
13
- return (
14
- <div className="wxchtf-chat-last-message">
15
- {message.sentBy.id === 'chatify::system'
16
- ? formatSystemMessage(localizer, message.text)
17
- : message.text}
18
- </div>
19
- );
20
- },
21
- );
1
+ import { useLocalizer } from '../../localizer';
2
+ import { formatSystemMessage } from '../../Conversation/SystemMessage';
3
+ import { FC } from 'react';
4
+ import { customize } from '../../customize';
5
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
6
+
7
+ export const ChatListItemLastMessageContent = customize<FC<ChatListItemBoxProps>>(
8
+ 'ChatListItemLastMessageContent',
9
+ (props) => {
10
+ const { message } = props.chat;
11
+ const localizer = useLocalizer();
12
+
13
+ return (
14
+ <div className="wxchtf-chat-last-message">
15
+ {message.sentBy.id === 'chatify::system'
16
+ ? formatSystemMessage(localizer, message.text)
17
+ : message.text}
18
+ </div>
19
+ );
20
+ },
21
+ );
@@ -1,22 +1,22 @@
1
- import { customize } from '../../customize';
2
- import { useLocalizer } from '../../localizer';
3
- import { ChatListItemBoxProps } from './ChatListItemBox';
4
-
5
- export const ChatListItemLastMessageSentAt = customize(
6
- 'ChatListItemLastMessageSentAt',
7
- (props: ChatListItemBoxProps) => {
8
- const {
9
- chat: {
10
- message: { sentAt },
11
- },
12
- } = props;
13
-
14
- const localizer = useLocalizer();
15
-
16
- return (
17
- <div className="wxchtf-chat-last-sent-at">
18
- {localizer.isToday(sentAt) ? localizer.timestamp(sentAt) : localizer.dateTime(sentAt)}
19
- </div>
20
- );
21
- },
22
- );
1
+ import { customize } from '../../customize';
2
+ import { useLocalizer } from '../../localizer';
3
+ import { ChatListItemBoxProps } from './ChatListItemBox';
4
+
5
+ export const ChatListItemLastMessageSentAt = customize(
6
+ 'ChatListItemLastMessageSentAt',
7
+ (props: ChatListItemBoxProps) => {
8
+ const {
9
+ chat: {
10
+ message: { sentAt },
11
+ },
12
+ } = props;
13
+
14
+ const localizer = useLocalizer();
15
+
16
+ return (
17
+ <div className="wxchtf-chat-last-sent-at">
18
+ {localizer.isToday(sentAt) ? localizer.timestamp(sentAt) : localizer.dateTime(sentAt)}
19
+ </div>
20
+ );
21
+ },
22
+ );
@@ -1,8 +1,8 @@
1
- import { customize } from '../../customize';
2
- import type { ChatListItemBoxProps } from './ChatListItemBox';
3
-
4
- export const ChatListItemName = customize('ChatListItemName', (props: ChatListItemBoxProps) => {
5
- const { chat } = props;
6
-
7
- return <div className="wxchtf-chat-name">{chat.name}</div>;
8
- });
1
+ import { customize } from '../../customize';
2
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
3
+
4
+ export const ChatListItemName = customize('ChatListItemName', (props: ChatListItemBoxProps) => {
5
+ const { chat } = props;
6
+
7
+ return <div className="wxchtf-chat-name">{chat.name}</div>;
8
+ });
@@ -1,12 +1,12 @@
1
- import { customize } from '../../customize';
2
- import { ChatListItemBoxProps } from './ChatListItemBox';
3
-
4
- export const ChatListItemUnreadCount = customize('ChatListItemUnreadCount', (props: ChatListItemBoxProps) => {
5
- const { totalUnreadCount: unreadCount } = props.chat;
6
-
7
- if (unreadCount <= 0) {
8
- return null;
9
- }
10
-
11
- return <div className="wxchtf-unread-count">{unreadCount}</div>;
12
- });
1
+ import { customize } from '../../customize';
2
+ import { ChatListItemBoxProps } from './ChatListItemBox';
3
+
4
+ export const ChatListItemUnreadCount = customize('ChatListItemUnreadCount', (props: ChatListItemBoxProps) => {
5
+ const { totalUnreadCount: unreadCount } = props.chat;
6
+
7
+ if (unreadCount <= 0) {
8
+ return null;
9
+ }
10
+
11
+ return <div className="wxchtf-unread-count">{unreadCount}</div>;
12
+ });
@@ -1,31 +1,31 @@
1
- import { ChatList } from './ChatList';
2
- import { ChatListItemAvatar } from './ChatListItemAvatar';
3
- import { ChatListItemBox } from './ChatListItemBox';
4
- import { ChatListItemLastMessage } from './ChatListItemLastMessage';
5
- import { ChatListItemLastMessageAuthor } from './ChatListItemLastMessageAuthor';
6
- import { ChatListItemLastMessageContent } from './ChatListItemLastMessageContent';
7
- import { ChatListItemLastMessageSentAt } from './ChatListItemLastMessageSentAt';
8
- import { ChatListItemName } from './ChatListItemName';
9
- import { ChatListItemUnreadCount } from './ChatListItemUnreadCount';
10
-
11
- export * from './ChatList';
12
- export * from './ChatListItemAvatar';
13
- export * from './ChatListItemBox';
14
- export * from './ChatListItemLastMessage';
15
- export * from './ChatListItemLastMessageAuthor';
16
- export * from './ChatListItemLastMessageContent';
17
- export * from './ChatListItemLastMessageSentAt';
18
- export * from './ChatListItemName';
19
- export * from './ChatListItemUnreadCount';
20
-
21
- export interface ChatListCustomizeValue {
22
- ChatList?: typeof ChatList.Component | null;
23
- ChatListItemAvatar?: typeof ChatListItemAvatar.Component | null;
24
- ChatListItemBox?: typeof ChatListItemBox.Component | null;
25
- ChatListItemLastMessage?: typeof ChatListItemLastMessage.Component | null;
26
- ChatListItemLastMessageAuthor?: typeof ChatListItemLastMessageAuthor.Component | null;
27
- ChatListItemLastMessageContent?: typeof ChatListItemLastMessageContent.Component | null;
28
- ChatListItemLastMessageSentAt?: typeof ChatListItemLastMessageSentAt.Component | null;
29
- ChatListItemName?: typeof ChatListItemName.Component | null;
30
- ChatListItemUnreadCount?: typeof ChatListItemUnreadCount.Component | null;
31
- }
1
+ import { ChatList } from './ChatList';
2
+ import { ChatListItemAvatar } from './ChatListItemAvatar';
3
+ import { ChatListItemBox } from './ChatListItemBox';
4
+ import { ChatListItemLastMessage } from './ChatListItemLastMessage';
5
+ import { ChatListItemLastMessageAuthor } from './ChatListItemLastMessageAuthor';
6
+ import { ChatListItemLastMessageContent } from './ChatListItemLastMessageContent';
7
+ import { ChatListItemLastMessageSentAt } from './ChatListItemLastMessageSentAt';
8
+ import { ChatListItemName } from './ChatListItemName';
9
+ import { ChatListItemUnreadCount } from './ChatListItemUnreadCount';
10
+
11
+ export * from './ChatList';
12
+ export * from './ChatListItemAvatar';
13
+ export * from './ChatListItemBox';
14
+ export * from './ChatListItemLastMessage';
15
+ export * from './ChatListItemLastMessageAuthor';
16
+ export * from './ChatListItemLastMessageContent';
17
+ export * from './ChatListItemLastMessageSentAt';
18
+ export * from './ChatListItemName';
19
+ export * from './ChatListItemUnreadCount';
20
+
21
+ export interface ChatListCustomizeValue {
22
+ ChatList?: typeof ChatList.Component | null;
23
+ ChatListItemAvatar?: typeof ChatListItemAvatar.Component | null;
24
+ ChatListItemBox?: typeof ChatListItemBox.Component | null;
25
+ ChatListItemLastMessage?: typeof ChatListItemLastMessage.Component | null;
26
+ ChatListItemLastMessageAuthor?: typeof ChatListItemLastMessageAuthor.Component | null;
27
+ ChatListItemLastMessageContent?: typeof ChatListItemLastMessageContent.Component | null;
28
+ ChatListItemLastMessageSentAt?: typeof ChatListItemLastMessageSentAt.Component | null;
29
+ ChatListItemName?: typeof ChatListItemName.Component | null;
30
+ ChatListItemUnreadCount?: typeof ChatListItemUnreadCount.Component | null;
31
+ }
@@ -1,5 +1,5 @@
1
- export * from './Create';
2
- export * from './Layout';
3
- export * from './List';
4
- export * from './ChatGroupContext';
5
- export * from './ChatGroupPanel';
1
+ export * from './Create';
2
+ export * from './Layout';
3
+ export * from './List';
4
+ export * from './ChatGroupContext';
5
+ export * from './ChatGroupPanel';
@@ -1,9 +1,9 @@
1
- import { ChatPanel } from './Chat';
2
- import { ChatGroupPanel } from './ChatGroup';
3
- import { ThreadPanel } from './Thread';
4
-
5
- export const Chatify = {
6
- Thread: ThreadPanel,
7
- ChatGroup: ChatGroupPanel,
8
- Chat: ChatPanel,
9
- };
1
+ import { ChatPanel } from './Chat';
2
+ import { ChatGroupPanel } from './ChatGroup';
3
+ import { ThreadPanel } from './Thread';
4
+
5
+ export const Chatify = {
6
+ Thread: ThreadPanel,
7
+ ChatGroup: ChatGroupPanel,
8
+ Chat: ChatPanel,
9
+ };
@@ -1,76 +1,78 @@
1
- import { ConversationHeader } from './ConversationHeader';
2
- import { ConversationBody } from './ConversationBody';
3
- import { customize } from '../customize';
4
- import { ConversationName } from './ConversationName';
5
- import { ConversationContext, ConversationContextValue, ConversationValue } from './ConversationContext';
6
- import { useMemo } from 'react';
7
- import { InputBox, InputBoxCustomizeValue } from './InputBox';
8
- import { ConversationActions } from './ConversationActions';
9
- import { MessageCustomizeValue } from './Message';
10
- import { SendingMessageCustomizeValue } from './SendingMessage';
11
- import { SystemMessageCustomizeValue } from './SystemMessage';
12
- import { CommonCustomizeValue } from '../common';
13
-
14
- export interface ConversationProps extends Omit<ConversationContextValue, keyof ConversationValue> {
15
- value: ConversationValue;
16
- }
17
-
18
- export interface ConversationCustomizeValue
19
- extends InputBoxCustomizeValue,
20
- MessageCustomizeValue,
21
- SendingMessageCustomizeValue,
22
- SystemMessageCustomizeValue,
23
- CommonCustomizeValue {
24
- ConversationActions?: typeof ConversationActions.Component | null;
25
- ConversationBody?: typeof ConversationBody.Component | null;
26
- ConversationHeader?: typeof ConversationHeader.Component | null;
27
- ConversationName?: typeof ConversationName.Component | null;
28
- }
29
-
30
- export const Conversation = customize('Conversation', (props: ConversationProps) => {
31
- const { value, hasMore, messages, nextLoading, onNext, onRead, onSend, isReading, noReadTracking } = props;
32
- const { id, active, name, lastReadMessageId } = value;
33
-
34
- const context = useMemo<ConversationContextValue>(
35
- () => ({
36
- id,
37
- name,
38
- active,
39
- lastReadMessageId,
40
- hasMore,
41
- messages,
42
- nextLoading,
43
- onNext,
44
- onRead,
45
- onSend,
46
- isReading,
47
- noReadTracking,
48
- }),
49
- [
50
- id,
51
- name,
52
- active,
53
- onNext,
54
- onRead,
55
- onSend,
56
- hasMore,
57
- messages,
58
- nextLoading,
59
- lastReadMessageId,
60
- isReading,
61
- noReadTracking,
62
- ],
63
- );
64
-
65
- return (
66
- <ConversationContext.Provider value={context}>
67
- <div className="wxchtf-conversation">
68
- <div className="wxchtf-conversation-main">
69
- <ConversationHeader />
70
- <ConversationBody />
71
- {active && <InputBox />}
72
- </div>
73
- </div>
74
- </ConversationContext.Provider>
75
- );
76
- });
1
+ import { ConversationHeader } from './ConversationHeader';
2
+ import { ConversationBody } from './ConversationBody';
3
+ import { customize } from '../customize';
4
+ import { ConversationName } from './ConversationName';
5
+ import { ConversationContext, ConversationContextValue, ConversationValue } from './ConversationContext';
6
+ import { useMemo } from 'react';
7
+ import { InputBox, InputBoxCustomizeValue } from './InputBox';
8
+ import { ConversationActions } from './ConversationActions';
9
+ import { MessageCustomizeValue } from './Message';
10
+ import { SendingMessageCustomizeValue } from './SendingMessage';
11
+ import { SystemMessageCustomizeValue } from './SystemMessage';
12
+ import { CommonCustomizeValue } from '../common';
13
+ import type { Flippo } from '@webinex/flippo';
14
+
15
+ export interface ConversationProps extends Omit<ConversationContextValue, keyof ConversationValue> {
16
+ value: ConversationValue;
17
+ }
18
+
19
+ export interface ConversationCustomizeValue
20
+ extends InputBoxCustomizeValue,
21
+ MessageCustomizeValue,
22
+ SendingMessageCustomizeValue,
23
+ SystemMessageCustomizeValue,
24
+ CommonCustomizeValue {
25
+ ConversationActions?: typeof ConversationActions.Component | null;
26
+ ConversationBody?: typeof ConversationBody.Component | null;
27
+ ConversationHeader?: typeof ConversationHeader.Component | null;
28
+ ConversationName?: typeof ConversationName.Component | null;
29
+ flippo?: Flippo;
30
+ }
31
+
32
+ export const Conversation = customize('Conversation', (props: ConversationProps) => {
33
+ const { value, hasMore, messages, nextLoading, onNext, onRead, onSend, isReading, noReadTracking } = props;
34
+ const { id, active, name, lastReadMessageId } = value;
35
+
36
+ const context = useMemo<ConversationContextValue>(
37
+ () => ({
38
+ id,
39
+ name,
40
+ active,
41
+ lastReadMessageId,
42
+ hasMore,
43
+ messages,
44
+ nextLoading,
45
+ onNext,
46
+ onRead,
47
+ onSend,
48
+ isReading,
49
+ noReadTracking,
50
+ }),
51
+ [
52
+ id,
53
+ name,
54
+ active,
55
+ onNext,
56
+ onRead,
57
+ onSend,
58
+ hasMore,
59
+ messages,
60
+ nextLoading,
61
+ lastReadMessageId,
62
+ isReading,
63
+ noReadTracking,
64
+ ],
65
+ );
66
+
67
+ return (
68
+ <ConversationContext.Provider value={context}>
69
+ <div className="wxchtf-conversation">
70
+ <div className="wxchtf-conversation-main">
71
+ <ConversationHeader />
72
+ <ConversationBody />
73
+ {active && <InputBox />}
74
+ </div>
75
+ </div>
76
+ </ConversationContext.Provider>
77
+ );
78
+ });
@@ -1,5 +1,5 @@
1
- import { customize } from '../customize';
2
-
3
- export const ConversationActions = customize('ConversationActions', () => {
4
- return null;
5
- });
1
+ import { customize } from '../customize';
2
+
3
+ export const ConversationActions = customize('ConversationActions', () => {
4
+ return null;
5
+ });
@@ -1,28 +1,28 @@
1
- import { MessageBox } from './Message';
2
- import { NextMessagesObserver } from './NextObserver';
3
- import { SystemMessageBox } from './SystemMessage';
4
- import { MessageSkeleton } from '../common/MessageSkeleton';
5
- import { customize } from '../customize';
6
- import { SYSTEM_ID } from '../../core';
7
- import { useConversation } from './ConversationContext';
8
-
9
- // TODO: Add sending message box
10
- export const ConversationBody = customize('ConversationBody', () => {
11
- const { id, messages = [], hasMore, onNext, nextLoading } = useConversation();
12
-
13
- return (
14
- <div className="wxchtf-conversation-body">
15
- {!messages && <MessageSkeleton count={5} />}
16
-
17
- {messages?.map((x) => {
18
- if (x.sentBy.id === SYSTEM_ID) {
19
- return <SystemMessageBox key={x.id} message={x} />;
20
- }
21
-
22
- return <MessageBox message={x} key={x.id} />;
23
- })}
24
-
25
- {hasMore && <NextMessagesObserver key={messages.length + id} onLoad={onNext} loading={nextLoading} />}
26
- </div>
27
- );
28
- });
1
+ import { MessageBox } from './Message';
2
+ import { NextMessagesObserver } from './NextObserver';
3
+ import { SystemMessageBox } from './SystemMessage';
4
+ import { MessageSkeleton } from '../common/MessageSkeleton';
5
+ import { customize } from '../customize';
6
+ import { SYSTEM_ID } from '../../core';
7
+ import { useConversation } from './ConversationContext';
8
+
9
+ // TODO: Add sending message box
10
+ export const ConversationBody = customize('ConversationBody', () => {
11
+ const { id, messages = [], hasMore, onNext, nextLoading } = useConversation();
12
+
13
+ return (
14
+ <div className="wxchtf-conversation-body">
15
+ {!messages && <MessageSkeleton count={5} />}
16
+
17
+ {messages?.map((x) => {
18
+ if (x.sentBy.id === SYSTEM_ID) {
19
+ return <SystemMessageBox key={x.id} message={x} />;
20
+ }
21
+
22
+ return <MessageBox message={x} key={x.id} />;
23
+ })}
24
+
25
+ {hasMore && <NextMessagesObserver key={messages.length + id} onLoad={onNext} loading={nextLoading} />}
26
+ </div>
27
+ );
28
+ });
@@ -1,27 +1,29 @@
1
- import React from 'react';
2
- import { MessageBase, MessageBody } from '../../core';
3
-
4
- export interface ConversationValue {
5
- id: string;
6
- name: string;
7
- active: boolean;
8
- lastReadMessageId: string | null;
9
- }
10
-
11
- export interface ConversationContextValue extends ConversationValue {
12
- messages?: MessageBase[];
13
- hasMore?: boolean;
14
- nextLoading: boolean;
15
- noReadTracking?: boolean;
16
-
17
- isReading: (id: string) => boolean;
18
- onNext: () => void;
19
- onSend: (message: MessageBody) => void;
20
- onRead: (id: string) => void;
21
- }
22
-
23
- export const ConversationContext = React.createContext<ConversationContextValue>(undefined!);
24
-
25
- export function useConversation() {
26
- return React.useContext(ConversationContext);
27
- }
1
+ import React from 'react';
2
+ import { MessageBase, MessageBody } from '../../core';
3
+ import type { Flippo } from '@webinex/flippo';
4
+
5
+ export interface ConversationValue {
6
+ id: string;
7
+ name: string;
8
+ active: boolean;
9
+ lastReadMessageId: string | null;
10
+ }
11
+
12
+ export interface ConversationContextValue extends ConversationValue {
13
+ messages?: MessageBase[];
14
+ hasMore?: boolean;
15
+ nextLoading: boolean;
16
+ noReadTracking?: boolean;
17
+
18
+ isReading: (id: string) => boolean;
19
+ onNext: () => void;
20
+ onSend: (message: MessageBody) => void;
21
+ onRead: (id: string) => void;
22
+ flippo?: Flippo;
23
+ }
24
+
25
+ export const ConversationContext = React.createContext<ConversationContextValue>(undefined!);
26
+
27
+ export function useConversation() {
28
+ return React.useContext(ConversationContext);
29
+ }