@webinex/chatify 2.0.0-alpha13 → 2.0.0-alpha14

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 (143) hide show
  1. package/dist/{Chatify-CwAfN1wu.js → Chatify-CP2jgo8d.js} +191 -118
  2. package/dist/Chatify-CP2jgo8d.js.map +1 -0
  3. package/dist/Chatify.css +28 -0
  4. package/dist/audit.js +3 -2
  5. package/dist/audit.js.map +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/types/audit/index.d.ts +17 -15
  8. package/dist/types/ui/Chat/ChatContext.d.ts +2 -0
  9. package/dist/types/ui/Chat/ChatPanel.d.ts +7 -0
  10. package/dist/types/ui/Chat/ChatView.d.ts +4 -2
  11. package/dist/types/ui/ChatGroup/ChatGroupContext.d.ts +4 -1
  12. package/dist/types/ui/ChatGroup/ChatGroupPanel.d.ts +21 -2
  13. package/dist/types/ui/Conversation/Conversation.d.ts +1 -0
  14. package/dist/types/ui/Conversation/ConversationContext.d.ts +1 -0
  15. package/dist/types/ui/Conversation/ConversationHeader.d.ts +4 -1
  16. package/dist/types/ui/localizer.d.ts +4 -1
  17. package/dist/types/ui/useCompact.d.ts +4 -0
  18. package/package.json +81 -81
  19. package/src/audit/AuditChatList.tsx +25 -25
  20. package/src/audit/AuditConversationPanel.tsx +49 -48
  21. package/src/audit/AuditPanel.tsx +76 -76
  22. package/src/audit/AuditPanelCustomizeValue.ts +11 -11
  23. package/src/audit/AuditSearch.tsx +89 -89
  24. package/src/audit/AuditSearchValue.tsx +42 -42
  25. package/src/audit/auditApi.tsx +113 -113
  26. package/src/audit/index.d.ts +18 -18
  27. package/src/audit/index.tsx +28 -28
  28. package/src/audit/styles.scss +72 -72
  29. package/src/core/api/api.ts +675 -675
  30. package/src/core/api/baseApi.ts +38 -38
  31. package/src/core/api/index.ts +1 -1
  32. package/src/core/client.ts +298 -298
  33. package/src/core/constants.ts +1 -1
  34. package/src/core/debounce.ts +90 -90
  35. package/src/core/index.ts +4 -4
  36. package/src/core/types.tsx +182 -182
  37. package/src/index.ts +2 -2
  38. package/src/styles/aside.scss +34 -26
  39. package/src/styles/chat-list.scss +138 -138
  40. package/src/styles/chat.scss +11 -11
  41. package/src/styles/conversation.scss +199 -200
  42. package/src/styles/index.scss +227 -220
  43. package/src/styles/input.scss +148 -148
  44. package/src/styles/keyframes.scss +14 -14
  45. package/src/styles/members.scss +30 -13
  46. package/src/styles/mixins.scss +38 -25
  47. package/src/styles/variables.scss +13 -13
  48. package/src/ui/Chat/ChatContext.tsx +32 -30
  49. package/src/ui/Chat/ChatEditableHeaderName.tsx +63 -63
  50. package/src/ui/Chat/ChatHeaderActions.tsx +19 -19
  51. package/src/ui/Chat/ChatPanel.tsx +46 -30
  52. package/src/ui/Chat/ChatView.tsx +122 -115
  53. package/src/ui/Chat/Members/ChatMembersButton.tsx +9 -9
  54. package/src/ui/Chat/Members/ChatMembersPanel.tsx +128 -112
  55. package/src/ui/Chat/Members/ChatMembersPreview.tsx +25 -25
  56. package/src/ui/Chat/Members/index.ts +13 -13
  57. package/src/ui/Chat/index.ts +6 -6
  58. package/src/ui/ChatGroup/AutoReply/AutoReplyButton.tsx +21 -21
  59. package/src/ui/ChatGroup/AutoReply/AutoReplyForm.tsx +50 -50
  60. package/src/ui/ChatGroup/AutoReply/AutoReplyPanel.tsx +94 -94
  61. package/src/ui/ChatGroup/AutoReply/AutoReplyPeriodInput.tsx +22 -22
  62. package/src/ui/ChatGroup/AutoReply/AutoReplyTextInput.tsx +22 -22
  63. package/src/ui/ChatGroup/AutoReply/index.ts +19 -19
  64. package/src/ui/ChatGroup/ChatGroupContext.tsx +63 -61
  65. package/src/ui/ChatGroup/ChatGroupPanel.tsx +110 -75
  66. package/src/ui/ChatGroup/Create/CreateChatButton.tsx +15 -15
  67. package/src/ui/ChatGroup/Create/CreateChatForm.tsx +36 -36
  68. package/src/ui/ChatGroup/Create/CreateChatMemberInput.tsx +65 -65
  69. package/src/ui/ChatGroup/Create/CreateChatNameInput.tsx +25 -25
  70. package/src/ui/ChatGroup/Create/CreateChatPanel.tsx +45 -45
  71. package/src/ui/ChatGroup/Create/index.ts +19 -19
  72. package/src/ui/ChatGroup/Layout/ChatGroupActions.tsx +15 -15
  73. package/src/ui/ChatGroup/Layout/ChatGroupAside.tsx +12 -12
  74. package/src/ui/ChatGroup/Layout/ChatGroupBody.tsx +17 -10
  75. package/src/ui/ChatGroup/Layout/ChatGroupFooter.tsx +3 -3
  76. package/src/ui/ChatGroup/Layout/ChatGroupHeader.tsx +5 -5
  77. package/src/ui/ChatGroup/Layout/ChatGroupMain.tsx +21 -19
  78. package/src/ui/ChatGroup/Layout/index.ts +22 -22
  79. package/src/ui/ChatGroup/List/ChatListPanel.tsx +28 -28
  80. package/src/ui/ChatGroup/List/index.ts +8 -8
  81. package/src/ui/ChatGroup/index.ts +6 -6
  82. package/src/ui/Chatify.tsx +15 -15
  83. package/src/ui/Conversation/Conversation.tsx +96 -92
  84. package/src/ui/Conversation/ConversationActions.tsx +12 -12
  85. package/src/ui/Conversation/ConversationBody.tsx +28 -28
  86. package/src/ui/Conversation/ConversationContext.ts +31 -30
  87. package/src/ui/Conversation/ConversationHeader.tsx +35 -19
  88. package/src/ui/Conversation/ConversationName.tsx +7 -7
  89. package/src/ui/Conversation/InputBox/InputBox.tsx +126 -126
  90. package/src/ui/Conversation/InputBox/InputBoxFile.tsx +38 -38
  91. package/src/ui/Conversation/InputBox/InputBoxFileList.tsx +21 -21
  92. package/src/ui/Conversation/InputBox/InputFilesBox.tsx +78 -78
  93. package/src/ui/Conversation/InputBox/InputSubmitButtonBox.tsx +26 -26
  94. package/src/ui/Conversation/InputBox/InputTextBox.tsx +63 -61
  95. package/src/ui/Conversation/InputBox/index.ts +23 -23
  96. package/src/ui/Conversation/Message/MessageAuthor.tsx +13 -13
  97. package/src/ui/Conversation/Message/MessageBox.tsx +20 -20
  98. package/src/ui/Conversation/Message/MessageContent.tsx +15 -15
  99. package/src/ui/Conversation/Message/MessageFile.tsx +54 -54
  100. package/src/ui/Conversation/Message/MessageFileList.tsx +14 -14
  101. package/src/ui/Conversation/Message/MessageInfoBox.tsx +28 -28
  102. package/src/ui/Conversation/Message/MessageRow.tsx +28 -28
  103. package/src/ui/Conversation/Message/MessageText.tsx +7 -7
  104. package/src/ui/Conversation/Message/index.ts +28 -28
  105. package/src/ui/Conversation/NextObserver/NextMessagesObserver.tsx +47 -47
  106. package/src/ui/Conversation/NextObserver/index.ts +1 -1
  107. package/src/ui/Conversation/ReadObserver/MessageReadObserver.tsx +49 -49
  108. package/src/ui/Conversation/ReadObserver/index.ts +1 -1
  109. package/src/ui/Conversation/SendingMessage/SendingMessageBox.tsx +16 -16
  110. package/src/ui/Conversation/SendingMessage/SendingMessageContent.tsx +13 -13
  111. package/src/ui/Conversation/SendingMessage/SendingMessageInfoBox.tsx +13 -13
  112. package/src/ui/Conversation/SendingMessage/SendingMessageText.tsx +7 -7
  113. package/src/ui/Conversation/SendingMessage/index.ts +16 -16
  114. package/src/ui/Conversation/SystemMessage/SystemMessageBox.tsx +20 -20
  115. package/src/ui/Conversation/SystemMessage/SystemMessageRow.tsx +28 -28
  116. package/src/ui/Conversation/SystemMessage/index.ts +10 -10
  117. package/src/ui/Conversation/index.ts +13 -13
  118. package/src/ui/Thread/ThreadActions.tsx +22 -22
  119. package/src/ui/Thread/ThreadContext.ts +13 -13
  120. package/src/ui/Thread/ThreadPanel.tsx +128 -127
  121. package/src/ui/Thread/index.tsx +3 -3
  122. package/src/ui/color.ts +20 -20
  123. package/src/ui/common/Avatar.tsx +20 -20
  124. package/src/ui/common/ChatList/ChatList.tsx +83 -84
  125. package/src/ui/common/ChatList/ChatListItemAvatar.tsx +22 -22
  126. package/src/ui/common/ChatList/ChatListItemBox.tsx +32 -32
  127. package/src/ui/common/ChatList/ChatListItemLastMessage.tsx +15 -15
  128. package/src/ui/common/ChatList/ChatListItemLastMessageAuthor.tsx +15 -15
  129. package/src/ui/common/ChatList/ChatListItemLastMessageContent.tsx +21 -21
  130. package/src/ui/common/ChatList/ChatListItemLastMessageSentAt.tsx +22 -22
  131. package/src/ui/common/ChatList/ChatListItemName.tsx +8 -8
  132. package/src/ui/common/ChatList/ChatListItemUnreadCount.tsx +12 -12
  133. package/src/ui/common/ChatList/ChatListValue.ts +9 -9
  134. package/src/ui/common/ChatList/index.ts +32 -32
  135. package/src/ui/common/Icon.tsx +48 -48
  136. package/src/ui/common/MessageSkeleton.tsx +20 -20
  137. package/src/ui/common/index.ts +14 -14
  138. package/src/ui/customize.tsx +51 -51
  139. package/src/ui/index.ts +11 -11
  140. package/src/ui/localizer.tsx +148 -137
  141. package/src/ui/useCompact.tsx +32 -0
  142. package/src/ui/useFormatter.tsx +17 -17
  143. package/dist/Chatify-CwAfN1wu.js.map +0 -1
@@ -1,45 +1,45 @@
1
- import { chatifyApi } from '../../../core';
2
- import { useCallback } from 'react';
3
- import { useLocalizer } from '../../localizer';
4
- import { CreateChatForm, CreateChatFormValue } from './CreateChatForm';
5
- import { customize } from '../../customize';
6
- import { Button } from 'antd';
7
- import { Icon } from '../../common/Icon';
8
- import { useChatGroupContext } from '../ChatGroupContext';
9
-
10
- function useSubmit() {
11
- const [add, { isLoading }] = chatifyApi.useAddChatMutation();
12
- const { openChat } = useChatGroupContext();
13
-
14
- const onSubmit = useCallback(
15
- (value: CreateChatFormValue) =>
16
- add({
17
- name: value.name,
18
- members: value.members,
19
- })
20
- .unwrap()
21
- .then((id) => openChat(id)),
22
- [add, openChat],
23
- );
24
-
25
- return [onSubmit, isLoading] as const;
26
- }
27
-
28
- export const CreateChatPanel = customize('CreateChatPanel', () => {
29
- const localizer = useLocalizer();
30
- const [onSubmit, submitting] = useSubmit();
31
- const { toggleNewChat } = useChatGroupContext();
32
-
33
- return (
34
- <div className="wxchtf-create-chat-panel">
35
- <Button
36
- onClick={() => toggleNewChat()}
37
- className="wxchtf-create-chat-panel-close"
38
- type="link"
39
- icon={<Icon type="close" />}
40
- />
41
- <h3>{localizer.addChat.title()}</h3>
42
- <CreateChatForm busy={submitting ?? false} onSubmit={onSubmit} />
43
- </div>
44
- );
45
- });
1
+ import { chatifyApi } from '../../../core';
2
+ import { useCallback } from 'react';
3
+ import { useLocalizer } from '../../localizer';
4
+ import { CreateChatForm, CreateChatFormValue } from './CreateChatForm';
5
+ import { customize } from '../../customize';
6
+ import { Button } from 'antd';
7
+ import { Icon } from '../../common/Icon';
8
+ import { useChatGroupContext } from '../ChatGroupContext';
9
+
10
+ function useSubmit() {
11
+ const [add, { isLoading }] = chatifyApi.useAddChatMutation();
12
+ const { openChat } = useChatGroupContext();
13
+
14
+ const onSubmit = useCallback(
15
+ (value: CreateChatFormValue) =>
16
+ add({
17
+ name: value.name,
18
+ members: value.members,
19
+ })
20
+ .unwrap()
21
+ .then((id) => openChat(id)),
22
+ [add, openChat],
23
+ );
24
+
25
+ return [onSubmit, isLoading] as const;
26
+ }
27
+
28
+ export const CreateChatPanel = customize('CreateChatPanel', () => {
29
+ const localizer = useLocalizer();
30
+ const [onSubmit, submitting] = useSubmit();
31
+ const { toggleNewChat } = useChatGroupContext();
32
+
33
+ return (
34
+ <div className="wxchtf-create-chat-panel">
35
+ <Button
36
+ onClick={() => toggleNewChat()}
37
+ className="wxchtf-create-chat-panel-close"
38
+ type="link"
39
+ icon={<Icon type="close" />}
40
+ />
41
+ <h3>{localizer.addChat.title()}</h3>
42
+ <CreateChatForm busy={submitting ?? false} onSubmit={onSubmit} />
43
+ </div>
44
+ );
45
+ });
@@ -1,19 +1,19 @@
1
- import { CreateChatForm } from './CreateChatForm';
2
- import { CreateChatMemberInput } from './CreateChatMemberInput';
3
- import { CreateChatNameInput } from './CreateChatNameInput';
4
- import { CreateChatPanel } from './CreateChatPanel';
5
- import { CreateChatButton } from './CreateChatButton';
6
-
7
- export * from './CreateChatForm';
8
- export * from './CreateChatMemberInput';
9
- export * from './CreateChatNameInput';
10
- export * from './CreateChatPanel';
11
- export * from './CreateChatButton';
12
-
13
- export interface CreateChatPanelCustomizeValue {
14
- CreateChatForm?: typeof CreateChatForm.Component | null;
15
- CreateChatMemberInput?: typeof CreateChatMemberInput.Component | null;
16
- CreateChatNameInput?: typeof CreateChatNameInput.Component | null;
17
- CreateChatPanel?: typeof CreateChatPanel.Component | null;
18
- CreateChatButton?: typeof CreateChatButton.Component | null;
19
- }
1
+ import { CreateChatForm } from './CreateChatForm';
2
+ import { CreateChatMemberInput } from './CreateChatMemberInput';
3
+ import { CreateChatNameInput } from './CreateChatNameInput';
4
+ import { CreateChatPanel } from './CreateChatPanel';
5
+ import { CreateChatButton } from './CreateChatButton';
6
+
7
+ export * from './CreateChatForm';
8
+ export * from './CreateChatMemberInput';
9
+ export * from './CreateChatNameInput';
10
+ export * from './CreateChatPanel';
11
+ export * from './CreateChatButton';
12
+
13
+ export interface CreateChatPanelCustomizeValue {
14
+ CreateChatForm?: typeof CreateChatForm.Component | null;
15
+ CreateChatMemberInput?: typeof CreateChatMemberInput.Component | null;
16
+ CreateChatNameInput?: typeof CreateChatNameInput.Component | null;
17
+ CreateChatPanel?: typeof CreateChatPanel.Component | null;
18
+ CreateChatButton?: typeof CreateChatButton.Component | null;
19
+ }
@@ -1,15 +1,15 @@
1
- import { Space } from 'antd';
2
- import { CreateChatButton } from '../Create';
3
- import { AutoReplyButton } from '../AutoReply/AutoReplyButton';
4
- import { customize } from '../../customize';
5
-
6
- export const ChatGroupActions = customize('ChatGroupActions', () => {
7
- return (
8
- <span className="wxchtf-add-btn-wrapper">
9
- <Space.Compact className="wxchtf-add-btn-group">
10
- <CreateChatButton />
11
- <AutoReplyButton />
12
- </Space.Compact>
13
- </span>
14
- );
15
- });
1
+ import { Space } from 'antd';
2
+ import { CreateChatButton } from '../Create';
3
+ import { AutoReplyButton } from '../AutoReply/AutoReplyButton';
4
+ import { customize } from '../../customize';
5
+
6
+ export const ChatGroupActions = customize('ChatGroupActions', () => {
7
+ return (
8
+ <span className="wxchtf-add-btn-wrapper">
9
+ <Space.Compact className="wxchtf-add-btn-group">
10
+ <CreateChatButton />
11
+ <AutoReplyButton />
12
+ </Space.Compact>
13
+ </span>
14
+ );
15
+ });
@@ -1,12 +1,12 @@
1
- import { customize } from '../../customize';
2
- import { ChatListPanel } from '../List';
3
- import { ChatGroupActions } from './ChatGroupActions';
4
-
5
- export const ChatGroupAside = customize('ChatGroupAside', () => {
6
- return (
7
- <div className="wxchtf-aside">
8
- <ChatGroupActions />
9
- <ChatListPanel />
10
- </div>
11
- );
12
- });
1
+ import { customize } from '../../customize';
2
+ import { ChatListPanel } from '../List';
3
+ import { ChatGroupActions } from './ChatGroupActions';
4
+
5
+ export const ChatGroupAside = customize('ChatGroupAside', () => {
6
+ return (
7
+ <div className="wxchtf-aside">
8
+ <ChatGroupActions />
9
+ <ChatListPanel />
10
+ </div>
11
+ );
12
+ });
@@ -1,10 +1,17 @@
1
- import { customize } from '../../customize';
2
- import { ChatGroupAside } from './ChatGroupAside';
3
- import { ChatGroupMain } from './ChatGroupMain';
4
-
5
- export const ChatGroupBody = customize('ChatGroupBody', () => (
6
- <div className="wxchtf-body">
7
- <ChatGroupAside />
8
- <ChatGroupMain />
9
- </div>
10
- ));
1
+ import { customize } from '../../customize';
2
+ import { useChatGroupContext } from '../ChatGroupContext';
3
+ import { ChatGroupAside } from './ChatGroupAside';
4
+ import { ChatGroupMain } from './ChatGroupMain';
5
+
6
+ export const ChatGroupBody = customize('ChatGroupBody', () => {
7
+ const { compact, view } = useChatGroupContext();
8
+ const isAsideShown = !compact || !view;
9
+ const isMainShown = !compact || view;
10
+
11
+ return (
12
+ <div className="wxchtf-body">
13
+ {isAsideShown && <ChatGroupAside />}
14
+ {isMainShown && <ChatGroupMain />}
15
+ </div>
16
+ );
17
+ });
@@ -1,3 +1,3 @@
1
- import { customize } from '../../customize';
2
-
3
- export const ChatGroupFooter = customize('ChatGroupFooter', () => <div className="wxchtf-footer"></div>);
1
+ import { customize } from '../../customize';
2
+
3
+ export const ChatGroupFooter = customize('ChatGroupFooter', () => <div className="wxchtf-footer"></div>);
@@ -1,5 +1,5 @@
1
- import { customize } from '../../customize';
2
-
3
- export const ChatGroupHeader = customize('ChatGroupHeader', () => {
4
- return <div className="wxchtf-header"></div>;
5
- });
1
+ import { customize } from '../../customize';
2
+
3
+ export const ChatGroupHeader = customize('ChatGroupHeader', () => {
4
+ return <div className="wxchtf-header"></div>;
5
+ });
@@ -1,19 +1,21 @@
1
- import { customize } from '../../customize';
2
- import { CreateChatPanel } from '../Create';
3
- import { ChatView } from '../../Chat';
4
- import { useChatGroupContext } from '../ChatGroupContext';
5
- import { chatifyApi } from '../../../core';
6
- import { AutoReplyPanel } from '../AutoReply';
7
-
8
- export const ChatGroupMain = customize('ChatGroupMain', () => {
9
- const { chatId, view } = useChatGroupContext();
10
- const chat = chatifyApi.useChatListItem(chatId);
11
-
12
- return (
13
- <div className="wxchtf-main">
14
- {view === 'chat' && chat && <ChatView value={chat} key={chatId} />}
15
- {view === 'new-chat' && <CreateChatPanel />}
16
- {view === 'auto-reply' && <AutoReplyPanel />}
17
- </div>
18
- );
19
- });
1
+ import { customize } from '../../customize';
2
+ import { CreateChatPanel } from '../Create';
3
+ import { ChatView } from '../../Chat';
4
+ import { useChatGroupContext } from '../ChatGroupContext';
5
+ import { chatifyApi } from '../../../core';
6
+ import { AutoReplyPanel } from '../AutoReply';
7
+
8
+ export const ChatGroupMain = customize('ChatGroupMain', () => {
9
+ const { chatId, view, compact, none } = useChatGroupContext();
10
+ const chat = chatifyApi.useChatListItem(chatId);
11
+
12
+ return (
13
+ <div className="wxchtf-main">
14
+ {view === 'chat' && chat && (
15
+ <ChatView value={chat} key={chatId} compact={compact} onBackClick={compact ? none : undefined} />
16
+ )}
17
+ {view === 'new-chat' && <CreateChatPanel />}
18
+ {view === 'auto-reply' && <AutoReplyPanel />}
19
+ </div>
20
+ );
21
+ });
@@ -1,22 +1,22 @@
1
- import { ChatGroupActions } from './ChatGroupActions';
2
- import { ChatGroupAside } from './ChatGroupAside';
3
- import { ChatGroupHeader } from './ChatGroupHeader';
4
- import { ChatGroupFooter } from './ChatGroupFooter';
5
- import { ChatGroupMain } from './ChatGroupMain';
6
- import { ChatGroupBody } from './ChatGroupBody';
7
-
8
- export * from './ChatGroupActions';
9
- export * from './ChatGroupAside';
10
- export * from './ChatGroupHeader';
11
- export * from './ChatGroupFooter';
12
- export * from './ChatGroupMain';
13
- export * from './ChatGroupBody';
14
-
15
- export interface ChatGroupLayoutCustomizeValue {
16
- ChatGroupActions?: typeof ChatGroupActions.Component | null;
17
- ChatGroupAside?: typeof ChatGroupAside.Component | null;
18
- ChatGroupHeader?: typeof ChatGroupHeader.Component | null;
19
- ChatGroupFooter?: typeof ChatGroupFooter.Component | null;
20
- ChatGroupMain?: typeof ChatGroupMain.Component | null;
21
- ChatGroupBody?: typeof ChatGroupBody.Component | null;
22
- }
1
+ import { ChatGroupActions } from './ChatGroupActions';
2
+ import { ChatGroupAside } from './ChatGroupAside';
3
+ import { ChatGroupHeader } from './ChatGroupHeader';
4
+ import { ChatGroupFooter } from './ChatGroupFooter';
5
+ import { ChatGroupMain } from './ChatGroupMain';
6
+ import { ChatGroupBody } from './ChatGroupBody';
7
+
8
+ export * from './ChatGroupActions';
9
+ export * from './ChatGroupAside';
10
+ export * from './ChatGroupHeader';
11
+ export * from './ChatGroupFooter';
12
+ export * from './ChatGroupMain';
13
+ export * from './ChatGroupBody';
14
+
15
+ export interface ChatGroupLayoutCustomizeValue {
16
+ ChatGroupActions?: typeof ChatGroupActions.Component | null;
17
+ ChatGroupAside?: typeof ChatGroupAside.Component | null;
18
+ ChatGroupHeader?: typeof ChatGroupHeader.Component | null;
19
+ ChatGroupFooter?: typeof ChatGroupFooter.Component | null;
20
+ ChatGroupMain?: typeof ChatGroupMain.Component | null;
21
+ ChatGroupBody?: typeof ChatGroupBody.Component | null;
22
+ }
@@ -1,28 +1,28 @@
1
- import { useMemo } from 'react';
2
- import { chatifyApi } from '../../../core';
3
- import { customize } from '../../customize';
4
- import { useChatGroupContext } from '../ChatGroupContext';
5
- import { ChatListValue, ChatList } from '../../common';
6
-
7
- function useData() {
8
- const { data: chats } = chatifyApi.useGetChatListQuery();
9
- return useMemo(
10
- () =>
11
- chats?.map(
12
- (x): ChatListValue => ({
13
- id: x.id,
14
- name: x.name,
15
- lastMessage: x.message,
16
- lastReadMessageId: x.lastReadMessageId,
17
- }),
18
- ) ?? [],
19
- [chats],
20
- );
21
- }
22
-
23
- export const ChatListPanel = customize('ChatListPanel', () => {
24
- const { chatId, openChat } = useChatGroupContext();
25
- const data = useData();
26
-
27
- return <ChatList items={data} selected={chatId} onSelect={openChat} />;
28
- });
1
+ import { useMemo } from 'react';
2
+ import { chatifyApi } from '../../../core';
3
+ import { customize } from '../../customize';
4
+ import { useChatGroupContext } from '../ChatGroupContext';
5
+ import { ChatListValue, ChatList } from '../../common';
6
+
7
+ function useData() {
8
+ const { data: chats } = chatifyApi.useGetChatListQuery();
9
+ return useMemo(
10
+ () =>
11
+ chats?.map(
12
+ (x): ChatListValue => ({
13
+ id: x.id,
14
+ name: x.name,
15
+ lastMessage: x.message,
16
+ lastReadMessageId: x.lastReadMessageId,
17
+ }),
18
+ ) ?? [],
19
+ [chats],
20
+ );
21
+ }
22
+
23
+ export const ChatListPanel = customize('ChatListPanel', () => {
24
+ const { chatId, openChat } = useChatGroupContext();
25
+ const data = useData();
26
+
27
+ return <ChatList items={data} selected={chatId} onSelect={openChat} />;
28
+ });
@@ -1,8 +1,8 @@
1
- import { ChatListCustomizeValue } from '../../common';
2
- import { ChatListPanel } from './ChatListPanel';
3
-
4
- export * from './ChatListPanel';
5
-
6
- export type ChatListPanelCustomizeValue = ChatListCustomizeValue & {
7
- ChatListPanel?: typeof ChatListPanel.Component | null;
8
- };
1
+ import { ChatListCustomizeValue } from '../../common';
2
+ import { ChatListPanel } from './ChatListPanel';
3
+
4
+ export * from './ChatListPanel';
5
+
6
+ export type ChatListPanelCustomizeValue = ChatListCustomizeValue & {
7
+ ChatListPanel?: typeof ChatListPanel.Component | null;
8
+ };
@@ -1,6 +1,6 @@
1
- export * from './AutoReply';
2
- export * from './Create';
3
- export * from './Layout';
4
- export * from './List';
5
- export * from './ChatGroupContext';
6
- export * from './ChatGroupPanel';
1
+ export * from './AutoReply';
2
+ export * from './Create';
3
+ export * from './Layout';
4
+ export * from './List';
5
+ export * from './ChatGroupContext';
6
+ export * from './ChatGroupPanel';
@@ -1,15 +1,15 @@
1
- import { ChatPanel } from './Chat';
2
- import { ChatGroupPanel } from './ChatGroup';
3
- import { ThreadPanel } from './Thread';
4
-
5
- export interface ChatifyType {
6
- Thread: typeof ThreadPanel;
7
- ChatGroup: typeof ChatGroupPanel;
8
- Chat: typeof ChatPanel;
9
- }
10
-
11
- export const Chatify = {
12
- Thread: ThreadPanel,
13
- ChatGroup: ChatGroupPanel,
14
- Chat: ChatPanel,
15
- } as unknown as ChatifyType;
1
+ import { ChatPanel } from './Chat';
2
+ import { ChatGroupPanel } from './ChatGroup';
3
+ import { ThreadPanel } from './Thread';
4
+
5
+ export interface ChatifyType {
6
+ Thread: typeof ThreadPanel;
7
+ ChatGroup: typeof ChatGroupPanel;
8
+ Chat: typeof ChatPanel;
9
+ }
10
+
11
+ export const Chatify = {
12
+ Thread: ThreadPanel,
13
+ ChatGroup: ChatGroupPanel,
14
+ Chat: ChatPanel,
15
+ } as unknown as ChatifyType;
@@ -1,92 +1,96 @@
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 {
34
- value,
35
- hasMore,
36
- messages,
37
- nextLoading,
38
- onNext,
39
- onRead,
40
- onSend,
41
- isReading,
42
- noReadTracking,
43
- onClose,
44
- } = props;
45
-
46
- const { id, active, name, lastReadMessageId } = value;
47
-
48
- const context = useMemo<ConversationContextValue>(
49
- () => ({
50
- id,
51
- name,
52
- active,
53
- lastReadMessageId,
54
- hasMore,
55
- messages,
56
- nextLoading,
57
- onNext,
58
- onRead,
59
- onSend,
60
- isReading,
61
- noReadTracking,
62
- onClose,
63
- }),
64
- [
65
- id,
66
- name,
67
- active,
68
- onNext,
69
- onRead,
70
- onSend,
71
- hasMore,
72
- messages,
73
- nextLoading,
74
- lastReadMessageId,
75
- isReading,
76
- noReadTracking,
77
- onClose,
78
- ],
79
- );
80
-
81
- return (
82
- <ConversationContext.Provider value={context}>
83
- <div className="wxchtf-conversation">
84
- <div className="wxchtf-conversation-main">
85
- <ConversationHeader />
86
- <ConversationBody />
87
- {active && <InputBox />}
88
- </div>
89
- </div>
90
- </ConversationContext.Provider>
91
- );
92
- });
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
+ onBackClick?: () => void;
18
+ }
19
+
20
+ export interface ConversationCustomizeValue
21
+ extends InputBoxCustomizeValue,
22
+ MessageCustomizeValue,
23
+ SendingMessageCustomizeValue,
24
+ SystemMessageCustomizeValue,
25
+ CommonCustomizeValue {
26
+ ConversationActions?: typeof ConversationActions.Component | null;
27
+ ConversationBody?: typeof ConversationBody.Component | null;
28
+ ConversationHeader?: typeof ConversationHeader.Component | null;
29
+ ConversationName?: typeof ConversationName.Component | null;
30
+ flippo?: Flippo;
31
+ }
32
+
33
+ export const Conversation = customize('Conversation', (props: ConversationProps) => {
34
+ const {
35
+ value,
36
+ hasMore,
37
+ messages,
38
+ nextLoading,
39
+ onNext,
40
+ onRead,
41
+ onSend,
42
+ isReading,
43
+ noReadTracking,
44
+ onClose,
45
+ compact,
46
+ onBackClick,
47
+ } = props;
48
+
49
+ const { id, active, name, lastReadMessageId } = value;
50
+
51
+ const context = useMemo<ConversationContextValue>(
52
+ () => ({
53
+ id,
54
+ name,
55
+ active,
56
+ lastReadMessageId,
57
+ hasMore,
58
+ messages,
59
+ nextLoading,
60
+ onNext,
61
+ onRead,
62
+ onSend,
63
+ isReading,
64
+ noReadTracking,
65
+ onClose,
66
+ compact,
67
+ }),
68
+ [
69
+ id,
70
+ name,
71
+ active,
72
+ onNext,
73
+ onRead,
74
+ onSend,
75
+ hasMore,
76
+ messages,
77
+ nextLoading,
78
+ lastReadMessageId,
79
+ isReading,
80
+ noReadTracking,
81
+ onClose,
82
+ ],
83
+ );
84
+
85
+ return (
86
+ <ConversationContext.Provider value={context}>
87
+ <div className="wxchtf-conversation">
88
+ <div className="wxchtf-conversation-main">
89
+ <ConversationHeader onBackClick={onBackClick} />
90
+ <ConversationBody />
91
+ {active && <InputBox />}
92
+ </div>
93
+ </div>
94
+ </ConversationContext.Provider>
95
+ );
96
+ });