stream-chat-react-native-core 4.3.0-beta.3 → 4.3.0

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 (52) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +21 -12
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Channel/Channel.js +15 -13
  4. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  5. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  6. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  7. package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js +6 -3
  8. package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -1
  9. package/lib/commonjs/components/Message/Message.js +11 -8
  10. package/lib/commonjs/components/Message/Message.js.map +1 -1
  11. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +28 -23
  12. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  13. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +7 -6
  14. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  15. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  16. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  17. package/lib/commonjs/version.json +1 -1
  18. package/lib/module/components/Attachment/Attachment.js +21 -12
  19. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  20. package/lib/module/components/Channel/Channel.js +15 -13
  21. package/lib/module/components/Channel/Channel.js.map +1 -1
  22. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  23. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  24. package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js +6 -3
  25. package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -1
  26. package/lib/module/components/Message/Message.js +11 -8
  27. package/lib/module/components/Message/Message.js.map +1 -1
  28. package/lib/module/components/Message/MessageSimple/MessageContent.js +28 -23
  29. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  30. package/lib/module/components/Message/MessageSimple/MessageSimple.js +7 -6
  31. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  32. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  33. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  34. package/lib/module/version.json +1 -1
  35. package/lib/typescript/components/Attachment/Attachment.d.ts +2 -2
  36. package/lib/typescript/components/Channel/Channel.d.ts +1 -1
  37. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  38. package/lib/typescript/components/Message/Message.d.ts +1 -1
  39. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
  40. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +2 -0
  41. package/package.json +1 -1
  42. package/src/components/Attachment/Attachment.tsx +11 -2
  43. package/src/components/Channel/Channel.tsx +3 -0
  44. package/src/components/Channel/__tests__/isAttachmentEqualHandler.test.js +100 -0
  45. package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -0
  46. package/src/components/Channel/hooks/useCreateOwnCapabilitiesContext.ts +6 -1
  47. package/src/components/Message/Message.tsx +19 -8
  48. package/src/components/Message/MessageSimple/MessageContent.tsx +23 -14
  49. package/src/components/Message/MessageSimple/MessageSimple.tsx +14 -11
  50. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +411 -12
  51. package/src/contexts/messagesContext/MessagesContext.tsx +5 -0
  52. package/src/version.json +1 -1
@@ -144,18 +144,21 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
144
144
  const channelEqual = prevChannel?.state.messages.length === nextChannel?.state.messages.length;
145
145
  if (!channelEqual) return false;
146
146
 
147
- const prevAttachments = prevMessage.attachments;
148
- const nextAttachments = nextMessage.attachments;
147
+ const prevMessageAttachments = prevMessage.attachments;
148
+ const nextMessageAttachments = nextMessage.attachments;
149
149
  const attachmentsEqual =
150
- Array.isArray(prevAttachments) && Array.isArray(nextAttachments)
151
- ? prevAttachments.length === nextAttachments.length &&
152
- prevAttachments.every(
153
- (attachment, index) =>
154
- attachment.image_url === nextAttachments[index].image_url &&
155
- attachment.og_scrape_url === nextAttachments[index].og_scrape_url &&
156
- attachment.thumb_url === nextAttachments[index].thumb_url,
157
- )
158
- : prevAttachments === nextAttachments;
150
+ Array.isArray(prevMessageAttachments) &&
151
+ Array.isArray(nextMessageAttachments) &&
152
+ prevMessageAttachments.length === nextMessageAttachments.length &&
153
+ prevMessageAttachments.every((attachment, index) => {
154
+ const attachmentKeysEqual =
155
+ attachment.type === 'image'
156
+ ? attachment.image_url === nextMessageAttachments[index].image_url &&
157
+ attachment.thumb_url === nextMessageAttachments[index].thumb_url
158
+ : attachment.type === nextMessageAttachments[index].type;
159
+
160
+ return attachmentKeysEqual;
161
+ });
159
162
  if (!attachmentsEqual) return false;
160
163
 
161
164
  const latestReactionsEqual =
@@ -1354,39 +1354,438 @@ exports[`Thread should match thread snapshot 1`] = `
1354
1354
  />
1355
1355
  </View>
1356
1356
  <View
1357
+ onLayout={[Function]}
1357
1358
  style={
1358
1359
  Array [
1359
1360
  Object {
1360
- "alignItems": "center",
1361
1361
  "borderTopWidth": 1,
1362
- "height": 50,
1363
- "justifyContent": "center",
1362
+ "padding": 10,
1364
1363
  },
1365
1364
  Object {
1366
- "borderTopColor": "#00000014",
1367
- "height": 50,
1365
+ "backgroundColor": "#FFFFFF",
1366
+ "borderColor": "#00000014",
1368
1367
  },
1369
1368
  Object {},
1370
1369
  ]
1371
1370
  }
1372
- testID="send-message-disallowed-indicator"
1373
1371
  >
1374
- <Text
1372
+ <View
1375
1373
  style={
1376
1374
  Array [
1377
1375
  Object {
1378
- "fontSize": 17,
1379
- "fontWeight": "400",
1376
+ "alignItems": "flex-end",
1377
+ "flexDirection": "row",
1380
1378
  },
1379
+ Object {},
1380
+ ]
1381
+ }
1382
+ >
1383
+ <View
1384
+ style={
1385
+ Array [
1386
+ Object {
1387
+ "flexDirection": "row",
1388
+ "paddingBottom": 10,
1389
+ "paddingRight": 10,
1390
+ },
1391
+ Object {},
1392
+ ]
1393
+ }
1394
+ >
1395
+ <View
1396
+ style={
1397
+ Array [
1398
+ Object {
1399
+ "paddingRight": 10,
1400
+ },
1401
+ Object {},
1402
+ ]
1403
+ }
1404
+ >
1405
+ <RNGestureHandlerButton
1406
+ collapsable={false}
1407
+ exclusive={true}
1408
+ handlerTag={4}
1409
+ handlerType="NativeViewGestureHandler"
1410
+ hitSlop={
1411
+ Object {
1412
+ "bottom": 15,
1413
+ "left": 15,
1414
+ "right": 5,
1415
+ "top": 15,
1416
+ }
1417
+ }
1418
+ onGestureEvent={[Function]}
1419
+ onGestureHandlerEvent={[Function]}
1420
+ onGestureHandlerStateChange={[Function]}
1421
+ onHandlerStateChange={[Function]}
1422
+ rippleColor={0}
1423
+ testID="attach-button"
1424
+ >
1425
+ <View
1426
+ accessible={true}
1427
+ collapsable={false}
1428
+ hitSlop={
1429
+ Object {
1430
+ "bottom": 15,
1431
+ "left": 15,
1432
+ "right": 5,
1433
+ "top": 15,
1434
+ }
1435
+ }
1436
+ style={
1437
+ Object {
1438
+ "opacity": 1,
1439
+ }
1440
+ }
1441
+ >
1442
+ <RNSVGSvgView
1443
+ align="xMidYMid"
1444
+ bbHeight={24}
1445
+ bbWidth={24}
1446
+ focusable={false}
1447
+ height={24}
1448
+ meetOrSlice={0}
1449
+ minX={0}
1450
+ minY={0}
1451
+ pathFill="#7A7A7A"
1452
+ style={
1453
+ Array [
1454
+ Object {
1455
+ "backgroundColor": "transparent",
1456
+ "borderWidth": 0,
1457
+ },
1458
+ Object {
1459
+ "flex": 0,
1460
+ "height": 24,
1461
+ "width": 24,
1462
+ },
1463
+ ]
1464
+ }
1465
+ vbHeight={24}
1466
+ vbWidth={24}
1467
+ width={24}
1468
+ >
1469
+ <RNSVGGroup>
1470
+ <RNSVGPath
1471
+ clipRule={0}
1472
+ d="M13.468 2.888a5.07 5.07 0 012.983.635 5.07 5.07 0 012.041 2.265c.45 1.01.546 2.254-.144 3.449l-4.5 7.794a3.232 3.232 0 01-1.427 1.294c-.757.342-1.696.367-2.671-.196-.975-.563-1.422-1.389-1.506-2.215a3.233 3.233 0 01.408-1.883l4-6.928a1 1 0 011.732 1l-4 6.928c-.087.15-.176.425-.15.682.02.196.105.447.516.684.41.237.671.185.85.105.236-.107.43-.32.516-.47l4.5-7.795c.31-.538.29-1.093.049-1.636a3.072 3.072 0 00-1.214-1.346 3.072 3.072 0 00-1.773-.378c-.591.062-1.082.322-1.392.86l-5 8.66c-.654 1.133-.286 3.3 1.964 4.598 2.25 1.3 4.31.535 4.964-.598l3.5-6.062a1 1 0 111.732 1l-3.5 6.062c-1.345 2.33-4.75 3.031-7.696 1.33-2.946-1.7-4.042-5-2.696-7.33l5-8.66c.69-1.195 1.815-1.733 2.914-1.85z"
1473
+ fill={4286216826}
1474
+ fillRule={0}
1475
+ propList={
1476
+ Array [
1477
+ "fill",
1478
+ "fillRule",
1479
+ ]
1480
+ }
1481
+ />
1482
+ </RNSVGGroup>
1483
+ </RNSVGSvgView>
1484
+ </View>
1485
+ </RNGestureHandlerButton>
1486
+ </View>
1487
+ <View
1488
+ style={Object {}}
1489
+ >
1490
+ <RNGestureHandlerButton
1491
+ collapsable={false}
1492
+ exclusive={true}
1493
+ handlerTag={5}
1494
+ handlerType="NativeViewGestureHandler"
1495
+ hitSlop={
1496
+ Object {
1497
+ "bottom": 15,
1498
+ "left": 5,
1499
+ "right": 15,
1500
+ "top": 15,
1501
+ }
1502
+ }
1503
+ onGestureEvent={[Function]}
1504
+ onGestureHandlerEvent={[Function]}
1505
+ onGestureHandlerStateChange={[Function]}
1506
+ onHandlerStateChange={[Function]}
1507
+ rippleColor={0}
1508
+ testID="commands-button"
1509
+ >
1510
+ <View
1511
+ accessible={true}
1512
+ collapsable={false}
1513
+ hitSlop={
1514
+ Object {
1515
+ "bottom": 15,
1516
+ "left": 5,
1517
+ "right": 15,
1518
+ "top": 15,
1519
+ }
1520
+ }
1521
+ style={
1522
+ Object {
1523
+ "opacity": 1,
1524
+ }
1525
+ }
1526
+ >
1527
+ <RNSVGSvgView
1528
+ align="xMidYMid"
1529
+ bbHeight={24}
1530
+ bbWidth={24}
1531
+ focusable={false}
1532
+ height={24}
1533
+ meetOrSlice={0}
1534
+ minX={0}
1535
+ minY={0}
1536
+ pathFill="#7A7A7A"
1537
+ style={
1538
+ Array [
1539
+ Object {
1540
+ "backgroundColor": "transparent",
1541
+ "borderWidth": 0,
1542
+ },
1543
+ Object {
1544
+ "flex": 0,
1545
+ "height": 24,
1546
+ "width": 24,
1547
+ },
1548
+ ]
1549
+ }
1550
+ vbHeight={24}
1551
+ vbWidth={24}
1552
+ width={24}
1553
+ >
1554
+ <RNSVGGroup>
1555
+ <RNSVGPath
1556
+ clipRule={0}
1557
+ d="M11.636 4H16l-2.91 5.818H16L10.546 20l1.09-7.273H8L11.636 4z"
1558
+ fill={4286216826}
1559
+ fillRule={0}
1560
+ propList={
1561
+ Array [
1562
+ "fill",
1563
+ "fillRule",
1564
+ ]
1565
+ }
1566
+ />
1567
+ </RNSVGGroup>
1568
+ </RNSVGSvgView>
1569
+ </View>
1570
+ </RNGestureHandlerButton>
1571
+ </View>
1572
+ </View>
1573
+ <View
1574
+ style={
1575
+ Array [
1576
+ Object {
1577
+ "borderRadius": 20,
1578
+ "borderWidth": 1,
1579
+ "flex": 1,
1580
+ },
1581
+ Object {
1582
+ "borderColor": "#ECEBEB",
1583
+ "paddingVertical": 12,
1584
+ },
1585
+ Object {},
1586
+ ]
1587
+ }
1588
+ >
1589
+ <View
1590
+ style={
1591
+ Array [
1592
+ Object {
1593
+ "alignItems": "center",
1594
+ "flexDirection": "row",
1595
+ "paddingLeft": 16,
1596
+ "paddingRight": 16,
1597
+ },
1598
+ Object {},
1599
+ ]
1600
+ }
1601
+ >
1602
+ <TextInput
1603
+ autoFocus={true}
1604
+ editable={true}
1605
+ maxLength={5000}
1606
+ multiline={true}
1607
+ onBlur={[Function]}
1608
+ onChangeText={[Function]}
1609
+ onContentSizeChange={[Function]}
1610
+ onSelectionChange={[Function]}
1611
+ placeholder="Send a message"
1612
+ placeholderTextColor="#7A7A7A"
1613
+ style={
1614
+ Array [
1615
+ Object {
1616
+ "flex": 1,
1617
+ "fontSize": 14,
1618
+ "includeFontPadding": false,
1619
+ "padding": 0,
1620
+ "paddingTop": 0,
1621
+ "textAlignVertical": "center",
1622
+ },
1623
+ Object {
1624
+ "color": "#000000",
1625
+ "maxHeight": 85,
1626
+ },
1627
+ Object {},
1628
+ ]
1629
+ }
1630
+ testID="auto-complete-text-input"
1631
+ value=""
1632
+ />
1633
+ </View>
1634
+ </View>
1635
+ <View
1636
+ style={
1637
+ Array [
1638
+ Object {
1639
+ "paddingBottom": 10,
1640
+ "paddingLeft": 10,
1641
+ },
1642
+ Object {},
1643
+ ]
1644
+ }
1645
+ >
1646
+ <RNGestureHandlerButton
1647
+ collapsable={false}
1648
+ exclusive={true}
1649
+ handlerTag={6}
1650
+ handlerType="NativeViewGestureHandler"
1651
+ onGestureEvent={[Function]}
1652
+ onGestureHandlerEvent={[Function]}
1653
+ onGestureHandlerStateChange={[Function]}
1654
+ onHandlerStateChange={[Function]}
1655
+ rippleColor={0}
1656
+ testID="send-button"
1657
+ >
1658
+ <View
1659
+ accessible={true}
1660
+ collapsable={false}
1661
+ style={
1662
+ Object {
1663
+ "opacity": 1,
1664
+ }
1665
+ }
1666
+ >
1667
+ <RNSVGSvgView
1668
+ align="xMidYMid"
1669
+ bbHeight={24}
1670
+ bbWidth={24}
1671
+ focusable={false}
1672
+ height={24}
1673
+ meetOrSlice={0}
1674
+ minX={0}
1675
+ minY={0}
1676
+ pathFill="#DBDBDB"
1677
+ style={
1678
+ Array [
1679
+ Object {
1680
+ "backgroundColor": "transparent",
1681
+ "borderWidth": 0,
1682
+ },
1683
+ Object {
1684
+ "flex": 0,
1685
+ "height": 24,
1686
+ "width": 24,
1687
+ },
1688
+ ]
1689
+ }
1690
+ vbHeight={24}
1691
+ vbWidth={24}
1692
+ width={24}
1693
+ >
1694
+ <RNSVGGroup>
1695
+ <RNSVGPath
1696
+ clipRule={0}
1697
+ d="M22 12c0-5.52-4.48-10-10-10S2 6.48 2 12s4.48 10 10 10 10-4.48 10-10zM8 11h4V8l4 4-4 4v-3H8v-2z"
1698
+ fill={4292598747}
1699
+ fillRule={0}
1700
+ propList={
1701
+ Array [
1702
+ "fill",
1703
+ "fillRule",
1704
+ ]
1705
+ }
1706
+ />
1707
+ </RNSVGGroup>
1708
+ </RNSVGSvgView>
1709
+ </View>
1710
+ </RNGestureHandlerButton>
1711
+ </View>
1712
+ </View>
1713
+ <View
1714
+ style={
1715
+ Array [
1381
1716
  Object {
1382
- "color": "#72767E",
1717
+ "flexDirection": "row",
1718
+ "marginHorizontal": 2,
1719
+ "marginTop": 8,
1383
1720
  },
1384
1721
  Object {},
1385
1722
  ]
1386
1723
  }
1724
+ testID="show-thread-message-in-channel-button"
1387
1725
  >
1388
- You can't send messages in this channel
1389
- </Text>
1726
+ <View
1727
+ accessible={true}
1728
+ collapsable={false}
1729
+ focusable={true}
1730
+ onClick={[Function]}
1731
+ onResponderGrant={[Function]}
1732
+ onResponderMove={[Function]}
1733
+ onResponderRelease={[Function]}
1734
+ onResponderTerminate={[Function]}
1735
+ onResponderTerminationRequest={[Function]}
1736
+ onStartShouldSetResponder={[Function]}
1737
+ style={
1738
+ Object {
1739
+ "opacity": 1,
1740
+ }
1741
+ }
1742
+ >
1743
+ <View
1744
+ style={
1745
+ Array [
1746
+ Object {
1747
+ "flexDirection": "row",
1748
+ },
1749
+ Object {},
1750
+ ]
1751
+ }
1752
+ >
1753
+ <View
1754
+ style={
1755
+ Array [
1756
+ Object {
1757
+ "alignItems": "center",
1758
+ "borderRadius": 3,
1759
+ "borderWidth": 2,
1760
+ "height": 16,
1761
+ "justifyContent": "center",
1762
+ "width": 16,
1763
+ },
1764
+ Object {
1765
+ "borderColor": "#7A7A7A",
1766
+ },
1767
+ ]
1768
+ }
1769
+ />
1770
+ <Text
1771
+ style={
1772
+ Array [
1773
+ Object {
1774
+ "fontSize": 13,
1775
+ "marginLeft": 12,
1776
+ },
1777
+ Object {
1778
+ "color": "#7A7A7A",
1779
+ },
1780
+ Object {},
1781
+ ]
1782
+ }
1783
+ >
1784
+ Also send to channel
1785
+ </Text>
1786
+ </View>
1787
+ </View>
1788
+ </View>
1390
1789
  </View>
1391
1790
  </View>
1392
1791
  </View>
@@ -296,6 +296,11 @@ export type MessagesContextValue<
296
296
  handleRetry?: (message: MessageType<StreamChatGenerics>) => Promise<void>;
297
297
  /** Handler to access when a thread reply action is invoked */
298
298
  handleThreadReply?: (message: MessageType<StreamChatGenerics>) => Promise<void>;
299
+ /** Handler to deal with custom memoization logic of Attachment */
300
+ isAttachmentEqual?: (
301
+ prevAttachment: Attachment<StreamChatGenerics>,
302
+ nextAttachment: Attachment<StreamChatGenerics>,
303
+ ) => boolean;
299
304
  legacyImageViewerSwipeBehaviour?: boolean;
300
305
  /** Object specifying rules defined within simple-markdown https://github.com/Khan/simple-markdown#adding-a-simple-extension */
301
306
  markdownRules?: MarkdownRules;
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.3.0-beta.3"
2
+ "version": "4.3.0"
3
3
  }