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.
Files changed (60) hide show
  1. package/lib/commonjs/components/Message/MessageSimple/MessageWrapper.js +16 -23
  2. package/lib/commonjs/components/Message/MessageSimple/MessageWrapper.js.map +1 -1
  3. package/lib/commonjs/components/MessageList/MessageFlashList.js +12 -9
  4. package/lib/commonjs/components/MessageList/MessageFlashList.js.map +1 -1
  5. package/lib/commonjs/components/MessageList/MessageList.js +14 -9
  6. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  7. package/lib/commonjs/components/MessageList/hooks/useMessageDateSeparator.js +1 -10
  8. package/lib/commonjs/components/MessageList/hooks/useMessageDateSeparator.js.map +1 -1
  9. package/lib/commonjs/components/MessageList/hooks/useMessageGroupStyles.js +3 -13
  10. package/lib/commonjs/components/MessageList/hooks/useMessageGroupStyles.js.map +1 -1
  11. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +1 -16
  12. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  13. package/lib/commonjs/components/Thread/Thread.js +4 -2
  14. package/lib/commonjs/components/Thread/Thread.js.map +1 -1
  15. package/lib/commonjs/contexts/messageListItemContext/MessageListItemContext.js.map +1 -1
  16. package/lib/commonjs/version.json +1 -1
  17. package/lib/module/components/Message/MessageSimple/MessageWrapper.js +16 -23
  18. package/lib/module/components/Message/MessageSimple/MessageWrapper.js.map +1 -1
  19. package/lib/module/components/MessageList/MessageFlashList.js +12 -9
  20. package/lib/module/components/MessageList/MessageFlashList.js.map +1 -1
  21. package/lib/module/components/MessageList/MessageList.js +14 -9
  22. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  23. package/lib/module/components/MessageList/hooks/useMessageDateSeparator.js +1 -10
  24. package/lib/module/components/MessageList/hooks/useMessageDateSeparator.js.map +1 -1
  25. package/lib/module/components/MessageList/hooks/useMessageGroupStyles.js +3 -13
  26. package/lib/module/components/MessageList/hooks/useMessageGroupStyles.js.map +1 -1
  27. package/lib/module/components/MessageList/hooks/useMessageList.js +1 -16
  28. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  29. package/lib/module/components/Thread/Thread.js +4 -2
  30. package/lib/module/components/Thread/Thread.js.map +1 -1
  31. package/lib/module/contexts/messageListItemContext/MessageListItemContext.js.map +1 -1
  32. package/lib/module/version.json +1 -1
  33. package/lib/typescript/components/Message/MessageSimple/MessageWrapper.d.ts +2 -0
  34. package/lib/typescript/components/Message/MessageSimple/MessageWrapper.d.ts.map +1 -1
  35. package/lib/typescript/components/MessageList/MessageFlashList.d.ts.map +1 -1
  36. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  37. package/lib/typescript/components/MessageList/hooks/useMessageDateSeparator.d.ts +2 -3
  38. package/lib/typescript/components/MessageList/hooks/useMessageDateSeparator.d.ts.map +1 -1
  39. package/lib/typescript/components/MessageList/hooks/useMessageGroupStyles.d.ts +3 -3
  40. package/lib/typescript/components/MessageList/hooks/useMessageGroupStyles.d.ts.map +1 -1
  41. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +0 -2
  42. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
  43. package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts +2 -2
  44. package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts.map +1 -1
  45. package/lib/typescript/components/Thread/Thread.d.ts +1 -0
  46. package/lib/typescript/components/Thread/Thread.d.ts.map +1 -1
  47. package/lib/typescript/contexts/messageListItemContext/MessageListItemContext.d.ts +0 -5
  48. package/lib/typescript/contexts/messageListItemContext/MessageListItemContext.d.ts.map +1 -1
  49. package/package.json +2 -2
  50. package/src/components/Message/MessageSimple/MessageWrapper.tsx +8 -19
  51. package/src/components/MessageList/MessageFlashList.tsx +17 -18
  52. package/src/components/MessageList/MessageList.tsx +21 -18
  53. package/src/components/MessageList/__tests__/useMessageDateSeparator.test.ts +5 -13
  54. package/src/components/MessageList/hooks/useMessageDateSeparator.ts +3 -17
  55. package/src/components/MessageList/hooks/useMessageGroupStyles.ts +6 -21
  56. package/src/components/MessageList/hooks/useMessageList.ts +2 -14
  57. package/src/components/MessageList/utils/getGroupStyles.ts +2 -2
  58. package/src/components/Thread/Thread.tsx +3 -1
  59. package/src/contexts/messageListItemContext/MessageListItemContext.tsx +0 -5
  60. 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
- messageListPreviousAndNextMessageStore,
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], messageListPreviousAndNextMessageStore }),
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], messageListPreviousAndNextMessageStore }),
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], messageListPreviousAndNextMessageStore }),
71
+ useMessageDateSeparator({ message: messages[1], previousMessage: messages[0] }),
80
72
  );
81
73
  expect(resultOfSecondMessage.current).toBeUndefined();
82
74
  });
@@ -1,13 +1,7 @@
1
- import { useCallback, useMemo } from 'react';
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
- messageListPreviousAndNextMessageStore,
34
+ previousMessage,
41
35
  }: {
42
36
  hideDateSeparators?: boolean;
43
37
  message?: LocalMessage;
44
- messageListPreviousAndNextMessageStore: MessagePreviousAndNextMessageStore;
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 { useCallback, useMemo } from 'react';
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
- messageListPreviousAndNextMessageStore,
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
- messageListPreviousAndNextMessageStore: MessagePreviousAndNextMessageStore;
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
- messageListPreviousAndNextMessageStore,
33
+ previousMessage: message,
49
34
  });
50
35
 
51
36
  const groupStyles = useMemo(() => {
@@ -1,4 +1,4 @@
1
- import { useEffect, useMemo, useRef, useState } from 'react';
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, messageListPreviousAndNextMessageStore, viewabilityChangedCallback],
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: LocalMessage;
14
- nextMessage: LocalMessage;
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
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "8.12.1"
2
+ "version": "8.12.2"
3
3
  }