stream-chat-react-native-core 5.34.1-beta.3 → 5.34.1-beta.4

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,87 +1,32 @@
1
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
- var _typeof3 = require("@babel/runtime/helpers/typeof");
3
1
  Object.defineProperty(exports, "__esModule", {
4
2
  value: true
5
3
  });
6
4
  exports.getReadStates = void 0;
7
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
8
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
10
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof3(i) ? i : i + ""; }
13
- function _toPrimitive(t, r) { if ("object" != (0, _typeof2["default"])(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != (0, _typeof2["default"])(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
14
5
  var getReadStates = function getReadStates(clientUserId, messages, read) {
15
- var readData = messages.reduce(function (acc, cur) {
16
- if (cur.id) {
17
- acc[cur.id] = false;
18
- }
19
- return acc;
20
- }, {});
21
- var filteredMessagesReversed = messages.filter(function (msg) {
22
- return msg.updated_at;
23
- }).reverse();
6
+ var readData = {};
24
7
  if (read) {
25
- var _ignore = read[clientUserId != null ? clientUserId : ''],
26
- filteredRead = (0, _objectWithoutProperties2["default"])(read, [clientUserId != null ? clientUserId : ''].map(_toPropertyKey));
27
- var members = Object.values(filteredRead);
28
- var memberReadCount = 0;
29
- var _iterator = _createForOfIteratorHelper(filteredMessagesReversed),
30
- _step;
31
- try {
32
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
33
- var message = _step.value;
34
- if (!members.length) {
35
- readData[message.id] = memberReadCount || true;
36
- } else {
37
- var _loop = function _loop(member) {
38
- if (!member.last_read) {
39
- return "continue";
40
- }
41
- if (message.created_at < member.last_read) {
42
- var numberOfReads = Object.keys(read).length;
43
- if (numberOfReads === 1) {
44
- readData[message.id] = true;
45
- } else {
46
- var currentMessageReadData = readData[message.id];
47
- readData[message.id] = typeof currentMessageReadData === 'boolean' ? memberReadCount + 1 : currentMessageReadData + 1;
48
- }
49
- var userIndex = members.findIndex(function (_ref) {
50
- var _member$user;
51
- var user = _ref.user;
52
- return user.id === ((_member$user = member.user) == null ? void 0 : _member$user.id);
53
- });
54
- if (userIndex !== -1) {
55
- members.splice(userIndex, 1);
56
- if (numberOfReads > 1) {
57
- memberReadCount += 1;
58
- }
59
- }
60
- }
61
- };
62
- var _iterator2 = _createForOfIteratorHelper(members),
63
- _step2;
64
- try {
65
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
66
- var member = _step2.value;
67
- var _ret = _loop(member);
68
- if (_ret === "continue") continue;
69
- }
70
- } catch (err) {
71
- _iterator2.e(err);
72
- } finally {
73
- _iterator2.f();
8
+ Object.values(read).forEach(function (readState) {
9
+ if (!readState.last_read) return;
10
+ var userLastReadMsgId;
11
+ messages.forEach(function (msg) {
12
+ if (msg.created_at && msg.created_at < readState.last_read) {
13
+ var _msg$user;
14
+ userLastReadMsgId = msg.id;
15
+ if (!readData[userLastReadMsgId]) {
16
+ readData[userLastReadMsgId] = 0;
74
17
  }
75
- if (readData[message.id] === false) {
76
- readData[message.id] = memberReadCount || false;
18
+ if (((_msg$user = msg.user) == null ? void 0 : _msg$user.id) !== clientUserId) {
19
+ readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
77
20
  }
78
21
  }
22
+ });
23
+ if (userLastReadMsgId) {
24
+ if (!readData[userLastReadMsgId]) {
25
+ readData[userLastReadMsgId] = 0;
26
+ }
27
+ readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
79
28
  }
80
- } catch (err) {
81
- _iterator.e(err);
82
- } finally {
83
- _iterator.f();
84
- }
29
+ });
85
30
  }
86
31
  return readData;
87
32
  };
@@ -1 +1 @@
1
- {"version":3,"names":["getReadStates","clientUserId","messages","read","readData","reduce","acc","cur","id","filteredMessagesReversed","filter","msg","updated_at","reverse","_ignore","filteredRead","_objectWithoutProperties2","map","_toPropertyKey","members","Object","values","memberReadCount","_iterator","_createForOfIteratorHelper","_step","s","n","done","message","value","length","_loop","member","last_read","created_at","numberOfReads","keys","currentMessageReadData","userIndex","findIndex","_ref","_member$user","user","splice","_iterator2","_step2","_ret","err","e","f","exports"],"sourceRoot":"../../../../../src","sources":["components/MessageList/utils/getReadStates.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getReadStates","clientUserId","messages","read","readData","Object","values","forEach","readState","last_read","userLastReadMsgId","msg","created_at","_msg$user","id","user","exports"],"sourceRoot":"../../../../../src","sources":["components/MessageList/utils/getReadStates.ts"],"mappings":";;;;AAKO,IAAMA,aAAa,GAAG,SAAhBA,aAAaA,CAGxBC,YAAgC,EAChCC,QAE4D,EAC5DC,IAAsD,EACnD;EACH,IAAMC,QAAgC,GAAG,CAAC,CAAC;EAE3C,IAAID,IAAI,EAAE;IAQRE,MAAM,CAACC,MAAM,CAACH,IAAI,CAAC,CAACI,OAAO,CAAC,UAACC,SAAS,EAAK;MACzC,IAAI,CAACA,SAAS,CAACC,SAAS,EAAE;MAE1B,IAAIC,iBAAqC;MAGzCR,QAAQ,CAACK,OAAO,CAAC,UAACI,GAAG,EAAK;QACxB,IAAIA,GAAG,CAACC,UAAU,IAAID,GAAG,CAACC,UAAU,GAAGJ,SAAS,CAACC,SAAS,EAAE;UAAA,IAAAI,SAAA;UAC1DH,iBAAiB,GAAGC,GAAG,CAACG,EAAE;UAG1B,IAAI,CAACV,QAAQ,CAACM,iBAAiB,CAAC,EAAE;YAChCN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;UACjC;UAGA,IAAI,EAAAG,SAAA,GAAAF,GAAG,CAACI,IAAI,qBAARF,SAAA,CAAUC,EAAE,MAAKb,YAAY,EAAE;YACjCG,QAAQ,CAACM,iBAAiB,CAAC,GAAGN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;UAC/D;QACF;MACF,CAAC,CAAC;MAGF,IAAIA,iBAAiB,EAAE;QACrB,IAAI,CAACN,QAAQ,CAACM,iBAAiB,CAAC,EAAE;UAChCN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;QACjC;QAEAN,QAAQ,CAACM,iBAAiB,CAAC,GAAGN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;MAC/D;IACF,CAAC,CAAC;EACJ;EAEA,OAAON,QAAQ;AACjB,CAAC;AAACY,OAAA,CAAAhB,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.34.1-beta.3"
2
+ "version": "5.34.1-beta.4"
3
3
  }
@@ -1,87 +1,32 @@
1
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
- var _typeof3 = require("@babel/runtime/helpers/typeof");
3
1
  Object.defineProperty(exports, "__esModule", {
4
2
  value: true
5
3
  });
6
4
  exports.getReadStates = void 0;
7
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
8
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
10
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof3(i) ? i : i + ""; }
13
- function _toPrimitive(t, r) { if ("object" != (0, _typeof2["default"])(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != (0, _typeof2["default"])(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
14
5
  var getReadStates = function getReadStates(clientUserId, messages, read) {
15
- var readData = messages.reduce(function (acc, cur) {
16
- if (cur.id) {
17
- acc[cur.id] = false;
18
- }
19
- return acc;
20
- }, {});
21
- var filteredMessagesReversed = messages.filter(function (msg) {
22
- return msg.updated_at;
23
- }).reverse();
6
+ var readData = {};
24
7
  if (read) {
25
- var _ignore = read[clientUserId != null ? clientUserId : ''],
26
- filteredRead = (0, _objectWithoutProperties2["default"])(read, [clientUserId != null ? clientUserId : ''].map(_toPropertyKey));
27
- var members = Object.values(filteredRead);
28
- var memberReadCount = 0;
29
- var _iterator = _createForOfIteratorHelper(filteredMessagesReversed),
30
- _step;
31
- try {
32
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
33
- var message = _step.value;
34
- if (!members.length) {
35
- readData[message.id] = memberReadCount || true;
36
- } else {
37
- var _loop = function _loop(member) {
38
- if (!member.last_read) {
39
- return "continue";
40
- }
41
- if (message.created_at < member.last_read) {
42
- var numberOfReads = Object.keys(read).length;
43
- if (numberOfReads === 1) {
44
- readData[message.id] = true;
45
- } else {
46
- var currentMessageReadData = readData[message.id];
47
- readData[message.id] = typeof currentMessageReadData === 'boolean' ? memberReadCount + 1 : currentMessageReadData + 1;
48
- }
49
- var userIndex = members.findIndex(function (_ref) {
50
- var _member$user;
51
- var user = _ref.user;
52
- return user.id === ((_member$user = member.user) == null ? void 0 : _member$user.id);
53
- });
54
- if (userIndex !== -1) {
55
- members.splice(userIndex, 1);
56
- if (numberOfReads > 1) {
57
- memberReadCount += 1;
58
- }
59
- }
60
- }
61
- };
62
- var _iterator2 = _createForOfIteratorHelper(members),
63
- _step2;
64
- try {
65
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
66
- var member = _step2.value;
67
- var _ret = _loop(member);
68
- if (_ret === "continue") continue;
69
- }
70
- } catch (err) {
71
- _iterator2.e(err);
72
- } finally {
73
- _iterator2.f();
8
+ Object.values(read).forEach(function (readState) {
9
+ if (!readState.last_read) return;
10
+ var userLastReadMsgId;
11
+ messages.forEach(function (msg) {
12
+ if (msg.created_at && msg.created_at < readState.last_read) {
13
+ var _msg$user;
14
+ userLastReadMsgId = msg.id;
15
+ if (!readData[userLastReadMsgId]) {
16
+ readData[userLastReadMsgId] = 0;
74
17
  }
75
- if (readData[message.id] === false) {
76
- readData[message.id] = memberReadCount || false;
18
+ if (((_msg$user = msg.user) == null ? void 0 : _msg$user.id) !== clientUserId) {
19
+ readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
77
20
  }
78
21
  }
22
+ });
23
+ if (userLastReadMsgId) {
24
+ if (!readData[userLastReadMsgId]) {
25
+ readData[userLastReadMsgId] = 0;
26
+ }
27
+ readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
79
28
  }
80
- } catch (err) {
81
- _iterator.e(err);
82
- } finally {
83
- _iterator.f();
84
- }
29
+ });
85
30
  }
86
31
  return readData;
87
32
  };
@@ -1 +1 @@
1
- {"version":3,"names":["getReadStates","clientUserId","messages","read","readData","reduce","acc","cur","id","filteredMessagesReversed","filter","msg","updated_at","reverse","_ignore","filteredRead","_objectWithoutProperties2","map","_toPropertyKey","members","Object","values","memberReadCount","_iterator","_createForOfIteratorHelper","_step","s","n","done","message","value","length","_loop","member","last_read","created_at","numberOfReads","keys","currentMessageReadData","userIndex","findIndex","_ref","_member$user","user","splice","_iterator2","_step2","_ret","err","e","f","exports"],"sourceRoot":"../../../../../src","sources":["components/MessageList/utils/getReadStates.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getReadStates","clientUserId","messages","read","readData","Object","values","forEach","readState","last_read","userLastReadMsgId","msg","created_at","_msg$user","id","user","exports"],"sourceRoot":"../../../../../src","sources":["components/MessageList/utils/getReadStates.ts"],"mappings":";;;;AAKO,IAAMA,aAAa,GAAG,SAAhBA,aAAaA,CAGxBC,YAAgC,EAChCC,QAE4D,EAC5DC,IAAsD,EACnD;EACH,IAAMC,QAAgC,GAAG,CAAC,CAAC;EAE3C,IAAID,IAAI,EAAE;IAQRE,MAAM,CAACC,MAAM,CAACH,IAAI,CAAC,CAACI,OAAO,CAAC,UAACC,SAAS,EAAK;MACzC,IAAI,CAACA,SAAS,CAACC,SAAS,EAAE;MAE1B,IAAIC,iBAAqC;MAGzCR,QAAQ,CAACK,OAAO,CAAC,UAACI,GAAG,EAAK;QACxB,IAAIA,GAAG,CAACC,UAAU,IAAID,GAAG,CAACC,UAAU,GAAGJ,SAAS,CAACC,SAAS,EAAE;UAAA,IAAAI,SAAA;UAC1DH,iBAAiB,GAAGC,GAAG,CAACG,EAAE;UAG1B,IAAI,CAACV,QAAQ,CAACM,iBAAiB,CAAC,EAAE;YAChCN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;UACjC;UAGA,IAAI,EAAAG,SAAA,GAAAF,GAAG,CAACI,IAAI,qBAARF,SAAA,CAAUC,EAAE,MAAKb,YAAY,EAAE;YACjCG,QAAQ,CAACM,iBAAiB,CAAC,GAAGN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;UAC/D;QACF;MACF,CAAC,CAAC;MAGF,IAAIA,iBAAiB,EAAE;QACrB,IAAI,CAACN,QAAQ,CAACM,iBAAiB,CAAC,EAAE;UAChCN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;QACjC;QAEAN,QAAQ,CAACM,iBAAiB,CAAC,GAAGN,QAAQ,CAACM,iBAAiB,CAAC,GAAG,CAAC;MAC/D;IACF,CAAC,CAAC;EACJ;EAEA,OAAON,QAAQ;AACjB,CAAC;AAACY,OAAA,CAAAhB,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.34.1-beta.3"
2
+ "version": "5.34.1-beta.4"
3
3
  }
@@ -10,7 +10,5 @@ export declare const getReadStates: <StreamChatGenerics extends DefaultStreamCha
10
10
  first_unread_message_id?: string | undefined;
11
11
  last_read_message_id?: string | undefined;
12
12
  };
13
- } | undefined) => {
14
- [key: string]: number | boolean;
15
- };
13
+ } | undefined) => Record<string, number>;
16
14
  //# sourceMappingURL=getReadStates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getReadStates.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/utils/getReadStates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2EAA2E,CAAC;AAClI,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,aAAa,mGAGV,MAAM,GAAG,SAAS;;;;;;;;;;CAiGjC,CAAC"}
1
+ {"version":3,"file":"getReadStates.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/utils/getReadStates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2EAA2E,CAAC;AAClI,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,aAAa,mGAGV,MAAM,GAAG,SAAS;;;;;;;;wCAkDjC,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.34.1-beta.3",
4
+ "version": "5.34.1-beta.4",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -12,28 +12,9 @@ export const getReadStates = <
12
12
  | ThreadContextValue<StreamChatGenerics>['threadMessages'],
13
13
  read?: ChannelContextValue<StreamChatGenerics>['read'],
14
14
  ) => {
15
- const readData = messages.reduce((acc, cur) => {
16
- if (cur.id) {
17
- acc[cur.id] = false;
18
- }
19
- return acc;
20
- }, {} as { [key: string]: boolean | number });
21
-
22
- const filteredMessagesReversed = messages.filter((msg) => msg.updated_at).reverse();
15
+ const readData: Record<string, number> = {};
23
16
 
24
17
  if (read) {
25
- /**
26
- * Channel read state is stored by user and we only care about users who aren't the client
27
- */
28
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
- const { [clientUserId ?? '']: _ignore, ...filteredRead } = read;
30
- const members = Object.values(filteredRead);
31
-
32
- /**
33
- * Track number of members who have read previous messages
34
- */
35
- let memberReadCount = 0;
36
-
37
18
  /**
38
19
  * Array is in reverse order so newest message is at 0,
39
20
  * we find the index of the first message that is older
@@ -41,65 +22,37 @@ export const getReadStates = <
41
22
  * if there are no newer messages, the first message is
42
23
  * last read message.
43
24
  */
44
- for (const message of filteredMessagesReversed) {
45
- /**
46
- * If all members are removed then they have read these
47
- * messages. We do not increment memberReadCount for 1:1
48
- * chats, so this should be true, not a number in that case.
49
- */
50
- if (!members.length) {
51
- readData[message.id] = memberReadCount || true;
52
- } else {
53
- for (const member of members) {
54
- /**
55
- * If no last read continue, we can't remove the user
56
- * because this would mark all messages in a new channel
57
- * true until at least one other user reads a message.
58
- */
59
- if (!member.last_read) {
60
- continue;
25
+ Object.values(read).forEach((readState) => {
26
+ if (!readState.last_read) return;
27
+
28
+ let userLastReadMsgId: string | undefined;
29
+
30
+ // loop messages sent by current user and add read data for other users in channel
31
+ messages.forEach((msg) => {
32
+ if (msg.created_at && msg.created_at < readState.last_read) {
33
+ userLastReadMsgId = msg.id;
34
+
35
+ // if true, save other user's read data for all messages they've read
36
+ if (!readData[userLastReadMsgId]) {
37
+ readData[userLastReadMsgId] = 0;
61
38
  }
62
39
 
63
- /**
64
- * If there there is a last read message add the user
65
- * to the array of last reads for that message and remove
66
- * the user from the list of users being checked
67
- */
68
- if (message.created_at < member.last_read) {
69
- /**
70
- * if this is a direct message the length will be 1
71
- * as we already deleted the current user from the object
72
- */
73
- const numberOfReads = Object.keys(read).length;
74
- if (numberOfReads === 1) {
75
- readData[message.id] = true;
76
- } else {
77
- const currentMessageReadData = readData[message.id];
78
- readData[message.id] =
79
- typeof currentMessageReadData === 'boolean'
80
- ? memberReadCount + 1
81
- : currentMessageReadData + 1;
82
- }
83
- const userIndex = members.findIndex(({ user }) => user.id === member.user?.id);
84
- if (userIndex !== -1) {
85
- members.splice(userIndex, 1);
86
- if (numberOfReads > 1) {
87
- memberReadCount += 1;
88
- }
89
- }
40
+ // Only increment read count if the message is not sent by the current user
41
+ if (msg.user?.id !== clientUserId) {
42
+ readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
90
43
  }
91
44
  }
45
+ });
92
46
 
93
- /**
94
- * If this is not the last message for a user this will still be
95
- * set to false. But if other users have read further the number
96
- * should be how many have read beyond this message.
97
- */
98
- if (readData[message.id] === false) {
99
- readData[message.id] = memberReadCount || false;
47
+ // if true, only save read data for other user's last read message
48
+ if (userLastReadMsgId) {
49
+ if (!readData[userLastReadMsgId]) {
50
+ readData[userLastReadMsgId] = 0;
100
51
  }
52
+
53
+ readData[userLastReadMsgId] = readData[userLastReadMsgId] + 1;
101
54
  }
102
- }
55
+ });
103
56
  }
104
57
 
105
58
  return readData;
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.34.1-beta.3"
2
+ "version": "5.34.1-beta.4"
3
3
  }