@webinex/chatify 2.0.0-alpha12 → 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 (144) 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/core/api/api.d.ts +146 -0
  9. package/dist/types/ui/Chat/ChatContext.d.ts +2 -0
  10. package/dist/types/ui/Chat/ChatPanel.d.ts +7 -0
  11. package/dist/types/ui/Chat/ChatView.d.ts +4 -2
  12. package/dist/types/ui/ChatGroup/ChatGroupContext.d.ts +4 -1
  13. package/dist/types/ui/ChatGroup/ChatGroupPanel.d.ts +21 -2
  14. package/dist/types/ui/Conversation/Conversation.d.ts +1 -0
  15. package/dist/types/ui/Conversation/ConversationContext.d.ts +1 -0
  16. package/dist/types/ui/Conversation/ConversationHeader.d.ts +4 -1
  17. package/dist/types/ui/localizer.d.ts +4 -1
  18. package/dist/types/ui/useCompact.d.ts +4 -0
  19. package/package.json +81 -81
  20. package/src/audit/AuditChatList.tsx +25 -25
  21. package/src/audit/AuditConversationPanel.tsx +49 -48
  22. package/src/audit/AuditPanel.tsx +76 -76
  23. package/src/audit/AuditPanelCustomizeValue.ts +11 -11
  24. package/src/audit/AuditSearch.tsx +89 -89
  25. package/src/audit/AuditSearchValue.tsx +42 -42
  26. package/src/audit/auditApi.tsx +113 -113
  27. package/src/audit/index.d.ts +18 -18
  28. package/src/audit/index.tsx +28 -28
  29. package/src/audit/styles.scss +72 -72
  30. package/src/core/api/api.ts +675 -669
  31. package/src/core/api/baseApi.ts +38 -38
  32. package/src/core/api/index.ts +1 -1
  33. package/src/core/client.ts +298 -298
  34. package/src/core/constants.ts +1 -1
  35. package/src/core/debounce.ts +90 -90
  36. package/src/core/index.ts +4 -4
  37. package/src/core/types.tsx +182 -182
  38. package/src/index.ts +2 -2
  39. package/src/styles/aside.scss +34 -26
  40. package/src/styles/chat-list.scss +138 -138
  41. package/src/styles/chat.scss +11 -11
  42. package/src/styles/conversation.scss +199 -200
  43. package/src/styles/index.scss +227 -220
  44. package/src/styles/input.scss +148 -148
  45. package/src/styles/keyframes.scss +14 -14
  46. package/src/styles/members.scss +30 -13
  47. package/src/styles/mixins.scss +38 -25
  48. package/src/styles/variables.scss +13 -13
  49. package/src/ui/Chat/ChatContext.tsx +32 -30
  50. package/src/ui/Chat/ChatEditableHeaderName.tsx +63 -63
  51. package/src/ui/Chat/ChatHeaderActions.tsx +19 -19
  52. package/src/ui/Chat/ChatPanel.tsx +46 -30
  53. package/src/ui/Chat/ChatView.tsx +122 -115
  54. package/src/ui/Chat/Members/ChatMembersButton.tsx +9 -9
  55. package/src/ui/Chat/Members/ChatMembersPanel.tsx +128 -112
  56. package/src/ui/Chat/Members/ChatMembersPreview.tsx +25 -25
  57. package/src/ui/Chat/Members/index.ts +13 -13
  58. package/src/ui/Chat/index.ts +6 -6
  59. package/src/ui/ChatGroup/AutoReply/AutoReplyButton.tsx +21 -21
  60. package/src/ui/ChatGroup/AutoReply/AutoReplyForm.tsx +50 -50
  61. package/src/ui/ChatGroup/AutoReply/AutoReplyPanel.tsx +94 -94
  62. package/src/ui/ChatGroup/AutoReply/AutoReplyPeriodInput.tsx +22 -22
  63. package/src/ui/ChatGroup/AutoReply/AutoReplyTextInput.tsx +22 -22
  64. package/src/ui/ChatGroup/AutoReply/index.ts +19 -19
  65. package/src/ui/ChatGroup/ChatGroupContext.tsx +63 -61
  66. package/src/ui/ChatGroup/ChatGroupPanel.tsx +110 -75
  67. package/src/ui/ChatGroup/Create/CreateChatButton.tsx +15 -15
  68. package/src/ui/ChatGroup/Create/CreateChatForm.tsx +36 -36
  69. package/src/ui/ChatGroup/Create/CreateChatMemberInput.tsx +65 -65
  70. package/src/ui/ChatGroup/Create/CreateChatNameInput.tsx +25 -25
  71. package/src/ui/ChatGroup/Create/CreateChatPanel.tsx +45 -45
  72. package/src/ui/ChatGroup/Create/index.ts +19 -19
  73. package/src/ui/ChatGroup/Layout/ChatGroupActions.tsx +15 -15
  74. package/src/ui/ChatGroup/Layout/ChatGroupAside.tsx +12 -12
  75. package/src/ui/ChatGroup/Layout/ChatGroupBody.tsx +17 -10
  76. package/src/ui/ChatGroup/Layout/ChatGroupFooter.tsx +3 -3
  77. package/src/ui/ChatGroup/Layout/ChatGroupHeader.tsx +5 -5
  78. package/src/ui/ChatGroup/Layout/ChatGroupMain.tsx +21 -19
  79. package/src/ui/ChatGroup/Layout/index.ts +22 -22
  80. package/src/ui/ChatGroup/List/ChatListPanel.tsx +28 -28
  81. package/src/ui/ChatGroup/List/index.ts +8 -8
  82. package/src/ui/ChatGroup/index.ts +6 -6
  83. package/src/ui/Chatify.tsx +15 -15
  84. package/src/ui/Conversation/Conversation.tsx +96 -92
  85. package/src/ui/Conversation/ConversationActions.tsx +12 -12
  86. package/src/ui/Conversation/ConversationBody.tsx +28 -28
  87. package/src/ui/Conversation/ConversationContext.ts +31 -30
  88. package/src/ui/Conversation/ConversationHeader.tsx +35 -19
  89. package/src/ui/Conversation/ConversationName.tsx +7 -7
  90. package/src/ui/Conversation/InputBox/InputBox.tsx +126 -126
  91. package/src/ui/Conversation/InputBox/InputBoxFile.tsx +38 -38
  92. package/src/ui/Conversation/InputBox/InputBoxFileList.tsx +21 -21
  93. package/src/ui/Conversation/InputBox/InputFilesBox.tsx +78 -78
  94. package/src/ui/Conversation/InputBox/InputSubmitButtonBox.tsx +26 -26
  95. package/src/ui/Conversation/InputBox/InputTextBox.tsx +63 -61
  96. package/src/ui/Conversation/InputBox/index.ts +23 -23
  97. package/src/ui/Conversation/Message/MessageAuthor.tsx +13 -13
  98. package/src/ui/Conversation/Message/MessageBox.tsx +20 -20
  99. package/src/ui/Conversation/Message/MessageContent.tsx +15 -15
  100. package/src/ui/Conversation/Message/MessageFile.tsx +54 -54
  101. package/src/ui/Conversation/Message/MessageFileList.tsx +14 -14
  102. package/src/ui/Conversation/Message/MessageInfoBox.tsx +28 -28
  103. package/src/ui/Conversation/Message/MessageRow.tsx +28 -28
  104. package/src/ui/Conversation/Message/MessageText.tsx +7 -7
  105. package/src/ui/Conversation/Message/index.ts +28 -28
  106. package/src/ui/Conversation/NextObserver/NextMessagesObserver.tsx +47 -47
  107. package/src/ui/Conversation/NextObserver/index.ts +1 -1
  108. package/src/ui/Conversation/ReadObserver/MessageReadObserver.tsx +49 -49
  109. package/src/ui/Conversation/ReadObserver/index.ts +1 -1
  110. package/src/ui/Conversation/SendingMessage/SendingMessageBox.tsx +16 -16
  111. package/src/ui/Conversation/SendingMessage/SendingMessageContent.tsx +13 -13
  112. package/src/ui/Conversation/SendingMessage/SendingMessageInfoBox.tsx +13 -13
  113. package/src/ui/Conversation/SendingMessage/SendingMessageText.tsx +7 -7
  114. package/src/ui/Conversation/SendingMessage/index.ts +16 -16
  115. package/src/ui/Conversation/SystemMessage/SystemMessageBox.tsx +20 -20
  116. package/src/ui/Conversation/SystemMessage/SystemMessageRow.tsx +28 -28
  117. package/src/ui/Conversation/SystemMessage/index.ts +10 -10
  118. package/src/ui/Conversation/index.ts +13 -13
  119. package/src/ui/Thread/ThreadActions.tsx +22 -22
  120. package/src/ui/Thread/ThreadContext.ts +13 -13
  121. package/src/ui/Thread/ThreadPanel.tsx +128 -127
  122. package/src/ui/Thread/index.tsx +3 -3
  123. package/src/ui/color.ts +20 -20
  124. package/src/ui/common/Avatar.tsx +20 -20
  125. package/src/ui/common/ChatList/ChatList.tsx +83 -84
  126. package/src/ui/common/ChatList/ChatListItemAvatar.tsx +22 -22
  127. package/src/ui/common/ChatList/ChatListItemBox.tsx +32 -32
  128. package/src/ui/common/ChatList/ChatListItemLastMessage.tsx +15 -15
  129. package/src/ui/common/ChatList/ChatListItemLastMessageAuthor.tsx +15 -15
  130. package/src/ui/common/ChatList/ChatListItemLastMessageContent.tsx +21 -21
  131. package/src/ui/common/ChatList/ChatListItemLastMessageSentAt.tsx +22 -22
  132. package/src/ui/common/ChatList/ChatListItemName.tsx +8 -8
  133. package/src/ui/common/ChatList/ChatListItemUnreadCount.tsx +12 -12
  134. package/src/ui/common/ChatList/ChatListValue.ts +9 -9
  135. package/src/ui/common/ChatList/index.ts +32 -32
  136. package/src/ui/common/Icon.tsx +48 -48
  137. package/src/ui/common/MessageSkeleton.tsx +20 -20
  138. package/src/ui/common/index.ts +14 -14
  139. package/src/ui/customize.tsx +51 -51
  140. package/src/ui/index.ts +11 -11
  141. package/src/ui/localizer.tsx +148 -137
  142. package/src/ui/useCompact.tsx +32 -0
  143. package/src/ui/useFormatter.tsx +17 -17
  144. 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
+ });