stream-chat-react-native-core 9.4.0-beta.1 → 9.4.0-beta.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.
@@ -1,5 +1,5 @@
1
1
  import React, { useMemo } from 'react';
2
- import { Dimensions, StyleSheet, View, ViewStyle } from 'react-native';
2
+ import { Dimensions, StyleSheet, View } from 'react-native';
3
3
 
4
4
  import { SwipableMessageWrapper } from './MessageBubble';
5
5
 
@@ -22,25 +22,7 @@ import { FileTypes } from '../../../types/types';
22
22
  import { checkMessageEquality, checkQuotedMessageEquality } from '../../../utils/utils';
23
23
  import { useMessageData } from '../hooks/useMessageData';
24
24
 
25
- type GroupType = 'single' | 'top' | 'middle' | 'bottom' | undefined;
26
-
27
- const useStyles = ({
28
- alignment,
29
- isVeryLastMessage,
30
- messageGroupedSingle,
31
- messageGroupedBottom,
32
- messageGroupedTop,
33
- messageGroupedMiddle,
34
- enableMessageGroupingByUser,
35
- }: {
36
- alignment: Alignment;
37
- isVeryLastMessage: boolean;
38
- messageGroupedSingle: boolean;
39
- messageGroupedBottom: boolean;
40
- messageGroupedTop: boolean;
41
- messageGroupedMiddle: boolean;
42
- enableMessageGroupingByUser: boolean;
43
- }) => {
25
+ const useStyles = ({ alignment }: { alignment: Alignment }) => {
44
26
  const {
45
27
  theme: {
46
28
  messageItemView: {
@@ -53,24 +35,11 @@ const useStyles = ({
53
35
  repliesContainer,
54
36
  leftAlignItems,
55
37
  rightAlignItems,
56
- messageGroupedSingleStyles,
57
- messageGroupedBottomStyles,
58
- messageGroupedTopStyles,
59
- messageGroupedMiddleStyles,
60
- lastMessageContainer,
61
38
  },
62
39
  },
63
40
  } = useTheme();
64
41
 
65
- const groupType: GroupType = useMemo(() => {
66
- if (messageGroupedSingle) return 'single';
67
- if (messageGroupedTop) return 'top';
68
- if (messageGroupedMiddle) return 'middle';
69
- if (messageGroupedBottom) return 'bottom';
70
- return undefined;
71
- }, [messageGroupedSingle, messageGroupedTop, messageGroupedMiddle, messageGroupedBottom]);
72
-
73
- const styles = useMemo(
42
+ return useMemo(
74
43
  () =>
75
44
  StyleSheet.create({
76
45
  baseContainer: {
@@ -129,73 +98,6 @@ const useStyles = ({
129
98
  rightAlignItems,
130
99
  ],
131
100
  );
132
-
133
- const groupStylesMap = useMemo(() => {
134
- return {
135
- single: {
136
- paddingVertical: primitives.spacingXs,
137
- ...messageGroupedSingleStyles,
138
- },
139
- top: {
140
- paddingTop: primitives.spacingXs,
141
- paddingBottom: primitives.spacingXxs,
142
- ...messageGroupedTopStyles,
143
- },
144
- middle: {
145
- paddingBottom: primitives.spacingXxs,
146
- ...messageGroupedMiddleStyles,
147
- },
148
- bottom: {
149
- paddingBottom: primitives.spacingXs,
150
- ...messageGroupedBottomStyles,
151
- },
152
- };
153
- }, [
154
- messageGroupedBottomStyles,
155
- messageGroupedMiddleStyles,
156
- messageGroupedSingleStyles,
157
- messageGroupedTopStyles,
158
- ]);
159
-
160
- const containerStyle = useMemo(() => {
161
- let results: ViewStyle = styles.baseContainer;
162
-
163
- if (groupType) {
164
- results = {
165
- ...results,
166
- ...groupStylesMap[groupType],
167
- };
168
- }
169
-
170
- if (isVeryLastMessage && enableMessageGroupingByUser) {
171
- results = {
172
- ...results,
173
- marginBottom: primitives.spacingSm,
174
- ...lastMessageContainer,
175
- };
176
- }
177
-
178
- return results;
179
- }, [
180
- styles.baseContainer,
181
- groupStylesMap,
182
- groupType,
183
- isVeryLastMessage,
184
- enableMessageGroupingByUser,
185
- lastMessageContainer,
186
- ]);
187
-
188
- return {
189
- container: containerStyle,
190
- bubbleContentContainer: styles.bubbleContentContainer,
191
- bubbleErrorContainer: styles.bubbleErrorContainer,
192
- bubbleReactionListTopContainer: styles.bubbleReactionListTopContainer,
193
- bubbleWrapper: styles.bubbleWrapper,
194
- contentContainer: styles.contentContainer,
195
- repliesContainer: styles.repliesContainer,
196
- leftAlignItems: styles.leftAlignItems,
197
- rightAlignItems: styles.rightAlignItems,
198
- };
199
101
  };
200
102
 
201
103
  export type MessageItemViewPropsWithContext = Pick<
@@ -232,7 +134,6 @@ const MessageItemViewWithContext = (props: MessageItemViewPropsWithContext) => {
232
134
  channel,
233
135
  contextMenuAnchorRef,
234
136
  customMessageSwipeAction,
235
- enableMessageGroupingByUser,
236
137
  enableSwipeToReply,
237
138
  groupStyles,
238
139
  hasAttachmentActions,
@@ -273,22 +174,10 @@ const MessageItemViewWithContext = (props: MessageItemViewPropsWithContext) => {
273
174
  isMessageReceivedOrErrorType,
274
175
  isMessageTypeDeleted,
275
176
  isVeryLastMessage,
276
- messageGroupedSingle,
277
- messageGroupedBottom,
278
- messageGroupedTop,
279
177
  messageGroupedSingleOrBottom,
280
- messageGroupedMiddle,
281
178
  } = useMessageData({});
282
179
 
283
- const styles = useStyles({
284
- alignment,
285
- isVeryLastMessage,
286
- messageGroupedSingle,
287
- messageGroupedBottom,
288
- messageGroupedTop,
289
- messageGroupedMiddle,
290
- enableMessageGroupingByUser,
291
- });
180
+ const styles = useStyles({ alignment });
292
181
 
293
182
  const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;
294
183
  const hasVisibleQuotedReply = !!message.quoted_message && !hasAttachmentActions;
@@ -324,7 +213,7 @@ const MessageItemViewWithContext = (props: MessageItemViewPropsWithContext) => {
324
213
  });
325
214
 
326
215
  const itemViewContent = (
327
- <View pointerEvents='box-none' style={styles.container} testID='message-item-view-wrapper'>
216
+ <View pointerEvents='box-none' style={styles.baseContainer} testID='message-item-view-wrapper'>
328
217
  {alignment === 'left' ? <MessageAuthor /> : null}
329
218
  {isMessageTypeDeleted ? (
330
219
  <MessageDeleted date={message.created_at} groupStyle={groupStyle} />
@@ -223,38 +223,47 @@ describe('MessageItemView', () => {
223
223
  });
224
224
  });
225
225
 
226
- it('applies correct styles for when group styles are not single or bottom', async () => {
226
+ it('keeps message-item-view-wrapper free of group-positional padding', async () => {
227
227
  const user = generateUser();
228
228
  const message = generateMessage({ user });
229
229
 
230
230
  renderMessage({ groupStyles: ['top'], message });
231
231
 
232
232
  await waitFor(() => {
233
- expect(screen.getByTestId('message-item-view-wrapper').props.style).toMatchObject({
233
+ const innerStyle = screen.getByTestId('message-item-view-wrapper').props.style;
234
+ expect(innerStyle).toMatchObject({
234
235
  alignItems: 'flex-end',
235
236
  gap: 8,
236
237
  flexDirection: 'row',
237
- paddingTop: 8,
238
- paddingBottom: 4,
239
238
  });
239
+ expect(innerStyle.paddingTop).toBeUndefined();
240
+ expect(innerStyle.paddingBottom).toBeUndefined();
240
241
  });
241
242
  });
242
243
 
243
- it('applies correct styles for when group styles are single/bottom and not last message', async () => {
244
+ it('hoists the per-group padding delta onto message-wrapper for top messages', async () => {
244
245
  const user = generateUser();
245
246
  const message = generateMessage({ user });
246
247
 
247
- renderMessage({ message });
248
+ renderMessage({ groupStyles: ['top'], message });
248
249
 
249
250
  await waitFor(() => {
250
- const data = screen.getByTestId('message-item-view-wrapper').props.style;
251
+ expect(screen.getByTestId('message-wrapper').props.style).toEqual(
252
+ expect.arrayContaining([expect.objectContaining({ paddingTop: 8 })]),
253
+ );
254
+ });
255
+ });
251
256
 
252
- expect(data).toMatchObject({
253
- alignItems: 'flex-end',
254
- gap: 8,
255
- flexDirection: 'row',
256
- paddingBottom: 8,
257
- });
257
+ it('hoists the per-group padding delta onto message-wrapper for bottom messages', async () => {
258
+ const user = generateUser();
259
+ const message = generateMessage({ user });
260
+
261
+ renderMessage({ message });
262
+
263
+ await waitFor(() => {
264
+ expect(screen.getByTestId('message-wrapper').props.style).toEqual(
265
+ expect.arrayContaining([expect.objectContaining({ paddingBottom: 8 })]),
266
+ );
258
267
  });
259
268
  });
260
269
 
@@ -78,7 +78,7 @@ const useStyles = () => {
78
78
  StyleSheet.create({
79
79
  container: {
80
80
  borderRadius: primitives.radiusLg,
81
- marginTop: 6,
81
+ marginTop: 8,
82
82
  backgroundColor: semantics.backgroundCoreElevation2,
83
83
  borderWidth: 1,
84
84
  borderColor: semantics.borderCoreDefault,
@@ -337,6 +337,7 @@ exports[`Thread should match thread snapshot 1`] = `
337
337
  ],
338
338
  {
339
339
  "paddingHorizontal": 16,
340
+ "paddingVertical": 8,
340
341
  },
341
342
  ]
342
343
  }
@@ -370,7 +371,6 @@ exports[`Thread should match thread snapshot 1`] = `
370
371
  "alignItems": "flex-end",
371
372
  "flexDirection": "row",
372
373
  "gap": 8,
373
- "paddingVertical": 8,
374
374
  "width": "100%",
375
375
  }
376
376
  }
@@ -671,6 +671,7 @@ exports[`Thread should match thread snapshot 1`] = `
671
671
  ],
672
672
  {
673
673
  "paddingHorizontal": 16,
674
+ "paddingVertical": 8,
674
675
  },
675
676
  ]
676
677
  }
@@ -704,7 +705,6 @@ exports[`Thread should match thread snapshot 1`] = `
704
705
  "alignItems": "flex-end",
705
706
  "flexDirection": "row",
706
707
  "gap": 8,
707
- "paddingVertical": 8,
708
708
  "width": "100%",
709
709
  }
710
710
  }
@@ -1039,6 +1039,7 @@ exports[`Thread should match thread snapshot 1`] = `
1039
1039
  ],
1040
1040
  {
1041
1041
  "paddingHorizontal": 16,
1042
+ "paddingVertical": 8,
1042
1043
  },
1043
1044
  ]
1044
1045
  }
@@ -1072,7 +1073,6 @@ exports[`Thread should match thread snapshot 1`] = `
1072
1073
  "alignItems": "flex-end",
1073
1074
  "flexDirection": "row",
1074
1075
  "gap": 8,
1075
- "paddingVertical": 8,
1076
1076
  "width": "100%",
1077
1077
  }
1078
1078
  }
@@ -1365,7 +1365,9 @@ exports[`Thread should match thread snapshot 1`] = `
1365
1365
  [
1366
1366
  undefined,
1367
1367
  {
1368
+ "marginBottom": 12,
1368
1369
  "paddingHorizontal": 16,
1370
+ "paddingVertical": 8,
1369
1371
  },
1370
1372
  ]
1371
1373
  }
@@ -1399,8 +1401,6 @@ exports[`Thread should match thread snapshot 1`] = `
1399
1401
  "alignItems": "flex-end",
1400
1402
  "flexDirection": "row",
1401
1403
  "gap": 8,
1402
- "marginBottom": 12,
1403
- "paddingVertical": 8,
1404
1404
  "width": "100%",
1405
1405
  }
1406
1406
  }
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "9.4.0-beta.1"
2
+ "version": "9.4.0-beta.2"
3
3
  }