stream-chat-react-native-core 5.42.2-beta.1 → 5.42.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.
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  exports.ChannelPreview = void 0;
6
6
  var _react = _interopRequireDefault(require("react"));
7
7
  var _useChannelPreviewData = require("./hooks/useChannelPreviewData");
8
- var _useLatestMessagePreview = require("./hooks/useLatestMessagePreview");
9
8
  var _ChannelsContext = require("../../contexts/channelsContext/ChannelsContext");
10
9
  var _ChatContext = require("../../contexts/chatContext/ChatContext");
11
10
  var _jsxRuntime = require("react/jsx-runtime");
@@ -19,16 +18,13 @@ var ChannelPreview = function ChannelPreview(props) {
19
18
  var _useChatContext = (0, _ChatContext.useChatContext)(),
20
19
  contextClient = _useChatContext.client;
21
20
  var _useChannelsContext = (0, _ChannelsContext.useChannelsContext)(),
22
- contextForceUpdate = _useChannelsContext.forceUpdate,
23
21
  contextPreview = _useChannelsContext.Preview;
24
22
  var client = propClient || contextClient;
25
- var forceUpdate = propForceUpdate || contextForceUpdate;
26
23
  var Preview = propPreview || contextPreview;
27
- var _useChannelPreviewDat = (0, _useChannelPreviewData.useChannelPreviewData)(channel, client, forceUpdate),
28
- lastMessage = _useChannelPreviewDat.lastMessage,
24
+ var _useChannelPreviewDat = (0, _useChannelPreviewData.useChannelPreviewData)(channel, client, propForceUpdate),
25
+ latestMessagePreview = _useChannelPreviewDat.latestMessagePreview,
29
26
  muted = _useChannelPreviewDat.muted,
30
27
  unread = _useChannelPreviewDat.unread;
31
- var latestMessagePreview = (0, _useLatestMessagePreview.useLatestMessagePreview)(channel, forceUpdate, lastMessage);
32
28
  return (0, _jsxRuntime.jsx)(Preview, {
33
29
  channel: channel,
34
30
  latestMessagePreview: latestMessagePreview,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_useChannelPreviewData","_useLatestMessagePreview","_ChannelsContext","_ChatContext","_jsxRuntime","_this","_jsxFileName","ChannelPreview","props","channel","propClient","client","propForceUpdate","forceUpdate","propPreview","Preview","_useChatContext","useChatContext","contextClient","_useChannelsContext","useChannelsContext","contextForceUpdate","contextPreview","_useChannelPreviewDat","useChannelPreviewData","lastMessage","muted","unread","latestMessagePreview","useLatestMessagePreview","jsx","exports"],"sourceRoot":"../../../../src","sources":["components/ChannelPreview/ChannelPreview.tsx"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,wBAAA,GAAAF,OAAA;AAEA,IAAAG,gBAAA,GAAAH,OAAA;AAIA,IAAAI,YAAA,GAAAJ,OAAA;AAA0F,IAAAK,WAAA,GAAAL,OAAA;AAAA,IAAAM,KAAA;EAAAC,YAAA;AAcnF,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAGzBC,KAA8C,EAC3C;EACH,IAAQC,OAAO,GAA6ED,KAAK,CAAzFC,OAAO;IAAUC,UAAU,GAAyDF,KAAK,CAAhFG,MAAM;IAA2BC,eAAe,GAA2BJ,KAAK,CAA5DK,WAAW;IAA4BC,WAAW,GAAKN,KAAK,CAA9BO,OAAO;EAE1E,IAAAC,eAAA,GAAkC,IAAAC,2BAAc,EAAqB,CAAC;IAAtDC,aAAa,GAAAF,eAAA,CAArBL,MAAM;EACd,IAAAQ,mBAAA,GACE,IAAAC,mCAAkB,EAAqB,CAAC;IADrBC,kBAAkB,GAAAF,mBAAA,CAA/BN,WAAW;IAA+BS,cAAc,GAAAH,mBAAA,CAAvBJ,OAAO;EAGhD,IAAMJ,MAAM,GAAGD,UAAU,IAAIQ,aAAa;EAC1C,IAAML,WAAW,GAAGD,eAAe,IAAIS,kBAAkB;EACzD,IAAMN,OAAO,GAAGD,WAAW,IAAIQ,cAAc;EAE7C,IAAAC,qBAAA,GAAuC,IAAAC,4CAAqB,EAACf,OAAO,EAAEE,MAAM,EAAEE,WAAW,CAAC;IAAlFY,WAAW,GAAAF,qBAAA,CAAXE,WAAW;IAAEC,KAAK,GAAAH,qBAAA,CAALG,KAAK;IAAEC,MAAM,GAAAJ,qBAAA,CAANI,MAAM;EAClC,IAAMC,oBAAoB,GAAG,IAAAC,gDAAuB,EAACpB,OAAO,EAAEI,WAAW,EAAEY,WAAW,CAAC;EAEvF,OACE,IAAArB,WAAA,CAAA0B,GAAA,EAACf,OAAO;IACNN,OAAO,EAAEA,OAAQ;IACjBmB,oBAAoB,EAAEA,oBAAqB;IAC3CF,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN,CAAC;AAACI,OAAA,CAAAxB,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_useChannelPreviewData","_ChannelsContext","_ChatContext","_jsxRuntime","_this","_jsxFileName","ChannelPreview","props","channel","propClient","client","propForceUpdate","forceUpdate","propPreview","Preview","_useChatContext","useChatContext","contextClient","_useChannelsContext","useChannelsContext","contextPreview","_useChannelPreviewDat","useChannelPreviewData","latestMessagePreview","muted","unread","jsx","exports"],"sourceRoot":"../../../../src","sources":["components/ChannelPreview/ChannelPreview.tsx"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,sBAAA,GAAAD,OAAA;AAEA,IAAAE,gBAAA,GAAAF,OAAA;AAIA,IAAAG,YAAA,GAAAH,OAAA;AAA0F,IAAAI,WAAA,GAAAJ,OAAA;AAAA,IAAAK,KAAA;EAAAC,YAAA;AAcnF,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAGzBC,KAA8C,EAC3C;EACH,IAAQC,OAAO,GAA6ED,KAAK,CAAzFC,OAAO;IAAUC,UAAU,GAAyDF,KAAK,CAAhFG,MAAM;IAA2BC,eAAe,GAA2BJ,KAAK,CAA5DK,WAAW;IAA4BC,WAAW,GAAKN,KAAK,CAA9BO,OAAO;EAE1E,IAAAC,eAAA,GAAkC,IAAAC,2BAAc,EAAqB,CAAC;IAAtDC,aAAa,GAAAF,eAAA,CAArBL,MAAM;EACd,IAAAQ,mBAAA,GAAoC,IAAAC,mCAAkB,EAAqB,CAAC;IAA3DC,cAAc,GAAAF,mBAAA,CAAvBJ,OAAO;EAEf,IAAMJ,MAAM,GAAGD,UAAU,IAAIQ,aAAa;EAC1C,IAAMH,OAAO,GAAGD,WAAW,IAAIO,cAAc;EAE7C,IAAAC,qBAAA,GAAgD,IAAAC,4CAAqB,EACnEd,OAAO,EACPE,MAAM,EACNC,eACF,CAAC;IAJOY,oBAAoB,GAAAF,qBAAA,CAApBE,oBAAoB;IAAEC,KAAK,GAAAH,qBAAA,CAALG,KAAK;IAAEC,MAAM,GAAAJ,qBAAA,CAANI,MAAM;EAM3C,OACE,IAAAtB,WAAA,CAAAuB,GAAA,EAACZ,OAAO;IACNN,OAAO,EAAEA,OAAQ;IACjBe,oBAAoB,EAAEA,oBAAqB;IAC3CC,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN,CAAC;AAACE,OAAA,CAAArB,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -7,36 +7,69 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
7
7
  var _react = require("react");
8
8
  var _throttle = _interopRequireDefault(require("lodash/throttle"));
9
9
  var _useIsChannelMuted2 = require("./useIsChannelMuted");
10
- var useChannelPreviewData = function useChannelPreviewData(channel, client, forceUpdate) {
11
- var _useState = (0, _react.useState)(channel.state.messages[channel.state.messages.length - 1]),
10
+ var _useLatestMessagePreview = require("./useLatestMessagePreview");
11
+ var _contexts = require("../../../contexts");
12
+ var useChannelPreviewData = function useChannelPreviewData(channel, client, forceUpdateOverride) {
13
+ var _useState = (0, _react.useState)(0),
12
14
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
13
- lastMessage = _useState2[0],
14
- setLastMessage = _useState2[1];
15
- var _useState3 = (0, _react.useState)(channel.countUnread()),
15
+ forceUpdate = _useState2[0],
16
+ setForceUpdate = _useState2[1];
17
+ var _useState3 = (0, _react.useState)(channel.state.messages[channel.state.messages.length - 1]),
16
18
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
17
- unread = _useState4[0],
18
- setUnread = _useState4[1];
19
+ lastMessage = _useState4[0],
20
+ setLastMessage = _useState4[1];
21
+ var _useState5 = (0, _react.useState)(channel.countUnread()),
22
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
23
+ unread = _useState6[0],
24
+ setUnread = _useState6[1];
19
25
  var _useIsChannelMuted = (0, _useIsChannelMuted2.useIsChannelMuted)(channel),
20
26
  muted = _useIsChannelMuted.muted;
27
+ var _useChannelsContext = (0, _contexts.useChannelsContext)(),
28
+ contextForceUpdate = _useChannelsContext.forceUpdate;
29
+ var channelListForceUpdate = forceUpdateOverride != null ? forceUpdateOverride : contextForceUpdate;
30
+ var channelLastMessage = channel.lastMessage();
31
+ var channelLastMessageString = "".concat(channelLastMessage == null ? void 0 : channelLastMessage.id).concat(channelLastMessage == null ? void 0 : channelLastMessage.updated_at);
32
+ (0, _react.useEffect)(function () {
33
+ var _client$on = client.on('notification.mark_read', function () {
34
+ setUnread(channel.countUnread());
35
+ }),
36
+ unsubscribe = _client$on.unsubscribe;
37
+ return unsubscribe;
38
+ }, [channel, client]);
39
+ (0, _react.useEffect)(function () {
40
+ if (channelLastMessage && (channelLastMessage.id !== (lastMessage == null ? void 0 : lastMessage.id) || channelLastMessage.updated_at !== (lastMessage == null ? void 0 : lastMessage.updated_at))) {
41
+ setLastMessage(channelLastMessage);
42
+ }
43
+ var newUnreadCount = channel.countUnread();
44
+ setUnread(newUnreadCount);
45
+ }, [channel, channelLastMessageString, channelListForceUpdate]);
21
46
  (0, _react.useEffect)(function () {
22
47
  var handleReadEvent = function handleReadEvent(event) {
48
+ var _event$user, _event$user2;
23
49
  if (!event.cid) return;
24
- if (channel.cid === event.cid) setUnread(0);
50
+ if (channel.cid !== event.cid) return;
51
+ if ((event == null ? void 0 : (_event$user = event.user) == null ? void 0 : _event$user.id) === client.userID) {
52
+ setUnread(0);
53
+ } else if (event != null && (_event$user2 = event.user) != null && _event$user2.id) {
54
+ setForceUpdate(function (prev) {
55
+ return prev + 1;
56
+ });
57
+ }
25
58
  };
26
- var _client$on = client.on('notification.mark_read', handleReadEvent),
27
- unsubscribe = _client$on.unsubscribe;
59
+ var _client$on2 = client.on('message.read', handleReadEvent),
60
+ unsubscribe = _client$on2.unsubscribe;
28
61
  return unsubscribe;
29
62
  }, [client, channel]);
30
63
  (0, _react.useEffect)(function () {
31
64
  var handleUnreadEvent = function handleUnreadEvent(event) {
32
- var _event$user, _client$user;
65
+ var _event$user3, _client$user;
33
66
  if (!event.cid) return;
34
67
  if (channel.cid !== event.cid) return;
35
- if (((_event$user = event.user) == null ? void 0 : _event$user.id) !== ((_client$user = client.user) == null ? void 0 : _client$user.id)) return;
68
+ if (((_event$user3 = event.user) == null ? void 0 : _event$user3.id) !== ((_client$user = client.user) == null ? void 0 : _client$user.id)) return;
36
69
  setUnread(channel.countUnread());
37
70
  };
38
- var _client$on2 = client.on('notification.mark_unread', handleUnreadEvent),
39
- unsubscribe = _client$on2.unsubscribe;
71
+ var _client$on3 = client.on('notification.mark_unread', handleUnreadEvent),
72
+ unsubscribe = _client$on3.unsubscribe;
40
73
  return unsubscribe;
41
74
  }, [client, channel]);
42
75
  var refreshUnreadCount = (0, _react.useMemo)(function () {
@@ -54,15 +87,32 @@ var useChannelPreviewData = function useChannelPreviewData(channel, client, forc
54
87
  setLastMessage(channel.state.latestMessages[channel.state.latestMessages.length - 1]);
55
88
  refreshUnreadCount();
56
89
  };
57
- var listeners = [channel.on('message.new', handleEvent), channel.on('message.updated', handleEvent), channel.on('message.deleted', handleEvent), channel.on('message.undeleted', handleEvent), channel.on('channel.truncated', handleEvent)];
90
+ var handleNewMessageEvent = function handleNewMessageEvent(event) {
91
+ var message = event.message;
92
+ if (message && (!message.parent_id || message.show_in_channel)) {
93
+ setLastMessage(message);
94
+ setUnread(channel.countUnread());
95
+ }
96
+ };
97
+ var handleUpdatedOrDeletedMessage = function handleUpdatedOrDeletedMessage(event) {
98
+ setLastMessage(function (prevLastMessage) {
99
+ var _event$message;
100
+ if ((prevLastMessage == null ? void 0 : prevLastMessage.id) === ((_event$message = event.message) == null ? void 0 : _event$message.id)) {
101
+ return event.message;
102
+ }
103
+ return prevLastMessage;
104
+ });
105
+ };
106
+ var listeners = [channel.on('message.new', handleNewMessageEvent), channel.on('message.updated', handleUpdatedOrDeletedMessage), channel.on('message.deleted', handleUpdatedOrDeletedMessage), channel.on('message.undeleted', handleEvent), channel.on('channel.truncated', handleEvent)];
58
107
  return function () {
59
108
  return listeners.forEach(function (l) {
60
109
  return l.unsubscribe();
61
110
  });
62
111
  };
63
- }, [channel, refreshUnreadCount, forceUpdate]);
112
+ }, [channel, refreshUnreadCount, forceUpdate, channelListForceUpdate]);
113
+ var latestMessagePreview = (0, _useLatestMessagePreview.useLatestMessagePreview)(channel, forceUpdate, lastMessage);
64
114
  return {
65
- lastMessage: lastMessage,
115
+ latestMessagePreview: latestMessagePreview,
66
116
  muted: muted,
67
117
  unread: unread
68
118
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_throttle","_interopRequireDefault","_useIsChannelMuted2","useChannelPreviewData","channel","client","forceUpdate","_useState","useState","state","messages","length","_useState2","_slicedToArray2","lastMessage","setLastMessage","_useState3","countUnread","_useState4","unread","setUnread","_useIsChannelMuted","useIsChannelMuted","muted","useEffect","handleReadEvent","event","cid","_client$on","on","unsubscribe","handleUnreadEvent","_event$user","_client$user","user","id","_client$on2","refreshUnreadCount","useMemo","throttle","handleEvent","latestMessages","listeners","forEach","l","exports"],"sourceRoot":"../../../../../src","sources":["components/ChannelPreview/hooks/useChannelPreviewData.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_throttle","_interopRequireDefault","_useIsChannelMuted2","_useLatestMessagePreview","_contexts","useChannelPreviewData","channel","client","forceUpdateOverride","_useState","useState","_useState2","_slicedToArray2","forceUpdate","setForceUpdate","_useState3","state","messages","length","_useState4","lastMessage","setLastMessage","_useState5","countUnread","_useState6","unread","setUnread","_useIsChannelMuted","useIsChannelMuted","muted","_useChannelsContext","useChannelsContext","contextForceUpdate","channelListForceUpdate","channelLastMessage","channelLastMessageString","concat","id","updated_at","useEffect","_client$on","on","unsubscribe","newUnreadCount","handleReadEvent","event","_event$user","_event$user2","cid","user","userID","prev","_client$on2","handleUnreadEvent","_event$user3","_client$user","_client$on3","refreshUnreadCount","useMemo","throttle","handleEvent","latestMessages","handleNewMessageEvent","message","parent_id","show_in_channel","handleUpdatedOrDeletedMessage","prevLastMessage","_event$message","listeners","forEach","l","latestMessagePreview","useLatestMessagePreview","exports"],"sourceRoot":"../../../../../src","sources":["components/ChannelPreview/hooks/useChannelPreviewData.ts"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.42.2-beta.1"
2
+ "version": "5.42.2"
3
3
  }
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  exports.ChannelPreview = void 0;
6
6
  var _react = _interopRequireDefault(require("react"));
7
7
  var _useChannelPreviewData = require("./hooks/useChannelPreviewData");
8
- var _useLatestMessagePreview = require("./hooks/useLatestMessagePreview");
9
8
  var _ChannelsContext = require("../../contexts/channelsContext/ChannelsContext");
10
9
  var _ChatContext = require("../../contexts/chatContext/ChatContext");
11
10
  var _jsxRuntime = require("react/jsx-runtime");
@@ -19,16 +18,13 @@ var ChannelPreview = function ChannelPreview(props) {
19
18
  var _useChatContext = (0, _ChatContext.useChatContext)(),
20
19
  contextClient = _useChatContext.client;
21
20
  var _useChannelsContext = (0, _ChannelsContext.useChannelsContext)(),
22
- contextForceUpdate = _useChannelsContext.forceUpdate,
23
21
  contextPreview = _useChannelsContext.Preview;
24
22
  var client = propClient || contextClient;
25
- var forceUpdate = propForceUpdate || contextForceUpdate;
26
23
  var Preview = propPreview || contextPreview;
27
- var _useChannelPreviewDat = (0, _useChannelPreviewData.useChannelPreviewData)(channel, client, forceUpdate),
28
- lastMessage = _useChannelPreviewDat.lastMessage,
24
+ var _useChannelPreviewDat = (0, _useChannelPreviewData.useChannelPreviewData)(channel, client, propForceUpdate),
25
+ latestMessagePreview = _useChannelPreviewDat.latestMessagePreview,
29
26
  muted = _useChannelPreviewDat.muted,
30
27
  unread = _useChannelPreviewDat.unread;
31
- var latestMessagePreview = (0, _useLatestMessagePreview.useLatestMessagePreview)(channel, forceUpdate, lastMessage);
32
28
  return (0, _jsxRuntime.jsx)(Preview, {
33
29
  channel: channel,
34
30
  latestMessagePreview: latestMessagePreview,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_useChannelPreviewData","_useLatestMessagePreview","_ChannelsContext","_ChatContext","_jsxRuntime","_this","_jsxFileName","ChannelPreview","props","channel","propClient","client","propForceUpdate","forceUpdate","propPreview","Preview","_useChatContext","useChatContext","contextClient","_useChannelsContext","useChannelsContext","contextForceUpdate","contextPreview","_useChannelPreviewDat","useChannelPreviewData","lastMessage","muted","unread","latestMessagePreview","useLatestMessagePreview","jsx","exports"],"sourceRoot":"../../../../src","sources":["components/ChannelPreview/ChannelPreview.tsx"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,wBAAA,GAAAF,OAAA;AAEA,IAAAG,gBAAA,GAAAH,OAAA;AAIA,IAAAI,YAAA,GAAAJ,OAAA;AAA0F,IAAAK,WAAA,GAAAL,OAAA;AAAA,IAAAM,KAAA;EAAAC,YAAA;AAcnF,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAGzBC,KAA8C,EAC3C;EACH,IAAQC,OAAO,GAA6ED,KAAK,CAAzFC,OAAO;IAAUC,UAAU,GAAyDF,KAAK,CAAhFG,MAAM;IAA2BC,eAAe,GAA2BJ,KAAK,CAA5DK,WAAW;IAA4BC,WAAW,GAAKN,KAAK,CAA9BO,OAAO;EAE1E,IAAAC,eAAA,GAAkC,IAAAC,2BAAc,EAAqB,CAAC;IAAtDC,aAAa,GAAAF,eAAA,CAArBL,MAAM;EACd,IAAAQ,mBAAA,GACE,IAAAC,mCAAkB,EAAqB,CAAC;IADrBC,kBAAkB,GAAAF,mBAAA,CAA/BN,WAAW;IAA+BS,cAAc,GAAAH,mBAAA,CAAvBJ,OAAO;EAGhD,IAAMJ,MAAM,GAAGD,UAAU,IAAIQ,aAAa;EAC1C,IAAML,WAAW,GAAGD,eAAe,IAAIS,kBAAkB;EACzD,IAAMN,OAAO,GAAGD,WAAW,IAAIQ,cAAc;EAE7C,IAAAC,qBAAA,GAAuC,IAAAC,4CAAqB,EAACf,OAAO,EAAEE,MAAM,EAAEE,WAAW,CAAC;IAAlFY,WAAW,GAAAF,qBAAA,CAAXE,WAAW;IAAEC,KAAK,GAAAH,qBAAA,CAALG,KAAK;IAAEC,MAAM,GAAAJ,qBAAA,CAANI,MAAM;EAClC,IAAMC,oBAAoB,GAAG,IAAAC,gDAAuB,EAACpB,OAAO,EAAEI,WAAW,EAAEY,WAAW,CAAC;EAEvF,OACE,IAAArB,WAAA,CAAA0B,GAAA,EAACf,OAAO;IACNN,OAAO,EAAEA,OAAQ;IACjBmB,oBAAoB,EAAEA,oBAAqB;IAC3CF,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN,CAAC;AAACI,OAAA,CAAAxB,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_useChannelPreviewData","_ChannelsContext","_ChatContext","_jsxRuntime","_this","_jsxFileName","ChannelPreview","props","channel","propClient","client","propForceUpdate","forceUpdate","propPreview","Preview","_useChatContext","useChatContext","contextClient","_useChannelsContext","useChannelsContext","contextPreview","_useChannelPreviewDat","useChannelPreviewData","latestMessagePreview","muted","unread","jsx","exports"],"sourceRoot":"../../../../src","sources":["components/ChannelPreview/ChannelPreview.tsx"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,sBAAA,GAAAD,OAAA;AAEA,IAAAE,gBAAA,GAAAF,OAAA;AAIA,IAAAG,YAAA,GAAAH,OAAA;AAA0F,IAAAI,WAAA,GAAAJ,OAAA;AAAA,IAAAK,KAAA;EAAAC,YAAA;AAcnF,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAGzBC,KAA8C,EAC3C;EACH,IAAQC,OAAO,GAA6ED,KAAK,CAAzFC,OAAO;IAAUC,UAAU,GAAyDF,KAAK,CAAhFG,MAAM;IAA2BC,eAAe,GAA2BJ,KAAK,CAA5DK,WAAW;IAA4BC,WAAW,GAAKN,KAAK,CAA9BO,OAAO;EAE1E,IAAAC,eAAA,GAAkC,IAAAC,2BAAc,EAAqB,CAAC;IAAtDC,aAAa,GAAAF,eAAA,CAArBL,MAAM;EACd,IAAAQ,mBAAA,GAAoC,IAAAC,mCAAkB,EAAqB,CAAC;IAA3DC,cAAc,GAAAF,mBAAA,CAAvBJ,OAAO;EAEf,IAAMJ,MAAM,GAAGD,UAAU,IAAIQ,aAAa;EAC1C,IAAMH,OAAO,GAAGD,WAAW,IAAIO,cAAc;EAE7C,IAAAC,qBAAA,GAAgD,IAAAC,4CAAqB,EACnEd,OAAO,EACPE,MAAM,EACNC,eACF,CAAC;IAJOY,oBAAoB,GAAAF,qBAAA,CAApBE,oBAAoB;IAAEC,KAAK,GAAAH,qBAAA,CAALG,KAAK;IAAEC,MAAM,GAAAJ,qBAAA,CAANI,MAAM;EAM3C,OACE,IAAAtB,WAAA,CAAAuB,GAAA,EAACZ,OAAO;IACNN,OAAO,EAAEA,OAAQ;IACjBe,oBAAoB,EAAEA,oBAAqB;IAC3CC,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN,CAAC;AAACE,OAAA,CAAArB,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -7,36 +7,69 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
7
7
  var _react = require("react");
8
8
  var _throttle = _interopRequireDefault(require("lodash/throttle"));
9
9
  var _useIsChannelMuted2 = require("./useIsChannelMuted");
10
- var useChannelPreviewData = function useChannelPreviewData(channel, client, forceUpdate) {
11
- var _useState = (0, _react.useState)(channel.state.messages[channel.state.messages.length - 1]),
10
+ var _useLatestMessagePreview = require("./useLatestMessagePreview");
11
+ var _contexts = require("../../../contexts");
12
+ var useChannelPreviewData = function useChannelPreviewData(channel, client, forceUpdateOverride) {
13
+ var _useState = (0, _react.useState)(0),
12
14
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
13
- lastMessage = _useState2[0],
14
- setLastMessage = _useState2[1];
15
- var _useState3 = (0, _react.useState)(channel.countUnread()),
15
+ forceUpdate = _useState2[0],
16
+ setForceUpdate = _useState2[1];
17
+ var _useState3 = (0, _react.useState)(channel.state.messages[channel.state.messages.length - 1]),
16
18
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
17
- unread = _useState4[0],
18
- setUnread = _useState4[1];
19
+ lastMessage = _useState4[0],
20
+ setLastMessage = _useState4[1];
21
+ var _useState5 = (0, _react.useState)(channel.countUnread()),
22
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
23
+ unread = _useState6[0],
24
+ setUnread = _useState6[1];
19
25
  var _useIsChannelMuted = (0, _useIsChannelMuted2.useIsChannelMuted)(channel),
20
26
  muted = _useIsChannelMuted.muted;
27
+ var _useChannelsContext = (0, _contexts.useChannelsContext)(),
28
+ contextForceUpdate = _useChannelsContext.forceUpdate;
29
+ var channelListForceUpdate = forceUpdateOverride != null ? forceUpdateOverride : contextForceUpdate;
30
+ var channelLastMessage = channel.lastMessage();
31
+ var channelLastMessageString = "".concat(channelLastMessage == null ? void 0 : channelLastMessage.id).concat(channelLastMessage == null ? void 0 : channelLastMessage.updated_at);
32
+ (0, _react.useEffect)(function () {
33
+ var _client$on = client.on('notification.mark_read', function () {
34
+ setUnread(channel.countUnread());
35
+ }),
36
+ unsubscribe = _client$on.unsubscribe;
37
+ return unsubscribe;
38
+ }, [channel, client]);
39
+ (0, _react.useEffect)(function () {
40
+ if (channelLastMessage && (channelLastMessage.id !== (lastMessage == null ? void 0 : lastMessage.id) || channelLastMessage.updated_at !== (lastMessage == null ? void 0 : lastMessage.updated_at))) {
41
+ setLastMessage(channelLastMessage);
42
+ }
43
+ var newUnreadCount = channel.countUnread();
44
+ setUnread(newUnreadCount);
45
+ }, [channel, channelLastMessageString, channelListForceUpdate]);
21
46
  (0, _react.useEffect)(function () {
22
47
  var handleReadEvent = function handleReadEvent(event) {
48
+ var _event$user, _event$user2;
23
49
  if (!event.cid) return;
24
- if (channel.cid === event.cid) setUnread(0);
50
+ if (channel.cid !== event.cid) return;
51
+ if ((event == null ? void 0 : (_event$user = event.user) == null ? void 0 : _event$user.id) === client.userID) {
52
+ setUnread(0);
53
+ } else if (event != null && (_event$user2 = event.user) != null && _event$user2.id) {
54
+ setForceUpdate(function (prev) {
55
+ return prev + 1;
56
+ });
57
+ }
25
58
  };
26
- var _client$on = client.on('notification.mark_read', handleReadEvent),
27
- unsubscribe = _client$on.unsubscribe;
59
+ var _client$on2 = client.on('message.read', handleReadEvent),
60
+ unsubscribe = _client$on2.unsubscribe;
28
61
  return unsubscribe;
29
62
  }, [client, channel]);
30
63
  (0, _react.useEffect)(function () {
31
64
  var handleUnreadEvent = function handleUnreadEvent(event) {
32
- var _event$user, _client$user;
65
+ var _event$user3, _client$user;
33
66
  if (!event.cid) return;
34
67
  if (channel.cid !== event.cid) return;
35
- if (((_event$user = event.user) == null ? void 0 : _event$user.id) !== ((_client$user = client.user) == null ? void 0 : _client$user.id)) return;
68
+ if (((_event$user3 = event.user) == null ? void 0 : _event$user3.id) !== ((_client$user = client.user) == null ? void 0 : _client$user.id)) return;
36
69
  setUnread(channel.countUnread());
37
70
  };
38
- var _client$on2 = client.on('notification.mark_unread', handleUnreadEvent),
39
- unsubscribe = _client$on2.unsubscribe;
71
+ var _client$on3 = client.on('notification.mark_unread', handleUnreadEvent),
72
+ unsubscribe = _client$on3.unsubscribe;
40
73
  return unsubscribe;
41
74
  }, [client, channel]);
42
75
  var refreshUnreadCount = (0, _react.useMemo)(function () {
@@ -54,15 +87,32 @@ var useChannelPreviewData = function useChannelPreviewData(channel, client, forc
54
87
  setLastMessage(channel.state.latestMessages[channel.state.latestMessages.length - 1]);
55
88
  refreshUnreadCount();
56
89
  };
57
- var listeners = [channel.on('message.new', handleEvent), channel.on('message.updated', handleEvent), channel.on('message.deleted', handleEvent), channel.on('message.undeleted', handleEvent), channel.on('channel.truncated', handleEvent)];
90
+ var handleNewMessageEvent = function handleNewMessageEvent(event) {
91
+ var message = event.message;
92
+ if (message && (!message.parent_id || message.show_in_channel)) {
93
+ setLastMessage(message);
94
+ setUnread(channel.countUnread());
95
+ }
96
+ };
97
+ var handleUpdatedOrDeletedMessage = function handleUpdatedOrDeletedMessage(event) {
98
+ setLastMessage(function (prevLastMessage) {
99
+ var _event$message;
100
+ if ((prevLastMessage == null ? void 0 : prevLastMessage.id) === ((_event$message = event.message) == null ? void 0 : _event$message.id)) {
101
+ return event.message;
102
+ }
103
+ return prevLastMessage;
104
+ });
105
+ };
106
+ var listeners = [channel.on('message.new', handleNewMessageEvent), channel.on('message.updated', handleUpdatedOrDeletedMessage), channel.on('message.deleted', handleUpdatedOrDeletedMessage), channel.on('message.undeleted', handleEvent), channel.on('channel.truncated', handleEvent)];
58
107
  return function () {
59
108
  return listeners.forEach(function (l) {
60
109
  return l.unsubscribe();
61
110
  });
62
111
  };
63
- }, [channel, refreshUnreadCount, forceUpdate]);
112
+ }, [channel, refreshUnreadCount, forceUpdate, channelListForceUpdate]);
113
+ var latestMessagePreview = (0, _useLatestMessagePreview.useLatestMessagePreview)(channel, forceUpdate, lastMessage);
64
114
  return {
65
- lastMessage: lastMessage,
115
+ latestMessagePreview: latestMessagePreview,
66
116
  muted: muted,
67
117
  unread: unread
68
118
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_throttle","_interopRequireDefault","_useIsChannelMuted2","useChannelPreviewData","channel","client","forceUpdate","_useState","useState","state","messages","length","_useState2","_slicedToArray2","lastMessage","setLastMessage","_useState3","countUnread","_useState4","unread","setUnread","_useIsChannelMuted","useIsChannelMuted","muted","useEffect","handleReadEvent","event","cid","_client$on","on","unsubscribe","handleUnreadEvent","_event$user","_client$user","user","id","_client$on2","refreshUnreadCount","useMemo","throttle","handleEvent","latestMessages","listeners","forEach","l","exports"],"sourceRoot":"../../../../../src","sources":["components/ChannelPreview/hooks/useChannelPreviewData.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_throttle","_interopRequireDefault","_useIsChannelMuted2","_useLatestMessagePreview","_contexts","useChannelPreviewData","channel","client","forceUpdateOverride","_useState","useState","_useState2","_slicedToArray2","forceUpdate","setForceUpdate","_useState3","state","messages","length","_useState4","lastMessage","setLastMessage","_useState5","countUnread","_useState6","unread","setUnread","_useIsChannelMuted","useIsChannelMuted","muted","_useChannelsContext","useChannelsContext","contextForceUpdate","channelListForceUpdate","channelLastMessage","channelLastMessageString","concat","id","updated_at","useEffect","_client$on","on","unsubscribe","newUnreadCount","handleReadEvent","event","_event$user","_event$user2","cid","user","userID","prev","_client$on2","handleUnreadEvent","_event$user3","_client$user","_client$on3","refreshUnreadCount","useMemo","throttle","handleEvent","latestMessages","handleNewMessageEvent","message","parent_id","show_in_channel","handleUpdatedOrDeletedMessage","prevLastMessage","_event$message","listeners","forEach","l","latestMessagePreview","useLatestMessagePreview","exports"],"sourceRoot":"../../../../../src","sources":["components/ChannelPreview/hooks/useChannelPreviewData.ts"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.42.2-beta.1"
2
+ "version": "5.42.2"
3
3
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ChannelPreview.d.ts","sourceRoot":"","sources":["../../../../src/components/ChannelPreview/ChannelPreview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,EACL,oBAAoB,EAErB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAkB,MAAM,wCAAwC,CAAC;AAE1F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,MAAM,mBAAmB,CAC7B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,QAAQ,CAAC,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC,GAAG;IACnF;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACtC,CAAC;AAEJ,eAAO,MAAM,cAAc,yJA0B1B,CAAC"}
1
+ {"version":3,"file":"ChannelPreview.d.ts","sourceRoot":"","sources":["../../../../src/components/ChannelPreview/ChannelPreview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,EACL,oBAAoB,EAErB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAkB,MAAM,wCAAwC,CAAC;AAE1F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,MAAM,mBAAmB,CAC7B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,QAAQ,CAAC,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC,GAAG;IACnF;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACtC,CAAC;AAEJ,eAAO,MAAM,cAAc,yJA2B1B,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { Channel, MessageResponse, StreamChat } from 'stream-chat';
1
+ import type { Channel, StreamChat } from 'stream-chat';
2
2
  import type { DefaultStreamChatGenerics } from '../../../types/types';
3
- export declare const useChannelPreviewData: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(channel: Channel<StreamChatGenerics>, client: StreamChat<StreamChatGenerics>, forceUpdate?: number) => {
4
- lastMessage: MessageResponse<StreamChatGenerics> | import("stream-chat").FormatMessageResponse<StreamChatGenerics>;
3
+ export declare const useChannelPreviewData: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(channel: Channel<StreamChatGenerics>, client: StreamChat<StreamChatGenerics>, forceUpdateOverride?: number) => {
4
+ latestMessagePreview: import("./useLatestMessagePreview").LatestMessagePreview<StreamChatGenerics>;
5
5
  muted: boolean;
6
6
  unread: number;
7
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useChannelPreviewData.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChannelPreview/hooks/useChannelPreviewData.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAuB,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI7F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,qBAAqB,iLAKlB,MAAM;;;;CAsErB,CAAC"}
1
+ {"version":3,"file":"useChannelPreviewData.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChannelPreview/hooks/useChannelPreviewData.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAwC,UAAU,EAAE,MAAM,aAAa,CAAC;AAO7F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,qBAAqB,yLAKV,MAAM;;;;CAwH7B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stream-chat-react-native-core",
3
3
  "description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
4
- "version": "5.42.2-beta.1",
4
+ "version": "5.42.2",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -3,7 +3,6 @@ import React from 'react';
3
3
  import type { Channel } from 'stream-chat';
4
4
 
5
5
  import { useChannelPreviewData } from './hooks/useChannelPreviewData';
6
- import { useLatestMessagePreview } from './hooks/useLatestMessagePreview';
7
6
 
8
7
  import {
9
8
  ChannelsContextValue,
@@ -31,15 +30,16 @@ export const ChannelPreview = <
31
30
  const { channel, client: propClient, forceUpdate: propForceUpdate, Preview: propPreview } = props;
32
31
 
33
32
  const { client: contextClient } = useChatContext<StreamChatGenerics>();
34
- const { forceUpdate: contextForceUpdate, Preview: contextPreview } =
35
- useChannelsContext<StreamChatGenerics>();
33
+ const { Preview: contextPreview } = useChannelsContext<StreamChatGenerics>();
36
34
 
37
35
  const client = propClient || contextClient;
38
- const forceUpdate = propForceUpdate || contextForceUpdate;
39
36
  const Preview = propPreview || contextPreview;
40
37
 
41
- const { lastMessage, muted, unread } = useChannelPreviewData(channel, client, forceUpdate);
42
- const latestMessagePreview = useLatestMessagePreview(channel, forceUpdate, lastMessage);
38
+ const { latestMessagePreview, muted, unread } = useChannelPreviewData(
39
+ channel,
40
+ client,
41
+ propForceUpdate,
42
+ );
43
43
 
44
44
  return (
45
45
  <Preview
@@ -69,6 +69,15 @@ describe('ChannelPreview', () => {
69
69
  );
70
70
  };
71
71
 
72
+ const generateChannelWrapper = (overrides: Record<string, unknown>) =>
73
+ generateChannel({
74
+ countUnread: jest.fn().mockReturnValue(0),
75
+ initialized: true,
76
+ lastMessage: jest.fn().mockReturnValue(generateMessage()),
77
+ muteStatus: jest.fn().mockReturnValue({ muted: false }),
78
+ ...overrides,
79
+ });
80
+
72
81
  const useInitializeChannel = async (c: GetOrCreateChannelApiParams) => {
73
82
  useMockedApis(chatClient, [getOrCreateChannelApi(c)]);
74
83
 
@@ -89,9 +98,8 @@ describe('ChannelPreview', () => {
89
98
  it("should not update the unread count if the event's cid does not match the channel's cid", async () => {
90
99
  const channelOnMock = jest.fn().mockReturnValue({ unsubscribe: jest.fn() });
91
100
 
92
- const c = generateChannel({
101
+ const c = generateChannelWrapper({
93
102
  countUnread: jest.fn().mockReturnValue(10),
94
- muteStatus: jest.fn().mockReturnValue({ muted: false }),
95
103
  on: channelOnMock,
96
104
  });
97
105
 
@@ -117,9 +125,8 @@ describe('ChannelPreview', () => {
117
125
  it('should update the unread count to 0', async () => {
118
126
  const channelOnMock = jest.fn().mockReturnValue({ unsubscribe: jest.fn() });
119
127
 
120
- const c = generateChannel({
128
+ const c = generateChannelWrapper({
121
129
  countUnread: jest.fn().mockReturnValue(10),
122
- muteStatus: jest.fn().mockReturnValue({ muted: false }),
123
130
  on: channelOnMock,
124
131
  });
125
132
 
@@ -147,9 +154,7 @@ describe('ChannelPreview', () => {
147
154
  it("should not update the unread count if the event's cid is undefined", async () => {
148
155
  const channelOnMock = jest.fn().mockReturnValue({ unsubscribe: jest.fn() });
149
156
 
150
- const c = generateChannel({
151
- countUnread: jest.fn().mockReturnValue(0),
152
- muteStatus: jest.fn().mockReturnValue({ muted: false }),
157
+ const c = generateChannelWrapper({
153
158
  on: channelOnMock,
154
159
  });
155
160
 
@@ -182,9 +187,7 @@ describe('ChannelPreview', () => {
182
187
  it("should not update the unread count if the event's cid does not match the channel's cid", async () => {
183
188
  const channelOnMock = jest.fn().mockReturnValue({ unsubscribe: jest.fn() });
184
189
 
185
- const c = generateChannel({
186
- countUnread: jest.fn().mockReturnValue(0),
187
- muteStatus: jest.fn().mockReturnValue({ muted: false }),
190
+ const c = generateChannelWrapper({
188
191
  on: channelOnMock,
189
192
  });
190
193
 
@@ -217,9 +220,7 @@ describe('ChannelPreview', () => {
217
220
  it("should not update the unread count if the event's user id does not match the client's user id", async () => {
218
221
  const channelOnMock = jest.fn().mockReturnValue({ unsubscribe: jest.fn() });
219
222
 
220
- const c = generateChannel({
221
- countUnread: jest.fn().mockReturnValue(0),
222
- muteStatus: jest.fn().mockReturnValue({ muted: false }),
223
+ const c = generateChannelWrapper({
223
224
  on: channelOnMock,
224
225
  });
225
226
 
@@ -255,12 +256,10 @@ describe('ChannelPreview', () => {
255
256
  await useInitializeChannel(c);
256
257
  const channelOnMock = jest.fn().mockReturnValue({ unsubscribe: jest.fn() });
257
258
 
258
- const testChannel = {
259
+ const testChannel = generateChannelWrapper({
259
260
  ...channel,
260
- countUnread: jest.fn().mockReturnValue(0),
261
- muteStatus: jest.fn().mockReturnValue({ muted: false }),
262
261
  on: channelOnMock,
263
- };
262
+ });
264
263
 
265
264
  const { getByTestId } = render(<TestComponent />);
266
265
 
@@ -291,9 +290,9 @@ describe('ChannelPreview', () => {
291
290
  it('should update the unread count to 0 if the channel is muted', async () => {
292
291
  const channelOnMock = jest.fn().mockReturnValue({ unsubscribe: jest.fn() });
293
292
 
294
- const c = generateChannel({
293
+ const c = generateChannelWrapper({
295
294
  countUnread: jest.fn().mockReturnValue(10),
296
- muteStatus: jest.fn().mockReturnValue({ muted: false }),
295
+ muteStatus: jest.fn().mockReturnValue({ muted: true }),
297
296
  on: channelOnMock,
298
297
  });
299
298
 
@@ -304,7 +303,7 @@ describe('ChannelPreview', () => {
304
303
  await waitFor(() => getByTestId('channel-id'));
305
304
 
306
305
  await waitFor(() => {
307
- expect(getByTestId('unread-count')).toHaveTextContent('10');
306
+ expect(getByTestId('unread-count')).toHaveTextContent('0');
308
307
  });
309
308
 
310
309
  act(() => {
@@ -5,6 +5,9 @@ import type { Channel, ChannelState, Event, MessageResponse, StreamChat } from '
5
5
 
6
6
  import { useIsChannelMuted } from './useIsChannelMuted';
7
7
 
8
+ import { useLatestMessagePreview } from './useLatestMessagePreview';
9
+
10
+ import { useChannelsContext } from '../../../contexts';
8
11
  import type { DefaultStreamChatGenerics } from '../../../types/types';
9
12
 
10
13
  export const useChannelPreviewData = <
@@ -12,14 +15,40 @@ export const useChannelPreviewData = <
12
15
  >(
13
16
  channel: Channel<StreamChatGenerics>,
14
17
  client: StreamChat<StreamChatGenerics>,
15
- forceUpdate?: number,
18
+ forceUpdateOverride?: number,
16
19
  ) => {
20
+ const [forceUpdate, setForceUpdate] = useState(0);
17
21
  const [lastMessage, setLastMessage] = useState<
18
22
  | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>
19
23
  | MessageResponse<StreamChatGenerics>
20
24
  >(channel.state.messages[channel.state.messages.length - 1]);
21
25
  const [unread, setUnread] = useState(channel.countUnread());
22
26
  const { muted } = useIsChannelMuted(channel);
27
+ const { forceUpdate: contextForceUpdate } = useChannelsContext<StreamChatGenerics>();
28
+ const channelListForceUpdate = forceUpdateOverride ?? contextForceUpdate;
29
+
30
+ const channelLastMessage = channel.lastMessage();
31
+ const channelLastMessageString = `${channelLastMessage?.id}${channelLastMessage?.updated_at}`;
32
+
33
+ useEffect(() => {
34
+ const { unsubscribe } = client.on('notification.mark_read', () => {
35
+ setUnread(channel.countUnread());
36
+ });
37
+ return unsubscribe;
38
+ }, [channel, client]);
39
+
40
+ useEffect(() => {
41
+ if (
42
+ channelLastMessage &&
43
+ (channelLastMessage.id !== lastMessage?.id ||
44
+ channelLastMessage.updated_at !== lastMessage?.updated_at)
45
+ ) {
46
+ setLastMessage(channelLastMessage);
47
+ }
48
+ const newUnreadCount = channel.countUnread();
49
+ setUnread(newUnreadCount);
50
+ // eslint-disable-next-line react-hooks/exhaustive-deps
51
+ }, [channel, channelLastMessageString, channelListForceUpdate]);
23
52
 
24
53
  /**
25
54
  * This effect listens for the `notification.mark_read` event and sets the unread count to 0
@@ -27,9 +56,14 @@ export const useChannelPreviewData = <
27
56
  useEffect(() => {
28
57
  const handleReadEvent = (event: Event) => {
29
58
  if (!event.cid) return;
30
- if (channel.cid === event.cid) setUnread(0);
59
+ if (channel.cid !== event.cid) return;
60
+ if (event?.user?.id === client.userID) {
61
+ setUnread(0);
62
+ } else if (event?.user?.id) {
63
+ setForceUpdate((prev) => prev + 1);
64
+ }
31
65
  };
32
- const { unsubscribe } = client.on('notification.mark_read', handleReadEvent);
66
+ const { unsubscribe } = client.on('message.read', handleReadEvent);
33
67
  return unsubscribe;
34
68
  }, [client, channel]);
35
69
 
@@ -70,16 +104,35 @@ export const useChannelPreviewData = <
70
104
  refreshUnreadCount();
71
105
  };
72
106
 
107
+ const handleNewMessageEvent = (event: Event<StreamChatGenerics>) => {
108
+ const message = event.message;
109
+ if (message && (!message.parent_id || message.show_in_channel)) {
110
+ setLastMessage(message);
111
+ setUnread(channel.countUnread());
112
+ }
113
+ };
114
+
115
+ const handleUpdatedOrDeletedMessage = (event: Event<StreamChatGenerics>) => {
116
+ setLastMessage((prevLastMessage) => {
117
+ if (prevLastMessage?.id === event.message?.id) {
118
+ return event.message;
119
+ }
120
+ return prevLastMessage;
121
+ });
122
+ };
123
+
73
124
  const listeners = [
74
- channel.on('message.new', handleEvent),
75
- channel.on('message.updated', handleEvent),
76
- channel.on('message.deleted', handleEvent),
125
+ channel.on('message.new', handleNewMessageEvent),
126
+ channel.on('message.updated', handleUpdatedOrDeletedMessage),
127
+ channel.on('message.deleted', handleUpdatedOrDeletedMessage),
77
128
  channel.on('message.undeleted', handleEvent),
78
129
  channel.on('channel.truncated', handleEvent),
79
130
  ];
80
131
 
81
132
  return () => listeners.forEach((l) => l.unsubscribe());
82
- }, [channel, refreshUnreadCount, forceUpdate]);
133
+ }, [channel, refreshUnreadCount, forceUpdate, channelListForceUpdate]);
134
+
135
+ const latestMessagePreview = useLatestMessagePreview(channel, forceUpdate, lastMessage);
83
136
 
84
- return { lastMessage, muted, unread };
137
+ return { latestMessagePreview, muted, unread };
85
138
  };
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.42.2-beta.1"
2
+ "version": "5.42.2"
3
3
  }