@ethora/chat-component-rn 26.7.7 → 26.7.9

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 (170) hide show
  1. package/lib/commonjs/components/MainComponents/ChatRoom.js +17 -8
  2. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  3. package/lib/commonjs/components/MainComponents/MediaMessage.js +8 -5
  4. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  5. package/lib/commonjs/components/MainComponents/MessageContainer.js +5 -1
  6. package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
  7. package/lib/commonjs/components/MainComponents/MessageList.js +2 -1
  8. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  9. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +51 -12
  10. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  11. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +12 -1
  12. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  13. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +13 -2
  14. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  15. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +13 -2
  16. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  17. package/lib/commonjs/components/styled/MessageImage.js +3 -1
  18. package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
  19. package/lib/commonjs/components/styled/UnsupportedType.js +14 -4
  20. package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
  21. package/lib/commonjs/components/styled/VideoMessage.js +3 -1
  22. package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
  23. package/lib/commonjs/context/xmppProvider.js +46 -31
  24. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  25. package/lib/commonjs/helpers/createMessageFromXml.js +19 -1
  26. package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
  27. package/lib/commonjs/helpers/getDisplayFileName.js +79 -0
  28. package/lib/commonjs/helpers/getDisplayFileName.js.map +1 -0
  29. package/lib/commonjs/helpers/getServerReadTimestamp.js +125 -0
  30. package/lib/commonjs/helpers/getServerReadTimestamp.js.map +1 -0
  31. package/lib/commonjs/helpers/initXmppRooms.js +9 -7
  32. package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
  33. package/lib/commonjs/helpers/isOwnMessage.js +75 -0
  34. package/lib/commonjs/helpers/isOwnMessage.js.map +1 -0
  35. package/lib/commonjs/helpers/mimeToExtension.js +6 -14
  36. package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
  37. package/lib/commonjs/hooks/useChatRoomFocus.js +17 -8
  38. package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
  39. package/lib/commonjs/hooks/useChatWrapperInit.js +12 -7
  40. package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
  41. package/lib/commonjs/networking/stanzaHandlers.js +20 -2
  42. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  43. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +45 -11
  44. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  45. package/lib/commonjs/networking/xmppClient.js +36 -2
  46. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  47. package/lib/commonjs/roomStore/index.js +35 -2
  48. package/lib/commonjs/roomStore/index.js.map +1 -1
  49. package/lib/commonjs/roomStore/persistence.js +200 -11
  50. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  51. package/lib/commonjs/roomStore/roomsSlice.js +83 -6
  52. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  53. package/lib/module/components/MainComponents/ChatRoom.js +17 -8
  54. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  55. package/lib/module/components/MainComponents/MediaMessage.js +9 -6
  56. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  57. package/lib/module/components/MainComponents/MessageContainer.js +5 -1
  58. package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
  59. package/lib/module/components/MainComponents/MessageList.js +2 -1
  60. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  61. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +52 -13
  62. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  63. package/lib/module/components/RoomComponents/styled/LastMessageFile.js +12 -1
  64. package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  65. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +13 -2
  66. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  67. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +13 -2
  68. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  69. package/lib/module/components/styled/MessageImage.js +3 -1
  70. package/lib/module/components/styled/MessageImage.js.map +1 -1
  71. package/lib/module/components/styled/UnsupportedType.js +14 -4
  72. package/lib/module/components/styled/UnsupportedType.js.map +1 -1
  73. package/lib/module/components/styled/VideoMessage.js +3 -1
  74. package/lib/module/components/styled/VideoMessage.js.map +1 -1
  75. package/lib/module/context/xmppProvider.js +47 -32
  76. package/lib/module/context/xmppProvider.js.map +1 -1
  77. package/lib/module/helpers/createMessageFromXml.js +19 -1
  78. package/lib/module/helpers/createMessageFromXml.js.map +1 -1
  79. package/lib/module/helpers/getDisplayFileName.js +73 -0
  80. package/lib/module/helpers/getDisplayFileName.js.map +1 -0
  81. package/lib/module/helpers/getServerReadTimestamp.js +120 -0
  82. package/lib/module/helpers/getServerReadTimestamp.js.map +1 -0
  83. package/lib/module/helpers/initXmppRooms.js +9 -7
  84. package/lib/module/helpers/initXmppRooms.js.map +1 -1
  85. package/lib/module/helpers/isOwnMessage.js +70 -0
  86. package/lib/module/helpers/isOwnMessage.js.map +1 -0
  87. package/lib/module/helpers/mimeToExtension.js +6 -13
  88. package/lib/module/helpers/mimeToExtension.js.map +1 -1
  89. package/lib/module/hooks/useChatRoomFocus.js +17 -8
  90. package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
  91. package/lib/module/hooks/useChatWrapperInit.js +12 -7
  92. package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
  93. package/lib/module/networking/stanzaHandlers.js +20 -2
  94. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  95. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +45 -11
  96. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  97. package/lib/module/networking/xmppClient.js +36 -2
  98. package/lib/module/networking/xmppClient.js.map +1 -1
  99. package/lib/module/roomStore/index.js +37 -4
  100. package/lib/module/roomStore/index.js.map +1 -1
  101. package/lib/module/roomStore/persistence.js +197 -11
  102. package/lib/module/roomStore/persistence.js.map +1 -1
  103. package/lib/module/roomStore/roomsSlice.js +83 -6
  104. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  105. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  106. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  107. package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
  108. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  109. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  110. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts +1 -1
  111. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
  112. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts +1 -1
  113. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
  114. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts +1 -1
  115. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
  116. package/lib/typescript/components/styled/MessageImage.d.ts +6 -0
  117. package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
  118. package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
  119. package/lib/typescript/components/styled/VideoMessage.d.ts +6 -0
  120. package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
  121. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  122. package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
  123. package/lib/typescript/helpers/getDisplayFileName.d.ts +49 -0
  124. package/lib/typescript/helpers/getDisplayFileName.d.ts.map +1 -0
  125. package/lib/typescript/helpers/getServerReadTimestamp.d.ts +69 -0
  126. package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +1 -0
  127. package/lib/typescript/helpers/initXmppRooms.d.ts.map +1 -1
  128. package/lib/typescript/helpers/isOwnMessage.d.ts +36 -0
  129. package/lib/typescript/helpers/isOwnMessage.d.ts.map +1 -0
  130. package/lib/typescript/helpers/mimeToExtension.d.ts +0 -15
  131. package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
  132. package/lib/typescript/hooks/useChatRoomFocus.d.ts +4 -1
  133. package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
  134. package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
  135. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  136. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +9 -2
  137. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
  138. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  139. package/lib/typescript/roomStore/index.d.ts.map +1 -1
  140. package/lib/typescript/roomStore/persistence.d.ts +18 -1
  141. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  142. package/lib/typescript/roomStore/roomsSlice.d.ts +13 -1
  143. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  144. package/package.json +1 -1
  145. package/src/components/MainComponents/ChatRoom.tsx +21 -10
  146. package/src/components/MainComponents/MediaMessage.tsx +8 -5
  147. package/src/components/MainComponents/MessageContainer.tsx +5 -1
  148. package/src/components/MainComponents/MessageList.tsx +2 -1
  149. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +63 -26
  150. package/src/components/RoomComponents/styled/LastMessageFile.tsx +14 -2
  151. package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +14 -2
  152. package/src/components/RoomComponents/styled/LastMessageVideo.tsx +14 -2
  153. package/src/components/styled/MessageImage.tsx +8 -1
  154. package/src/components/styled/UnsupportedType.tsx +14 -4
  155. package/src/components/styled/VideoMessage.tsx +8 -1
  156. package/src/context/xmppProvider.tsx +47 -24
  157. package/src/helpers/createMessageFromXml.ts +20 -1
  158. package/src/helpers/getDisplayFileName.ts +87 -0
  159. package/src/helpers/getServerReadTimestamp.ts +120 -0
  160. package/src/helpers/initXmppRooms.tsx +9 -9
  161. package/src/helpers/isOwnMessage.ts +90 -0
  162. package/src/helpers/mimeToExtension.ts +6 -22
  163. package/src/hooks/useChatRoomFocus.ts +14 -5
  164. package/src/hooks/useChatWrapperInit.ts +12 -7
  165. package/src/networking/stanzaHandlers.ts +20 -6
  166. package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +65 -18
  167. package/src/networking/xmppClient.ts +41 -2
  168. package/src/roomStore/index.ts +40 -4
  169. package/src/roomStore/persistence.ts +197 -7
  170. package/src/roomStore/roomsSlice.ts +84 -6
@@ -8,6 +8,7 @@ var _react = require("react");
8
8
  var _reactRedux = require("react-redux");
9
9
  var _roomsSlice = require("../roomStore/roomsSlice");
10
10
  var _roomStore = require("../roomStore");
11
+ var _getServerReadTimestamp = require("../helpers/getServerReadTimestamp");
11
12
  /**
12
13
  * Public hook for consumers embedding `<ChatRoom>` inside a tab-based
13
14
  * navigator. Mirrors the mount/unmount unread-tracking that ChatRoom
@@ -18,7 +19,10 @@ var _roomStore = require("../roomStore");
18
19
  * Without this hook, `useUnread()` will always return 0 for the chat
19
20
  * room because the SDK assumes "mounted == active". With this hook,
20
21
  * focus marks the room visible (clearing the badge) and blur stamps
21
- * `lastViewedTimestamp = Date.now()` so future messages count as unread.
22
+ * `lastViewedTimestamp` to the newest SERVER-acknowledged message so
23
+ * future messages count as unread. Deliberately not `Date.now()`: a
24
+ * device clock running ahead would write a future marker that the
25
+ * forward-only private-store merge could never correct again (bug #38).
22
26
  *
23
27
  * Usage with React Navigation:
24
28
  *
@@ -44,14 +48,19 @@ const useChatRoomFocus = ({
44
48
  isFocused: false
45
49
  });
46
50
  const leaveRoom = jid => {
47
- const timestamp = Date.now();
48
- dispatch((0, _roomsSlice.setLastViewedTimestamp)({
49
- chatJID: jid,
50
- timestamp
51
- }));
51
+ const state = _roomStore.store.getState();
52
+ const rooms = state.rooms?.rooms;
53
+ const timestamp = (0, _getServerReadTimestamp.getServerReadTimestamp)(rooms?.[jid], state.roomHeapSlice);
54
+ // Only stamp when we actually have something to anchor to - skip
55
+ // rather than fall back to the device clock (bug #38).
56
+ if (timestamp > 0) {
57
+ dispatch((0, _roomsSlice.setLastViewedTimestamp)({
58
+ chatJID: jid,
59
+ timestamp
60
+ }));
61
+ }
52
62
  dispatch((0, _roomsSlice.clearVisibleRoom)());
53
- const rooms = _roomStore.store.getState().rooms?.rooms;
54
- _roomStore.store.getState().chatSettingStore?.client?.flushLastViewedToPrivateStoreStanza(rooms, {
63
+ state.chatSettingStore?.client?.flushLastViewedToPrivateStoreStanza(rooms, {
55
64
  visibleRoomJID: jid
56
65
  }).catch(() => {});
57
66
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactRedux","_roomsSlice","_roomStore","useChatRoomFocus","roomJID","isFocused","dispatch","useDispatch","prevRef","useRef","leaveRoom","jid","timestamp","Date","now","setLastViewedTimestamp","chatJID","clearVisibleRoom","rooms","store","getState","chatSettingStore","client","flushLastViewedToPrivateStoreStanza","visibleRoomJID","catch","useEffect","prev","current","setCurrentRoom","setVisibleRoom","exports","_default","default"],"sourceRoot":"../../../src","sources":["hooks/useChatRoomFocus.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAMA,IAAAG,UAAA,GAAAH,OAAA;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMI,gBAAgB,GAAGA,CAAC;EAC/BC,OAAO;EACPC;AACuB,CAAC,KAAK;EAC7B,MAAMC,QAAQ,GAAG,IAAAC,uBAAW,EAAC,CAAC;EAC9B,MAAMC,OAAO,GAAG,IAAAC,aAAM,EAAiD;IACrEL,OAAO,EAAE,IAAI;IACbC,SAAS,EAAE;EACb,CAAC,CAAC;EAEF,MAAMK,SAAS,GAAIC,GAAW,IAAK;IACjC,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAC5BR,QAAQ,CAAC,IAAAS,kCAAsB,EAAC;MAAEC,OAAO,EAAEL,GAAG;MAAEC;IAAU,CAAC,CAAC,CAAC;IAC7DN,QAAQ,CAAC,IAAAW,4BAAgB,EAAC,CAAC,CAAC;IAC5B,MAAMC,KAAK,GAAGC,gBAAK,CAACC,QAAQ,CAAC,CAAC,CAACF,KAAK,EAAEA,KAAK;IAC1CC,gBAAK,CAACC,QAAQ,CAAC,CAAC,CAACC,gBAAgB,EAAUC,MAAM,EAC9CC,mCAAmC,CAACL,KAAK,EAAE;MAAEM,cAAc,EAAEb;IAAI,CAAC,CAAC,CACpEc,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC;EAED,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,IAAI,GAAGnB,OAAO,CAACoB,OAAO;IAC5B,IAAID,IAAI,CAACtB,SAAS,IAAIsB,IAAI,CAACvB,OAAO,KAAKuB,IAAI,CAACvB,OAAO,KAAKA,OAAO,IAAI,CAACC,SAAS,CAAC,EAAE;MAC9EK,SAAS,CAACiB,IAAI,CAACvB,OAAO,CAAC;IACzB;IAEA,IAAIA,OAAO,IAAIC,SAAS,EAAE;MACxBC,QAAQ,CAAC,IAAAuB,0BAAc,EAAC;QAAEzB;MAAQ,CAAC,CAAC,CAAC;MACrCE,QAAQ,CAAC,IAAAwB,0BAAc,EAAC;QAAE1B;MAAQ,CAAC,CAAC,CAAC;IACvC;IAEAI,OAAO,CAACoB,OAAO,GAAG;MAAExB,OAAO,EAAEA,OAAO,IAAI,IAAI;MAAEC;IAAU,CAAC;EAC3D,CAAC,EAAE,CAACD,OAAO,EAAEC,SAAS,EAAEC,QAAQ,CAAC,CAAC;EAElC,IAAAoB,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACX,MAAMC,IAAI,GAAGnB,OAAO,CAACoB,OAAO;MAC5B,IAAID,IAAI,CAACtB,SAAS,IAAIsB,IAAI,CAACvB,OAAO,EAAE;QAClCM,SAAS,CAACiB,IAAI,CAACvB,OAAO,CAAC;MACzB;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAAC2B,OAAA,CAAA5B,gBAAA,GAAAA,gBAAA;AAAA,IAAA6B,QAAA,GAAAD,OAAA,CAAAE,OAAA,GAEa9B,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactRedux","_roomsSlice","_roomStore","_getServerReadTimestamp","useChatRoomFocus","roomJID","isFocused","dispatch","useDispatch","prevRef","useRef","leaveRoom","jid","state","store","getState","rooms","timestamp","getServerReadTimestamp","roomHeapSlice","setLastViewedTimestamp","chatJID","clearVisibleRoom","chatSettingStore","client","flushLastViewedToPrivateStoreStanza","visibleRoomJID","catch","useEffect","prev","current","setCurrentRoom","setVisibleRoom","exports","_default","default"],"sourceRoot":"../../../src","sources":["hooks/useChatRoomFocus.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAMA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,uBAAA,GAAAJ,OAAA;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMK,gBAAgB,GAAGA,CAAC;EAC/BC,OAAO;EACPC;AACuB,CAAC,KAAK;EAC7B,MAAMC,QAAQ,GAAG,IAAAC,uBAAW,EAAC,CAAC;EAC9B,MAAMC,OAAO,GAAG,IAAAC,aAAM,EAAiD;IACrEL,OAAO,EAAE,IAAI;IACbC,SAAS,EAAE;EACb,CAAC,CAAC;EAEF,MAAMK,SAAS,GAAIC,GAAW,IAAK;IACjC,MAAMC,KAAK,GAAGC,gBAAK,CAACC,QAAQ,CAAC,CAAC;IAC9B,MAAMC,KAAK,GAAGH,KAAK,CAACG,KAAK,EAAEA,KAAK;IAChC,MAAMC,SAAS,GAAG,IAAAC,8CAAsB,EAACF,KAAK,GAAGJ,GAAG,CAAC,EAAEC,KAAK,CAACM,aAAa,CAAC;IAC3E;IACA;IACA,IAAIF,SAAS,GAAG,CAAC,EAAE;MACjBV,QAAQ,CAAC,IAAAa,kCAAsB,EAAC;QAAEC,OAAO,EAAET,GAAG;QAAEK;MAAU,CAAC,CAAC,CAAC;IAC/D;IACAV,QAAQ,CAAC,IAAAe,4BAAgB,EAAC,CAAC,CAAC;IAC3BT,KAAK,CAACU,gBAAgB,EAAUC,MAAM,EACnCC,mCAAmC,CAACT,KAAK,EAAE;MAAEU,cAAc,EAAEd;IAAI,CAAC,CAAC,CACpEe,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC;EAED,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,IAAI,GAAGpB,OAAO,CAACqB,OAAO;IAC5B,IAAID,IAAI,CAACvB,SAAS,IAAIuB,IAAI,CAACxB,OAAO,KAAKwB,IAAI,CAACxB,OAAO,KAAKA,OAAO,IAAI,CAACC,SAAS,CAAC,EAAE;MAC9EK,SAAS,CAACkB,IAAI,CAACxB,OAAO,CAAC;IACzB;IAEA,IAAIA,OAAO,IAAIC,SAAS,EAAE;MACxBC,QAAQ,CAAC,IAAAwB,0BAAc,EAAC;QAAE1B;MAAQ,CAAC,CAAC,CAAC;MACrCE,QAAQ,CAAC,IAAAyB,0BAAc,EAAC;QAAE3B;MAAQ,CAAC,CAAC,CAAC;IACvC;IAEAI,OAAO,CAACqB,OAAO,GAAG;MAAEzB,OAAO,EAAEA,OAAO,IAAI,IAAI;MAAEC;IAAU,CAAC;EAC3D,CAAC,EAAE,CAACD,OAAO,EAAEC,SAAS,EAAEC,QAAQ,CAAC,CAAC;EAElC,IAAAqB,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACX,MAAMC,IAAI,GAAGpB,OAAO,CAACqB,OAAO;MAC5B,IAAID,IAAI,CAACvB,SAAS,IAAIuB,IAAI,CAACxB,OAAO,EAAE;QAClCM,SAAS,CAACkB,IAAI,CAACxB,OAAO,CAAC;MACzB;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAAC4B,OAAA,CAAA7B,gBAAA,GAAAA,gBAAA;AAAA,IAAA8B,QAAA,GAAAD,OAAA,CAAAE,OAAA,GAEa/B,gBAAgB","ignoreList":[]}
@@ -9,7 +9,6 @@ var _reactRedux = require("react-redux");
9
9
  var _xmppProvider = require("../context/xmppProvider");
10
10
  var _chatAutoEnterer = require("../helpers/chatAutoEnterer");
11
11
  var _initRoomsPresence = require("../helpers/initRoomsPresence");
12
- var _updatedChatLastTimestamps = require("../helpers/updatedChatLastTimestamps");
13
12
  var _updateMessagesTillLast = require("../helpers/updateMessagesTillLast");
14
13
  var _authRefresh = require("../networking/authRefresh");
15
14
  var _chatSettingsSlice = require("../roomStore/chatSettingsSlice");
@@ -141,11 +140,17 @@ const useChatWrapperInit = ({
141
140
  }
142
141
  }
143
142
  try {
143
+ // getChatsPrivateStoreRequestStanza hydrates redux itself
144
+ // (dispatch(applyPrivateStoreMarkers(...)) internally,
145
+ // clamped + forward-only) - do not also apply the raw
146
+ // return value here. That used to double-dispatch via
147
+ // updatedChatLastTimestamps' unconditional
148
+ // setLastViewedTimestamp, which has neither the
149
+ // forward-only guard nor the future-marker clamp, so on
150
+ // every reconnect it could silently re-clobber a value
151
+ // the clamp had just corrected (bug #38).
144
152
  const roomTimestampObject = await newClient.getChatsPrivateStoreRequestStanza();
145
153
  console.log('Got chats private store', roomTimestampObject?.length || 0);
146
- if (roomTimestampObject) {
147
- (0, _updatedChatLastTimestamps.updatedChatLastTimestamps)(roomTimestampObject, dispatch);
148
- }
149
154
  if (!hasSyncedHistoryRef.current) {
150
155
  console.log('Updating messages till last');
151
156
  await (0, _updateMessagesTillLast.updateMessagesTillLast)(rooms, newClient);
@@ -180,11 +185,11 @@ const useChatWrapperInit = ({
180
185
  setInited(true);
181
186
  console.log(' Getting chats private store for existing client');
182
187
  try {
188
+ // See the "new client" branch above: getChatsPrivateStoreRequestStanza
189
+ // already hydrates redux (clamped + forward-only); do not
190
+ // also apply the raw return value here.
183
191
  const roomTimestampObject = await client.getChatsPrivateStoreRequestStanza();
184
192
  console.log('Got chats private store for existing client', roomTimestampObject?.length || 0);
185
- if (roomTimestampObject) {
186
- (0, _updatedChatLastTimestamps.updatedChatLastTimestamps)(roomTimestampObject, dispatch);
187
- }
188
193
  if (!hasSyncedHistoryRef.current) {
189
194
  console.log('Updating messages till last for existing client');
190
195
  await (0, _updateMessagesTillLast.updateMessagesTillLast)(rooms, client);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactRedux","_xmppProvider","_chatAutoEnterer","_initRoomsPresence","_updatedChatLastTimestamps","_updateMessagesTillLast","_authRefresh","_chatSettingsSlice","_roomsSlice","_useRoomState","_useChatSettingState","_isChatIdPresentInArray","_useGetNewArchRoom","_interopRequireDefault","_getRoomsWithRetry","_shallowEqual","e","__esModule","default","useChatWrapperInit","roomJID","wasAutoSelected","config","dispatch","useDispatch","inited","setInited","useState","showModal","setShowModal","isConnectionLost","setConnectionLost","isRetrying","setIsRetrying","hasSyncedHistoryRef","useRef","client","initializeClient","setClient","useXmppClient","syncRooms","useGetNewArchRoom","rooms","useSelector","state","roomsList","useRoomState","user","useChatSettingState","useEffect","xmppPassword","console","log","close","lastSyncedConfigRef","undefined","shallowEqual","current","setConfig","getRoomsWithRertyRequest","retryRooms","getRoomsWithRetry","loadRooms","disableLoad","setIsLoading","loading","loadingText","retryTimeout","initXmmpClient","translates","enabled","translations","setLangSource","xmppUsername","error","chatAutoEnterer","newClient","defaultWallet","walletAddress","xmppSettings","status","Object","keys","length","initRoomsPresence","newArch","loadedRooms","enableRoomsRetry","isSelectedRoomPresent","isChatIdPresentInArray","getRoomsStanza","roomTimestampObject","getChatsPrivateStoreRequestStanza","updatedChatLastTimestamps","updateMessagesTillLast","err","warn","refreshTokens","refreshAuthTokensQuietly","setTimeout","clearTimeout","_default","exports"],"sourceRoot":"../../../src","sources":["hooks/useChatWrapperInit.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactRedux","_xmppProvider","_chatAutoEnterer","_initRoomsPresence","_updateMessagesTillLast","_authRefresh","_chatSettingsSlice","_roomsSlice","_useRoomState","_useChatSettingState","_isChatIdPresentInArray","_useGetNewArchRoom","_interopRequireDefault","_getRoomsWithRetry","_shallowEqual","e","__esModule","default","useChatWrapperInit","roomJID","wasAutoSelected","config","dispatch","useDispatch","inited","setInited","useState","showModal","setShowModal","isConnectionLost","setConnectionLost","isRetrying","setIsRetrying","hasSyncedHistoryRef","useRef","client","initializeClient","setClient","useXmppClient","syncRooms","useGetNewArchRoom","rooms","useSelector","state","roomsList","useRoomState","user","useChatSettingState","useEffect","xmppPassword","console","log","close","lastSyncedConfigRef","undefined","shallowEqual","current","setConfig","getRoomsWithRertyRequest","retryRooms","getRoomsWithRetry","loadRooms","disableLoad","setIsLoading","loading","loadingText","retryTimeout","initXmmpClient","translates","enabled","translations","setLangSource","xmppUsername","error","chatAutoEnterer","newClient","defaultWallet","walletAddress","xmppSettings","status","Object","keys","length","initRoomsPresence","newArch","loadedRooms","enableRoomsRetry","isSelectedRoomPresent","isChatIdPresentInArray","getRoomsStanza","roomTimestampObject","getChatsPrivateStoreRequestStanza","updateMessagesTillLast","err","warn","refreshTokens","refreshAuthTokensQuietly","setTimeout","clearTimeout","_default","exports"],"sourceRoot":"../../../src","sources":["hooks/useChatWrapperInit.ts"],"mappings":"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","ignoreList":[]}
@@ -173,7 +173,8 @@ const onMessageHistory = async stanza => {
173
173
  // what senderJID would have held — fall back to it. createMessageFromXml
174
174
  // already derives a display name from the jid when senderFirstName/
175
175
  // senderLastName are absent.
176
- const innerFrom = stanza.getChild('result')?.getChild('forwarded')?.getChild('message')?.attrs?.from || stanza.attrs.from;
176
+ const forwardedMessage = stanza.getChild('result')?.getChild('forwarded')?.getChild('message');
177
+ const innerFrom = forwardedMessage?.attrs?.from || stanza.attrs.from;
177
178
  const senderJID = data?.attrs?.senderJID || innerFrom;
178
179
  if (!data?.attrs || !senderJID) {
179
180
  // console.log(
@@ -188,7 +189,24 @@ const onMessageHistory = async stanza => {
188
189
  if (!mergedAttrs.senderJID) {
189
190
  mergedAttrs.senderJID = senderJID;
190
191
  }
191
- const rawMessage = await (0, _createMessageFromXml.createMessageFromXml)(mergedAttrs, body, id, stanza.attrs.from, !!deleted);
192
+ // The forwarded <message>'s own stanza id is our original send id
193
+ // (what `xmppId` holds on the live/wrapped paths) - capture it so
194
+ // this MAM-replayed message dedupes against its live echo /
195
+ // optimistic pending bubble the same way, instead of never carrying
196
+ // an xmppId at all.
197
+ if (forwardedMessage?.attrs?.id) {
198
+ mergedAttrs.xmppId = forwardedMessage.attrs.id;
199
+ }
200
+ const rawMessage = await (0, _createMessageFromXml.createMessageFromXml)(mergedAttrs, body, id,
201
+ // Bug #41: pass the resource-bearing occupant `from`
202
+ // (room@conference/sender-id) here, not the outer envelope's
203
+ // `stanza.attrs.from` (which has no resource for a MAM result).
204
+ // createMessageFromXml derives `user.id` from this field's
205
+ // resource - the same authoritative source getDataFromXml uses
206
+ // for live messages - so catch-up rows resolve the correct
207
+ // sender from the very first render instead of needing a later
208
+ // correction once the "official" history fetch lands.
209
+ innerFrom, !!deleted);
192
210
 
193
211
  // Same call-log transform as the realtime path, applied to archived
194
212
  // history so calls received while offline still render as log entries.
@@ -1 +1 @@
1
- {"version":3,"names":["_roomStore","require","_roomsSlice","_createMessageFromXml","_getDataFromXml","_chatSettingsSlice","_messageNotificationManager","_callLogMessage","onRealtimeMessage","stanza","getChild","is","attrs","id","body","archived","data","deleted","console","log","toString","senderJID","from","parsed","getDataFromXml","pData","pId","pBody","pRest","mergedData","rawMessage","createMessageFromXml","isDeleted","message","transformCallLogMessage","store","getState","chatSettingStore","user","xmppUsername","roomJID","split","dispatch","addRoomMessage","state","currentUserWallet","walletAddress","toLowerCase","senderJIDLower","String","includes","room","rooms","roomName","title","name","senderName","senderFirstName","senderLastName","filter","Boolean","join","trim","messageNotificationManager","showNotification","err","warn","exports","onDeleteMessage","stanzaId","deleteRoomMessage","by","messageId","setDeleteModal","isDeleteModal","onEditMessage","replace","editRoomMessage","text","onMessageHistory","children","xmlns","delay","innerFrom","mergedAttrs","handleComposing","currentUser","composingUser","norm","s","senderLocal","selfUser","selfXmppUsername","selfWallet","isSelf","chatJID","composingList","push","fullName","pop","setComposing","composing","onPresenceInRoom","startsWith","role","setRoomRole","onChatInvite","client","type","chatId","xEls","getChildren","el","child","chat","presenceInRoomStanza","getRoomsStanza","onGetMembers","queries","activities","roomJid","q","acts","a","jid","activeRoomJID","length","existingRoom","existingMembers","roomMembers","existingByJid","Map","m","map","memberJid","existing","get","undefined","firstName","lastName","_id","ban_status","last_active","Number","updateRoom","updates","usersSetUpdates","member","local","Object","keys","mergeUsersSet","members","onGetRoomInfo","onGetLastMessageArchive","_xmpp","onNewRoomCreated","xmpp","setCurrentRoom","onGetChatRooms","Array","isArray","forEach","result","currentChatRooms","isRoomAlreadyAdded","values","some","element","roomData","usersCnt","users_cnt","messages","isLoading","roomBg","room_background","icon","room_thumbnail","unreadMessages","lastViewedTimestamp","addRoom","error","e","onMessageError","_stanza","onReactionMessage","onReactionHistory","onRoomKicked"],"sourceRoot":"../../../src","sources":["networking/stanzaHandlers.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_roomStore","require","_roomsSlice","_createMessageFromXml","_getDataFromXml","_chatSettingsSlice","_messageNotificationManager","_callLogMessage","onRealtimeMessage","stanza","getChild","is","attrs","id","body","archived","data","deleted","console","log","toString","senderJID","from","parsed","getDataFromXml","pData","pId","pBody","pRest","mergedData","rawMessage","createMessageFromXml","isDeleted","message","transformCallLogMessage","store","getState","chatSettingStore","user","xmppUsername","roomJID","split","dispatch","addRoomMessage","state","currentUserWallet","walletAddress","toLowerCase","senderJIDLower","String","includes","room","rooms","roomName","title","name","senderName","senderFirstName","senderLastName","filter","Boolean","join","trim","messageNotificationManager","showNotification","err","warn","exports","onDeleteMessage","stanzaId","deleteRoomMessage","by","messageId","setDeleteModal","isDeleteModal","onEditMessage","replace","editRoomMessage","text","onMessageHistory","children","xmlns","delay","forwardedMessage","innerFrom","mergedAttrs","xmppId","handleComposing","currentUser","composingUser","norm","s","senderLocal","selfUser","selfXmppUsername","selfWallet","isSelf","chatJID","composingList","push","fullName","pop","setComposing","composing","onPresenceInRoom","startsWith","role","setRoomRole","onChatInvite","client","type","chatId","xEls","getChildren","el","child","chat","presenceInRoomStanza","getRoomsStanza","onGetMembers","queries","activities","roomJid","q","acts","a","jid","activeRoomJID","length","existingRoom","existingMembers","roomMembers","existingByJid","Map","m","map","memberJid","existing","get","undefined","firstName","lastName","_id","ban_status","last_active","Number","updateRoom","updates","usersSetUpdates","member","local","Object","keys","mergeUsersSet","members","onGetRoomInfo","onGetLastMessageArchive","_xmpp","onNewRoomCreated","xmpp","setCurrentRoom","onGetChatRooms","Array","isArray","forEach","result","currentChatRooms","isRoomAlreadyAdded","values","some","element","roomData","usersCnt","users_cnt","messages","isLoading","roomBg","room_background","icon","room_thumbnail","unreadMessages","lastViewedTimestamp","addRoom","error","e","onMessageError","_stanza","onReactionMessage","onReactionHistory","onRoomKicked"],"sourceRoot":"../../../src","sources":["networking/stanzaHandlers.ts"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.flushLastViewedToPrivateStore = flushLastViewedToPrivateStore;
7
7
  var _getChatsPrivateStoreRequest = require("./getChatsPrivateStoreRequest.xmpp");
8
8
  var _setChatsPrivateStoreRequest = require("./setChatsPrivateStoreRequest.xmpp");
9
+ var _getServerReadTimestamp = require("../../helpers/getServerReadTimestamp");
9
10
  /**
10
11
  * Merge in-memory lastViewedTimestamp values into the server-side
11
12
  * private store. Reads current state, overlays per-room updates, writes
@@ -13,8 +14,11 @@ var _setChatsPrivateStoreRequest = require("./setChatsPrivateStoreRequest.xmpp")
13
14
  * each other's entries.
14
15
  *
15
16
  * Called on: tab change away from chat, AppState background/inactive,
16
- * and (with onlyIfNoUnread=true) logout. ChatRoom's own unmount path
17
- * still uses actionSetTimestampToPrivateStore for the single-room case.
17
+ * and (with onlyIfNoUnread=true) logout. ChatRoom's own unmount path also
18
+ * goes through this (via flushLastViewedToPrivateStoreStanza) for the
19
+ * single-room case - actionSetTimestampToPrivateStore is a separate,
20
+ * unconditional low-level write primitive kept for direct/external use
21
+ * and is not part of this merge path.
18
22
  */
19
23
  async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
20
24
  if (!client?.client) {
@@ -23,7 +27,8 @@ async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
23
27
  const {
24
28
  visibleRoomJID,
25
29
  visibleRoomTs,
26
- onlyIfNoUnread
30
+ onlyIfNoUnread,
31
+ heapState
27
32
  } = opts;
28
33
  const roomList = Object.values(rooms || {});
29
34
  if (roomList.length === 0) {
@@ -38,7 +43,6 @@ async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
38
43
  if (!storeObj || typeof storeObj !== 'object') {
39
44
  storeObj = {};
40
45
  }
41
- const nowMs = Date.now();
42
46
  let dirty = false;
43
47
  for (const room of roomList) {
44
48
  if (!room?.jid) {
@@ -47,17 +51,30 @@ async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
47
51
  const isVisible = !!visibleRoomJID && room.jid === visibleRoomJID;
48
52
  const hasUnread = Number(room.unreadMessages || 0) > 0;
49
53
 
50
- // For the visible room, persist "now" — read state is driven by
51
- // room visibility, not by a sentinel timestamp. The exception is an
52
- // explicit `visibleRoomTs`: the caller knows the user only read up
53
- // to a certain point (left the room while scrolled up), so stamping
54
- // "now" here would mark genuinely-unread messages as read.
54
+ // Newest message this room actually has server-side proof of. Used
55
+ // both as the "read up to now" fallback for the visible room and as
56
+ // the yardstick for detecting a corrupt (future) stored marker below
57
+ // - never as a substitute for the device clock (bug #38: a device
58
+ // with a fast clock previously stamped Date.now() here, and once
59
+ // that future value reached the server the forward-only check a few
60
+ // lines down rejected every later correct write, forever).
61
+ const newestAckedMs = (0, _getServerReadTimestamp.getServerReadTimestamp)(room, heapState);
62
+
63
+ // For the visible room, persist "read up to the newest message we
64
+ // know the server has" - read state is driven by room visibility,
65
+ // not by a sentinel timestamp. The exception is an explicit
66
+ // `visibleRoomTs`: the caller knows the user only read up to a
67
+ // certain point (left the room while scrolled up), so stamping
68
+ // "everything" here would mark genuinely-unread messages as read.
55
69
  let ts;
56
70
  if (isVisible) {
57
- ts = typeof visibleRoomTs === 'number' && visibleRoomTs > 0 ? visibleRoomTs : nowMs;
71
+ ts = typeof visibleRoomTs === 'number' && visibleRoomTs > 0 ? visibleRoomTs : newestAckedMs || undefined;
58
72
  } else if (room.lastViewedTimestamp && room.lastViewedTimestamp > 0) {
59
73
  ts = room.lastViewedTimestamp;
60
74
  }
75
+
76
+ // Nothing to anchor a write to (no boundary, no existing marker, no
77
+ // known messages yet) - skip rather than write a device-clock guess.
61
78
  if (!ts) {
62
79
  continue;
63
80
  }
@@ -66,7 +83,24 @@ async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
66
83
  }
67
84
  const prev = storeObj[room.jid];
68
85
  const prevNum = prev != null ? Number(prev) : 0;
69
- if (Number.isFinite(prevNum) && prevNum >= ts) {
86
+ // A currently-stored value that sits well past the newest message we
87
+ // know this room has is not "fresher" - it's a leftover future
88
+ // marker (bug #38). Forward-only logic normally protects a fresher
89
+ // read from being clobbered by a stale fetch, but applied to a
90
+ // corrupt future value it does the opposite: it permanently blocks
91
+ // the correct (smaller) value from ever landing. Detect that case
92
+ // and waive the forward-only check for it specifically; sane values
93
+ // keep the normal forward-only protection.
94
+ //
95
+ // "Well past the newest message we know about" is deliberately NOT
96
+ // sufficient on its own - see isCorruptFutureReadMarker. THIS device's
97
+ // copy of the room can simply be stale (history not synced yet this
98
+ // session), in which case a legitimate marker written by another
99
+ // device that HAS seen newer messages looks exactly like a corrupt
100
+ // one, and "healing" it here would push the server marker BACKWARDS
101
+ // and resurrect already-read messages on every device.
102
+ const prevLooksCorrupt = (0, _getServerReadTimestamp.isCorruptFutureReadMarker)(prevNum, newestAckedMs);
103
+ if (!prevLooksCorrupt && Number.isFinite(prevNum) && prevNum >= ts) {
70
104
  continue;
71
105
  }
72
106
  storeObj[room.jid] = String(ts);
@@ -1 +1 @@
1
- {"version":3,"names":["_getChatsPrivateStoreRequest","require","_setChatsPrivateStoreRequest","flushLastViewedToPrivateStore","client","rooms","opts","visibleRoomJID","visibleRoomTs","onlyIfNoUnread","roomList","Object","values","length","storeObj","getChatsPrivateStoreRequest","nowMs","Date","now","dirty","room","jid","isVisible","hasUnread","Number","unreadMessages","ts","lastViewedTimestamp","prev","prevNum","isFinite","String","setChatsPrivateStoreRequest","JSON","stringify"],"sourceRoot":"../../../../src","sources":["networking/xmpp/flushLastViewedToPrivateStore.ts"],"mappings":";;;;;;AAAA,IAAAA,4BAAA,GAAAC,OAAA;AACA,IAAAC,4BAAA,GAAAD,OAAA;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeE,6BAA6BA,CACjDC,MAAW,EACXC,KAAkD,EAClDC,IAAe,GAAG,CAAC,CAAC,EACF;EAClB,IAAI,CAACF,MAAM,EAAEA,MAAM,EAAE;IAAC,OAAO,KAAK;EAAC;EACnC,MAAM;IAAEG,cAAc;IAAEC,aAAa;IAAEC;EAAe,CAAC,GAAGH,IAAI;EAC9D,MAAMI,QAAQ,GAAGC,MAAM,CAACC,MAAM,CAACP,KAAK,IAAI,CAAC,CAAC,CAAC;EAC3C,IAAIK,QAAQ,CAACG,MAAM,KAAK,CAAC,EAAE;IAAC,OAAO,KAAK;EAAC;EAEzC,IAAIC,QAAa,GAAG,IAAI;EACxB,IAAI;IACFA,QAAQ,GAAG,MAAM,IAAAC,wDAA2B,EAACX,MAAM,CAACA,MAAM,CAAC;EAC7D,CAAC,CAAC,MAAM;IACNU,QAAQ,GAAG,IAAI;EACjB;EACA,IAAI,CAACA,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;IAACA,QAAQ,GAAG,CAAC,CAAC;EAAC;EAE9D,MAAME,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;EACxB,IAAIC,KAAK,GAAG,KAAK;EAEjB,KAAK,MAAMC,IAAI,IAAIV,QAAQ,EAAE;IAC3B,IAAI,CAACU,IAAI,EAAEC,GAAG,EAAE;MAAC;IAAS;IAC1B,MAAMC,SAAS,GAAG,CAAC,CAACf,cAAc,IAAIa,IAAI,CAACC,GAAG,KAAKd,cAAc;IACjE,MAAMgB,SAAS,GAAGC,MAAM,CAACJ,IAAI,CAACK,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC;;IAEtD;IACA;IACA;IACA;IACA;IACA,IAAIC,EAAsB;IAC1B,IAAIJ,SAAS,EAAE;MACbI,EAAE,GACA,OAAOlB,aAAa,KAAK,QAAQ,IAAIA,aAAa,GAAG,CAAC,GAClDA,aAAa,GACbQ,KAAK;IACb,CAAC,MAAM,IAAII,IAAI,CAACO,mBAAmB,IAAIP,IAAI,CAACO,mBAAmB,GAAG,CAAC,EAAE;MACnED,EAAE,GAAGN,IAAI,CAACO,mBAAmB;IAC/B;IAEA,IAAI,CAACD,EAAE,EAAE;MAAC;IAAS;IACnB,IAAIjB,cAAc,IAAIc,SAAS,IAAI,CAACD,SAAS,EAAE;MAAC;IAAS;IAEzD,MAAMM,IAAI,GAAGd,QAAQ,CAACM,IAAI,CAACC,GAAG,CAAC;IAC/B,MAAMQ,OAAO,GAAGD,IAAI,IAAI,IAAI,GAAGJ,MAAM,CAACI,IAAI,CAAC,GAAG,CAAC;IAC/C,IAAIJ,MAAM,CAACM,QAAQ,CAACD,OAAO,CAAC,IAAIA,OAAO,IAAIH,EAAE,EAAE;MAAC;IAAS;IACzDZ,QAAQ,CAACM,IAAI,CAACC,GAAG,CAAC,GAAGU,MAAM,CAACL,EAAE,CAAC;IAC/BP,KAAK,GAAG,IAAI;EACd;EAEA,IAAI,CAACA,KAAK,EAAE;IAAC,OAAO,KAAK;EAAC;EAE1B,IAAI;IACF,MAAM,IAAAa,wDAA2B,EAAC5B,MAAM,CAACA,MAAM,EAAE6B,IAAI,CAACC,SAAS,CAACpB,QAAQ,CAAC,CAAC;IAC1E,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF","ignoreList":[]}
1
+ {"version":3,"names":["_getChatsPrivateStoreRequest","require","_setChatsPrivateStoreRequest","_getServerReadTimestamp","flushLastViewedToPrivateStore","client","rooms","opts","visibleRoomJID","visibleRoomTs","onlyIfNoUnread","heapState","roomList","Object","values","length","storeObj","getChatsPrivateStoreRequest","dirty","room","jid","isVisible","hasUnread","Number","unreadMessages","newestAckedMs","getServerReadTimestamp","ts","undefined","lastViewedTimestamp","prev","prevNum","prevLooksCorrupt","isCorruptFutureReadMarker","isFinite","String","setChatsPrivateStoreRequest","JSON","stringify"],"sourceRoot":"../../../../src","sources":["networking/xmpp/flushLastViewedToPrivateStore.ts"],"mappings":"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","ignoreList":[]}
@@ -32,6 +32,7 @@ var _normalizeRoomJid = require("../helpers/normalizeRoomJid");
32
32
  var _roomStore = require("../roomStore");
33
33
  var _roomsSlice = require("../roomStore/roomsSlice");
34
34
  var _outboundQueue = require("./outboundQueue");
35
+ var _getServerReadTimestamp = require("../helpers/getServerReadTimestamp");
35
36
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
36
37
  // Canonical production XMPP WSS endpoint (standard wss/443, no port suffix).
37
38
  const DEFAULT_DEV_SERVER = 'xmpp.chat.ethora.com';
@@ -948,9 +949,35 @@ class XmppClient {
948
949
  // `getChatsPrivateStoreRequest` directly and intentionally skip this.
949
950
  if (markers && typeof markers === 'object') {
950
951
  const normalized = {};
952
+ const roomsState = _roomStore.store.getState().rooms?.rooms || {};
953
+ const heapState = _roomStore.store.getState().roomHeapSlice;
951
954
  for (const jid of Object.keys(markers)) {
952
955
  const n = Number(markers[jid]);
953
- if (jid && Number.isFinite(n) && n > 0) {
956
+ if (!jid || !Number.isFinite(n) || n <= 0) {
957
+ continue;
958
+ }
959
+ // Defensive clamp (bug #38): a marker written while some
960
+ // device's clock was ahead can land in the future relative to
961
+ // the newest message the server actually has for this room.
962
+ // The redux merge (applyPrivateStoreMarkers) and the
963
+ // server-side merge (flushLastViewedToPrivateStore) both treat
964
+ // "newer" as "better", so an uncorrected future value would
965
+ // block every later correct write forever - useUnread() would
966
+ // report 0 for that room on every cold start. When we already
967
+ // know this room's messages locally, clamp an implausible
968
+ // marker down to the newest one we actually have instead of
969
+ // trusting the server value verbatim.
970
+ //
971
+ // "Implausible" needs BOTH "past the newest message we know
972
+ // about" AND "past real time" (isCorruptFutureReadMarker):
973
+ // this device's cache for a room is routinely stale, and
974
+ // clamping on staleness alone would drag a perfectly good
975
+ // marker written by another device backwards.
976
+ const room = roomsState[jid];
977
+ const newestKnownMs = room ? (0, _getServerReadTimestamp.getServerReadTimestamp)(room, heapState) : 0;
978
+ if ((0, _getServerReadTimestamp.isCorruptFutureReadMarker)(n, newestKnownMs)) {
979
+ normalized[jid] = newestKnownMs;
980
+ } else {
954
981
  normalized[jid] = n;
955
982
  }
956
983
  }
@@ -981,7 +1008,14 @@ class XmppClient {
981
1008
  return false;
982
1009
  }
983
1010
  try {
984
- return await (0, _flushLastViewedToPrivateStore.flushLastViewedToPrivateStore)(this, rooms, opts);
1011
+ // Auto-inject the pending/failed-send heap so every caller gets
1012
+ // getServerReadTimestamp's exclusion of optimistic messages for
1013
+ // free, without needing to reach into the redux store themselves.
1014
+ const heapState = _roomStore.store.getState().roomHeapSlice;
1015
+ return await (0, _flushLastViewedToPrivateStore.flushLastViewedToPrivateStore)(this, rooms, {
1016
+ ...opts,
1017
+ heapState
1018
+ });
985
1019
  } catch {
986
1020
  return false;
987
1021
  }