stream-chat-react-native-core 8.12.1 → 8.12.2
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.
- package/lib/commonjs/components/Message/MessageSimple/MessageWrapper.js +16 -23
- package/lib/commonjs/components/Message/MessageSimple/MessageWrapper.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageFlashList.js +12 -9
- package/lib/commonjs/components/MessageList/MessageFlashList.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +14 -9
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useMessageDateSeparator.js +1 -10
- package/lib/commonjs/components/MessageList/hooks/useMessageDateSeparator.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useMessageGroupStyles.js +3 -13
- package/lib/commonjs/components/MessageList/hooks/useMessageGroupStyles.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js +1 -16
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/commonjs/components/Thread/Thread.js +4 -2
- package/lib/commonjs/components/Thread/Thread.js.map +1 -1
- package/lib/commonjs/contexts/messageListItemContext/MessageListItemContext.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Message/MessageSimple/MessageWrapper.js +16 -23
- package/lib/module/components/Message/MessageSimple/MessageWrapper.js.map +1 -1
- package/lib/module/components/MessageList/MessageFlashList.js +12 -9
- package/lib/module/components/MessageList/MessageFlashList.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +14 -9
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useMessageDateSeparator.js +1 -10
- package/lib/module/components/MessageList/hooks/useMessageDateSeparator.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useMessageGroupStyles.js +3 -13
- package/lib/module/components/MessageList/hooks/useMessageGroupStyles.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useMessageList.js +1 -16
- package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/module/components/Thread/Thread.js +4 -2
- package/lib/module/components/Thread/Thread.js.map +1 -1
- package/lib/module/contexts/messageListItemContext/MessageListItemContext.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageWrapper.d.ts +2 -0
- package/lib/typescript/components/Message/MessageSimple/MessageWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageFlashList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/hooks/useMessageDateSeparator.d.ts +2 -3
- package/lib/typescript/components/MessageList/hooks/useMessageDateSeparator.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/hooks/useMessageGroupStyles.d.ts +3 -3
- package/lib/typescript/components/MessageList/hooks/useMessageGroupStyles.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +0 -2
- package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts +2 -2
- package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts.map +1 -1
- package/lib/typescript/components/Thread/Thread.d.ts +1 -0
- package/lib/typescript/components/Thread/Thread.d.ts.map +1 -1
- package/lib/typescript/contexts/messageListItemContext/MessageListItemContext.d.ts +0 -5
- package/lib/typescript/contexts/messageListItemContext/MessageListItemContext.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/Message/MessageSimple/MessageWrapper.tsx +8 -19
- package/src/components/MessageList/MessageFlashList.tsx +17 -18
- package/src/components/MessageList/MessageList.tsx +21 -18
- package/src/components/MessageList/__tests__/useMessageDateSeparator.test.ts +5 -13
- package/src/components/MessageList/hooks/useMessageDateSeparator.ts +3 -17
- package/src/components/MessageList/hooks/useMessageGroupStyles.ts +6 -21
- package/src/components/MessageList/hooks/useMessageList.ts +2 -14
- package/src/components/MessageList/utils/getGroupStyles.ts +2 -2
- package/src/components/Thread/Thread.tsx +3 -1
- package/src/contexts/messageListItemContext/MessageListItemContext.tsx +0 -5
- package/src/version.json +1 -1
|
@@ -2,15 +2,12 @@ import { renderHook } from '@testing-library/react-native';
|
|
|
2
2
|
|
|
3
3
|
import { LocalMessage } from 'stream-chat';
|
|
4
4
|
|
|
5
|
-
import { MessagePreviousAndNextMessageStore } from '../../../state-store/message-list-prev-next-state';
|
|
6
5
|
import { useMessageDateSeparator } from '../hooks/useMessageDateSeparator';
|
|
7
6
|
|
|
8
7
|
describe('useMessageDateSeparator', () => {
|
|
9
|
-
let messageListPreviousAndNextMessageStore: MessagePreviousAndNextMessageStore;
|
|
10
8
|
let messages: LocalMessage[];
|
|
11
9
|
|
|
12
10
|
beforeEach(() => {
|
|
13
|
-
messageListPreviousAndNextMessageStore = new MessagePreviousAndNextMessageStore();
|
|
14
11
|
messages = [
|
|
15
12
|
{
|
|
16
13
|
created_at: new Date('2020-01-01T00:00:00.000Z'),
|
|
@@ -28,13 +25,10 @@ describe('useMessageDateSeparator', () => {
|
|
|
28
25
|
text: 'Hello World',
|
|
29
26
|
},
|
|
30
27
|
] as LocalMessage[];
|
|
31
|
-
messageListPreviousAndNextMessageStore.setMessageListPreviousAndNextMessage({ messages });
|
|
32
28
|
});
|
|
33
29
|
|
|
34
30
|
it('should return undefined if no message is passed', () => {
|
|
35
|
-
const { result } = renderHook(() =>
|
|
36
|
-
useMessageDateSeparator({ message: undefined, messageListPreviousAndNextMessageStore }),
|
|
37
|
-
);
|
|
31
|
+
const { result } = renderHook(() => useMessageDateSeparator({ message: undefined }));
|
|
38
32
|
expect(result.current).toBeUndefined();
|
|
39
33
|
});
|
|
40
34
|
|
|
@@ -43,7 +37,7 @@ describe('useMessageDateSeparator', () => {
|
|
|
43
37
|
useMessageDateSeparator({
|
|
44
38
|
hideDateSeparators: true,
|
|
45
39
|
message: messages[1],
|
|
46
|
-
|
|
40
|
+
previousMessage: messages[0],
|
|
47
41
|
}),
|
|
48
42
|
);
|
|
49
43
|
expect(result.current).toBeUndefined();
|
|
@@ -51,7 +45,7 @@ describe('useMessageDateSeparator', () => {
|
|
|
51
45
|
|
|
52
46
|
it('should return the date separator for a message if previous message is not the same day', () => {
|
|
53
47
|
const { result } = renderHook(() =>
|
|
54
|
-
useMessageDateSeparator({ message: messages[1],
|
|
48
|
+
useMessageDateSeparator({ message: messages[1], previousMessage: messages[0] }),
|
|
55
49
|
);
|
|
56
50
|
expect(result.current).toBe(messages[1].created_at);
|
|
57
51
|
});
|
|
@@ -69,14 +63,12 @@ describe('useMessageDateSeparator', () => {
|
|
|
69
63
|
text: 'World',
|
|
70
64
|
},
|
|
71
65
|
] as LocalMessage[];
|
|
72
|
-
const messageListPreviousAndNextMessageStore = new MessagePreviousAndNextMessageStore();
|
|
73
|
-
messageListPreviousAndNextMessageStore.setMessageListPreviousAndNextMessage({ messages });
|
|
74
66
|
const { result: resultOfFirstMessage } = renderHook(() =>
|
|
75
|
-
useMessageDateSeparator({ message: messages[0],
|
|
67
|
+
useMessageDateSeparator({ message: messages[0], previousMessage: undefined }),
|
|
76
68
|
);
|
|
77
69
|
expect(resultOfFirstMessage.current).toBe(messages[0].created_at);
|
|
78
70
|
const { result: resultOfSecondMessage } = renderHook(() =>
|
|
79
|
-
useMessageDateSeparator({ message: messages[1],
|
|
71
|
+
useMessageDateSeparator({ message: messages[1], previousMessage: messages[0] }),
|
|
80
72
|
);
|
|
81
73
|
expect(resultOfSecondMessage.current).toBeUndefined();
|
|
82
74
|
});
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
2
|
|
|
3
3
|
import { LocalMessage } from 'stream-chat';
|
|
4
4
|
|
|
5
|
-
import { useStateStore } from '../../../hooks/useStateStore';
|
|
6
|
-
import {
|
|
7
|
-
MessagePreviousAndNextMessageStore,
|
|
8
|
-
MessagePreviousAndNextMessageStoreType,
|
|
9
|
-
} from '../../../state-store/message-list-prev-next-state';
|
|
10
|
-
|
|
11
5
|
export const getDateSeparatorValue = ({
|
|
12
6
|
hideDateSeparators,
|
|
13
7
|
message,
|
|
@@ -37,20 +31,12 @@ export const getDateSeparatorValue = ({
|
|
|
37
31
|
export const useMessageDateSeparator = ({
|
|
38
32
|
hideDateSeparators,
|
|
39
33
|
message,
|
|
40
|
-
|
|
34
|
+
previousMessage,
|
|
41
35
|
}: {
|
|
42
36
|
hideDateSeparators?: boolean;
|
|
43
37
|
message?: LocalMessage;
|
|
44
|
-
|
|
38
|
+
previousMessage?: LocalMessage;
|
|
45
39
|
}) => {
|
|
46
|
-
const selector = useCallback(
|
|
47
|
-
(state: MessagePreviousAndNextMessageStoreType) => ({
|
|
48
|
-
previousMessage: message ? state.messageList[message.id]?.previousMessage : undefined,
|
|
49
|
-
}),
|
|
50
|
-
[message],
|
|
51
|
-
);
|
|
52
|
-
const { previousMessage } = useStateStore(messageListPreviousAndNextMessageStore.state, selector);
|
|
53
|
-
|
|
54
40
|
const dateSeparatorDate = useMemo(() => {
|
|
55
41
|
if (!message && !previousMessage) {
|
|
56
42
|
return undefined;
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
2
|
|
|
3
3
|
import { LocalMessage } from 'stream-chat';
|
|
4
4
|
|
|
5
5
|
import { useMessageDateSeparator } from './useMessageDateSeparator';
|
|
6
6
|
|
|
7
7
|
import { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';
|
|
8
|
-
import { useStateStore } from '../../../hooks/useStateStore';
|
|
9
|
-
import {
|
|
10
|
-
MessagePreviousAndNextMessageStore,
|
|
11
|
-
MessagePreviousAndNextMessageStoreType,
|
|
12
|
-
} from '../../../state-store/message-list-prev-next-state';
|
|
13
8
|
import { getGroupStyle } from '../utils/getGroupStyles';
|
|
14
9
|
|
|
15
10
|
/**
|
|
@@ -20,7 +15,8 @@ export const useMessageGroupStyles = ({
|
|
|
20
15
|
dateSeparatorDate,
|
|
21
16
|
maxTimeBetweenGroupedMessages,
|
|
22
17
|
message,
|
|
23
|
-
|
|
18
|
+
previousMessage,
|
|
19
|
+
nextMessage,
|
|
24
20
|
getMessageGroupStyle = getGroupStyle,
|
|
25
21
|
}: {
|
|
26
22
|
noGroupByUser?: boolean;
|
|
@@ -28,24 +24,13 @@ export const useMessageGroupStyles = ({
|
|
|
28
24
|
dateSeparatorDate?: Date;
|
|
29
25
|
maxTimeBetweenGroupedMessages?: number;
|
|
30
26
|
message: LocalMessage;
|
|
31
|
-
|
|
27
|
+
previousMessage?: LocalMessage;
|
|
28
|
+
nextMessage?: LocalMessage;
|
|
32
29
|
}) => {
|
|
33
|
-
const selector = useCallback(
|
|
34
|
-
(state: MessagePreviousAndNextMessageStoreType) => ({
|
|
35
|
-
nextMessage: state.messageList[message.id]?.nextMessage,
|
|
36
|
-
previousMessage: state.messageList[message.id]?.previousMessage,
|
|
37
|
-
}),
|
|
38
|
-
[message.id],
|
|
39
|
-
);
|
|
40
|
-
const { previousMessage, nextMessage } = useStateStore(
|
|
41
|
-
messageListPreviousAndNextMessageStore.state,
|
|
42
|
-
selector,
|
|
43
|
-
);
|
|
44
|
-
|
|
45
30
|
// This is needed to calculate the group styles for the next message
|
|
46
31
|
const nextMessageDateSeparatorDate = useMessageDateSeparator({
|
|
47
32
|
message: nextMessage,
|
|
48
|
-
|
|
33
|
+
previousMessage: message,
|
|
49
34
|
});
|
|
50
35
|
|
|
51
36
|
const groupStyles = useMemo(() => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useMemo, useRef } from 'react';
|
|
2
2
|
|
|
3
3
|
import type { LocalMessage } from 'stream-chat';
|
|
4
4
|
|
|
@@ -12,7 +12,6 @@ import { usePaginatedMessageListContext } from '../../../contexts/paginatedMessa
|
|
|
12
12
|
import { useThreadContext } from '../../../contexts/threadContext/ThreadContext';
|
|
13
13
|
|
|
14
14
|
import { useRAFCoalescedValue } from '../../../hooks';
|
|
15
|
-
import { MessagePreviousAndNextMessageStore } from '../../../state-store/message-list-prev-next-state';
|
|
16
15
|
import { DateSeparators, getDateSeparators } from '../utils/getDateSeparators';
|
|
17
16
|
import { getGroupStyles } from '../utils/getGroupStyles';
|
|
18
17
|
|
|
@@ -70,9 +69,6 @@ export const useMessageList = (params: UseMessageListParams) => {
|
|
|
70
69
|
const { messages, viewabilityChangedCallback } = usePaginatedMessageListContext();
|
|
71
70
|
const { threadMessages } = useThreadContext();
|
|
72
71
|
const messageList = threadList ? threadMessages : messages;
|
|
73
|
-
const [messageListPreviousAndNextMessageStore] = useState(
|
|
74
|
-
() => new MessagePreviousAndNextMessageStore(),
|
|
75
|
-
);
|
|
76
72
|
|
|
77
73
|
const processedMessageList = useMemo<LocalMessage[]>(() => {
|
|
78
74
|
const newMessageList = [];
|
|
@@ -94,13 +90,6 @@ export const useMessageList = (params: UseMessageListParams) => {
|
|
|
94
90
|
return newMessageList;
|
|
95
91
|
}, [messageList, deletedMessagesVisibilityType, client.userID, isFlashList]);
|
|
96
92
|
|
|
97
|
-
useEffect(() => {
|
|
98
|
-
messageListPreviousAndNextMessageStore.setMessageListPreviousAndNextMessage({
|
|
99
|
-
isFlashList,
|
|
100
|
-
messages: processedMessageList,
|
|
101
|
-
});
|
|
102
|
-
}, [processedMessageList, messageListPreviousAndNextMessageStore, isFlashList]);
|
|
103
|
-
|
|
104
93
|
/**
|
|
105
94
|
* @deprecated use `useDateSeparator` hook instead directly in the Message.
|
|
106
95
|
*/
|
|
@@ -156,13 +145,12 @@ export const useMessageList = (params: UseMessageListParams) => {
|
|
|
156
145
|
dateSeparatorsRef,
|
|
157
146
|
/** Message group styles */
|
|
158
147
|
messageGroupStylesRef,
|
|
159
|
-
messageListPreviousAndNextMessageStore,
|
|
160
148
|
/** Messages enriched with dates/readby/groups and also reversed in order */
|
|
161
149
|
processedMessageList: data,
|
|
162
150
|
/** Raw messages from the channel state */
|
|
163
151
|
rawMessageList: messageList,
|
|
164
152
|
viewabilityChangedCallback,
|
|
165
153
|
}),
|
|
166
|
-
[data, messageList,
|
|
154
|
+
[data, messageList, viewabilityChangedCallback],
|
|
167
155
|
);
|
|
168
156
|
};
|
|
@@ -10,8 +10,8 @@ import type { GroupType } from '../hooks/useMessageList';
|
|
|
10
10
|
|
|
11
11
|
export type MessageGroupStylesParams = {
|
|
12
12
|
message: LocalMessage;
|
|
13
|
-
previousMessage
|
|
14
|
-
nextMessage
|
|
13
|
+
previousMessage?: LocalMessage;
|
|
14
|
+
nextMessage?: LocalMessage;
|
|
15
15
|
maxTimeBetweenGroupedMessages?: number;
|
|
16
16
|
dateSeparatorDate?: Date;
|
|
17
17
|
nextMessageDateSeparatorDate?: Date;
|
|
@@ -68,6 +68,7 @@ type ThreadPropsWithContext = Pick<ChatContextValue, 'client'> &
|
|
|
68
68
|
* Call custom function on closing thread if handling thread state elsewhere
|
|
69
69
|
*/
|
|
70
70
|
onThreadDismount?: () => void;
|
|
71
|
+
shouldUseFlashList?: boolean;
|
|
71
72
|
};
|
|
72
73
|
|
|
73
74
|
const ThreadWithContext = (props: ThreadPropsWithContext) => {
|
|
@@ -86,6 +87,7 @@ const ThreadWithContext = (props: ThreadPropsWithContext) => {
|
|
|
86
87
|
parentMessagePreventPress = true,
|
|
87
88
|
thread,
|
|
88
89
|
threadInstance,
|
|
90
|
+
shouldUseFlashList = false,
|
|
89
91
|
} = props;
|
|
90
92
|
|
|
91
93
|
useEffect(() => {
|
|
@@ -125,7 +127,7 @@ const ThreadWithContext = (props: ThreadPropsWithContext) => {
|
|
|
125
127
|
|
|
126
128
|
return (
|
|
127
129
|
<React.Fragment key={`thread-${thread.id}`}>
|
|
128
|
-
{FlashList ? (
|
|
130
|
+
{FlashList && shouldUseFlashList ? (
|
|
129
131
|
<MessageFlashList
|
|
130
132
|
HeaderComponent={MemoizedThreadFooterComponent}
|
|
131
133
|
threadList
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { createContext, PropsWithChildren, useContext } from 'react';
|
|
2
2
|
|
|
3
3
|
import { MessageListProps } from '../../components/MessageList/MessageList';
|
|
4
|
-
import { MessagePreviousAndNextMessageStore } from '../../state-store/message-list-prev-next-state';
|
|
5
4
|
|
|
6
5
|
import { Theme } from '../themeContext/utils/theme';
|
|
7
6
|
import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
|
|
@@ -15,10 +14,6 @@ export type MessageListItemContextValue = {
|
|
|
15
14
|
* @returns void
|
|
16
15
|
*/
|
|
17
16
|
goToMessage: (messageId: string) => void;
|
|
18
|
-
/**
|
|
19
|
-
* Store to get the previous and next message in the message list
|
|
20
|
-
*/
|
|
21
|
-
messageListPreviousAndNextMessageStore: MessagePreviousAndNextMessageStore;
|
|
22
17
|
/**
|
|
23
18
|
* Theme to use for the message list item
|
|
24
19
|
*/
|
package/src/version.json
CHANGED