@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
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Bug #41: during reconnect catch-up (app was backgrounded/offline, then
5
+ * comes back online), messages replayed from MAM could transiently render
6
+ * on the RIGHT (as if sent by the current user) before flipping to the
7
+ * LEFT a moment later. Root cause: `message.user.id === walletAddress`
8
+ * treats `undefined === undefined` (or `'' === ''`) as a match, and the
9
+ * two sides could independently be empty for one frame -- the message's
10
+ * sender id before the MAM-derived value settled, and/or the current
11
+ * user's id before it rehydrated. Two blank ids must never compare equal.
12
+ *
13
+ * A second, related issue: the same logical sender id can show up in
14
+ * different shapes depending on which code path produced it -- a bare
15
+ * id ("wallet123") or a bare JID with an incidental session resource
16
+ * ("wallet123@host/sessionResource", as `senderJID` attrs carry on the
17
+ * wire -- see src/assets/test.xml). In every shape used in this
18
+ * codebase the identifying segment is the part BEFORE the first '@' (or
19
+ * before '/' when there's no '@'); anything after that -- domain,
20
+ * resource -- is noise. Comparing raw strings with `===` fails whenever
21
+ * one side still carries that noise and the other doesn't. Normalizing
22
+ * both sides (strip resource, strip domain, lowercase) before comparing
23
+ * makes the check tolerant of that drift.
24
+ */
25
+
26
+ /**
27
+ * Strip a MUC resource (`room@host/resource` -> `room@host`) and then a
28
+ * JID domain (`local@host` -> `local`), lowercasing the result. Applies
29
+ * to both plain ids and full/partial JIDs so either shape normalizes to
30
+ * the same comparable value.
31
+ */
32
+ const normalizeId = raw => {
33
+ const value = String(raw ?? '').trim();
34
+ if (!value) {
35
+ return '';
36
+ }
37
+ const withoutResource = value.split('/')[0];
38
+ const withoutDomain = withoutResource.includes('@') ? withoutResource.split('@')[0] : withoutResource;
39
+ return withoutDomain.toLowerCase();
40
+ };
41
+
42
+ // Same precedence the rest of the app uses when it needs "who am I" as a
43
+ // single id: xmppUsername first, walletAddress as the fallback.
44
+ const resolveCurrentUserId = currentUser => {
45
+ if (typeof currentUser === 'string') {
46
+ return currentUser;
47
+ }
48
+ if (!currentUser) {
49
+ return '';
50
+ }
51
+ return currentUser.xmppUsername || currentUser.walletAddress || currentUser.id || '';
52
+ };
53
+
54
+ /**
55
+ * Robustly determine whether `message` was sent by `currentUser`. Never
56
+ * returns true from two blank/undefined ids, and tolerates bare-id vs.
57
+ * full-JID mismatches between the sender id and the current user id.
58
+ */
59
+ export const isOwnMessage = (message, currentUser) => {
60
+ const messageUserId = normalizeId(message?.user?.id);
61
+ if (!messageUserId) {
62
+ return false;
63
+ }
64
+ const currentUserId = normalizeId(resolveCurrentUserId(currentUser));
65
+ if (!currentUserId) {
66
+ return false;
67
+ }
68
+ return messageUserId === currentUserId;
69
+ };
70
+ //# sourceMappingURL=isOwnMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["normalizeId","raw","value","String","trim","withoutResource","split","withoutDomain","includes","toLowerCase","resolveCurrentUserId","currentUser","xmppUsername","walletAddress","id","isOwnMessage","message","messageUserId","user","currentUserId"],"sourceRoot":"../../../src","sources":["helpers/isOwnMessage.ts"],"mappings":";;AAEA;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,MAAMA,WAAW,GAAIC,GAAY,IAAa;EAC5C,MAAMC,KAAK,GAAGC,MAAM,CAACF,GAAG,IAAI,EAAE,CAAC,CAACG,IAAI,CAAC,CAAC;EACtC,IAAI,CAACF,KAAK,EAAE;IACV,OAAO,EAAE;EACX;EACA,MAAMG,eAAe,GAAGH,KAAK,CAACI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC3C,MAAMC,aAAa,GAAGF,eAAe,CAACG,QAAQ,CAAC,GAAG,CAAC,GAC/CH,eAAe,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAC7BD,eAAe;EACnB,OAAOE,aAAa,CAACE,WAAW,CAAC,CAAC;AACpC,CAAC;;AAED;AACA;AACA,MAAMC,oBAAoB,GAAIC,WAAkC,IAAa;EAC3E,IAAI,OAAOA,WAAW,KAAK,QAAQ,EAAE;IACnC,OAAOA,WAAW;EACpB;EACA,IAAI,CAACA,WAAW,EAAE;IAChB,OAAO,EAAE;EACX;EACA,OACEA,WAAW,CAACC,YAAY,IAAID,WAAW,CAACE,aAAa,IAAIF,WAAW,CAACG,EAAE,IAAI,EAAE;AAEjF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAGA,CAC1BC,OAAkD,EAClDL,WAAkC,KACtB;EACZ,MAAMM,aAAa,GAAGjB,WAAW,CAACgB,OAAO,EAAEE,IAAI,EAAEJ,EAAE,CAAC;EACpD,IAAI,CAACG,aAAa,EAAE;IAClB,OAAO,KAAK;EACd;EAEA,MAAME,aAAa,GAAGnB,WAAW,CAACU,oBAAoB,CAACC,WAAW,CAAC,CAAC;EACpE,IAAI,CAACQ,aAAa,EAAE;IAClB,OAAO,KAAK;EACd;EAEA,OAAOF,aAAa,KAAKE,aAAa;AACxC,CAAC","ignoreList":[]}
@@ -227,17 +227,10 @@ export function ensureFilenameHasExtension(fileName, mime) {
227
227
  return `${base}${getExtensionForMime(mime)}`;
228
228
  }
229
229
 
230
- /**
231
- * Best-effort filename derivation for a message bubble:
232
- * - server-provided `fileName`
233
- * - server-provided `originalName`
234
- * - URL pathname
235
- * - generic `media_<timestamp>` so we never render an empty label
236
- *
237
- * Always returns a string with a valid extension.
238
- */
239
- export function deriveDisplayFilename(opts) {
240
- const candidate = opts.fileName && opts.fileName.trim() || opts.originalName && opts.originalName.trim() || filenameFromUrl(opts.url) || '';
241
- return ensureFilenameHasExtension(candidate, opts.mime);
242
- }
230
+ // NOTE: the "which name wins" decision (originalName vs the stored
231
+ // fileName vs the URL) lives in helpers/getDisplayFileName.ts - that is
232
+ // the single source of truth used across display, save, share and
233
+ // download call sites (bug #40: this used to be duplicated here with
234
+ // the priority backwards, so attachments showed/saved under the
235
+ // server's hash name instead of the sender's original one).
243
236
  //# sourceMappingURL=mimeToExtension.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MIME_TO_EXT","VALID_EXT_RE","AUDIO_EXTENSIONS","IOS_AUDIO_PLAYBACK_EXTENSIONS","IOS_AUDIO_UNSUPPORTED_EXTENSIONS","AUDIO_EXT_RE","RegExp","map","e","replace","join","IOS_AUDIO_PLAYBACK_EXT_RE","AUDIO_NAME_HINT_RE","isLikelyAudio","mime","fileName","url","opts","m","toLowerCase","startsWith","durationNum","duration","Number","isFinite","waveForm","trim","length","name","originalName","urlLast","filenameFromUrl","test","urlPath","noQuery","split","decodeURIComponent","getExtensionForMime","normalized","last","pop","getLowerExtension","value","match","shouldCacheAudioForIosPlayback","src","urlName","candidates","hasIosPlayableName","some","getIosAudioPlaybackCacheExtension","candidate","ext","isUnsupportedAudioForIosPlayback","includes","ensureFilenameHasExtension","base","Date","now","deriveDisplayFilename"],"sourceRoot":"../../../src","sources":["helpers/mimeToExtension.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MIME_TO_EXT","VALID_EXT_RE","AUDIO_EXTENSIONS","IOS_AUDIO_PLAYBACK_EXTENSIONS","IOS_AUDIO_UNSUPPORTED_EXTENSIONS","AUDIO_EXT_RE","RegExp","map","e","replace","join","IOS_AUDIO_PLAYBACK_EXT_RE","AUDIO_NAME_HINT_RE","isLikelyAudio","mime","fileName","url","opts","m","toLowerCase","startsWith","durationNum","duration","Number","isFinite","waveForm","trim","length","name","originalName","urlLast","filenameFromUrl","test","urlPath","noQuery","split","decodeURIComponent","getExtensionForMime","normalized","last","pop","getLowerExtension","value","match","shouldCacheAudioForIosPlayback","src","urlName","candidates","hasIosPlayableName","some","getIosAudioPlaybackCacheExtension","candidate","ext","isUnsupportedAudioForIosPlayback","includes","ensureFilenameHasExtension","base","Date","now"],"sourceRoot":"../../../src","sources":["helpers/mimeToExtension.ts"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,7 @@ import { useEffect, useRef } from 'react';
4
4
  import { useDispatch } from 'react-redux';
5
5
  import { clearVisibleRoom, setCurrentRoom, setLastViewedTimestamp, setVisibleRoom } from '../roomStore/roomsSlice';
6
6
  import { store } from '../roomStore';
7
+ import { getServerReadTimestamp } from '../helpers/getServerReadTimestamp';
7
8
  /**
8
9
  * Public hook for consumers embedding `<ChatRoom>` inside a tab-based
9
10
  * navigator. Mirrors the mount/unmount unread-tracking that ChatRoom
@@ -14,7 +15,10 @@ import { store } from '../roomStore';
14
15
  * Without this hook, `useUnread()` will always return 0 for the chat
15
16
  * room because the SDK assumes "mounted == active". With this hook,
16
17
  * focus marks the room visible (clearing the badge) and blur stamps
17
- * `lastViewedTimestamp = Date.now()` so future messages count as unread.
18
+ * `lastViewedTimestamp` to the newest SERVER-acknowledged message so
19
+ * future messages count as unread. Deliberately not `Date.now()`: a
20
+ * device clock running ahead would write a future marker that the
21
+ * forward-only private-store merge could never correct again (bug #38).
18
22
  *
19
23
  * Usage with React Navigation:
20
24
  *
@@ -40,14 +44,19 @@ export const useChatRoomFocus = ({
40
44
  isFocused: false
41
45
  });
42
46
  const leaveRoom = jid => {
43
- const timestamp = Date.now();
44
- dispatch(setLastViewedTimestamp({
45
- chatJID: jid,
46
- timestamp
47
- }));
47
+ const state = store.getState();
48
+ const rooms = state.rooms?.rooms;
49
+ const timestamp = getServerReadTimestamp(rooms?.[jid], state.roomHeapSlice);
50
+ // Only stamp when we actually have something to anchor to - skip
51
+ // rather than fall back to the device clock (bug #38).
52
+ if (timestamp > 0) {
53
+ dispatch(setLastViewedTimestamp({
54
+ chatJID: jid,
55
+ timestamp
56
+ }));
57
+ }
48
58
  dispatch(clearVisibleRoom());
49
- const rooms = store.getState().rooms?.rooms;
50
- store.getState().chatSettingStore?.client?.flushLastViewedToPrivateStoreStanza(rooms, {
59
+ state.chatSettingStore?.client?.flushLastViewedToPrivateStoreStanza(rooms, {
51
60
  visibleRoomJID: jid
52
61
  }).catch(() => {});
53
62
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useDispatch","clearVisibleRoom","setCurrentRoom","setLastViewedTimestamp","setVisibleRoom","store","useChatRoomFocus","roomJID","isFocused","dispatch","prevRef","leaveRoom","jid","timestamp","Date","now","chatJID","rooms","getState","chatSettingStore","client","flushLastViewedToPrivateStoreStanza","visibleRoomJID","catch","prev","current"],"sourceRoot":"../../../src","sources":["hooks/useChatRoomFocus.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAASC,WAAW,QAAQ,aAAa;AACzC,SACEC,gBAAgB,EAChBC,cAAc,EACdC,sBAAsB,EACtBC,cAAc,QACT,yBAAyB;AAChC,SAASC,KAAK,QAAQ,cAAc;AAgBpC;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,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAC/BC,OAAO;EACPC;AACuB,CAAC,KAAK;EAC7B,MAAMC,QAAQ,GAAGT,WAAW,CAAC,CAAC;EAC9B,MAAMU,OAAO,GAAGX,MAAM,CAAiD;IACrEQ,OAAO,EAAE,IAAI;IACbC,SAAS,EAAE;EACb,CAAC,CAAC;EAEF,MAAMG,SAAS,GAAIC,GAAW,IAAK;IACjC,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAC5BN,QAAQ,CAACN,sBAAsB,CAAC;MAAEa,OAAO,EAAEJ,GAAG;MAAEC;IAAU,CAAC,CAAC,CAAC;IAC7DJ,QAAQ,CAACR,gBAAgB,CAAC,CAAC,CAAC;IAC5B,MAAMgB,KAAK,GAAGZ,KAAK,CAACa,QAAQ,CAAC,CAAC,CAACD,KAAK,EAAEA,KAAK;IAC1CZ,KAAK,CAACa,QAAQ,CAAC,CAAC,CAACC,gBAAgB,EAAUC,MAAM,EAC9CC,mCAAmC,CAACJ,KAAK,EAAE;MAAEK,cAAc,EAAEV;IAAI,CAAC,CAAC,CACpEW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC;EAEDzB,SAAS,CAAC,MAAM;IACd,MAAM0B,IAAI,GAAGd,OAAO,CAACe,OAAO;IAC5B,IAAID,IAAI,CAAChB,SAAS,IAAIgB,IAAI,CAACjB,OAAO,KAAKiB,IAAI,CAACjB,OAAO,KAAKA,OAAO,IAAI,CAACC,SAAS,CAAC,EAAE;MAC9EG,SAAS,CAACa,IAAI,CAACjB,OAAO,CAAC;IACzB;IAEA,IAAIA,OAAO,IAAIC,SAAS,EAAE;MACxBC,QAAQ,CAACP,cAAc,CAAC;QAAEK;MAAQ,CAAC,CAAC,CAAC;MACrCE,QAAQ,CAACL,cAAc,CAAC;QAAEG;MAAQ,CAAC,CAAC,CAAC;IACvC;IAEAG,OAAO,CAACe,OAAO,GAAG;MAAElB,OAAO,EAAEA,OAAO,IAAI,IAAI;MAAEC;IAAU,CAAC;EAC3D,CAAC,EAAE,CAACD,OAAO,EAAEC,SAAS,EAAEC,QAAQ,CAAC,CAAC;EAElCX,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACX,MAAM0B,IAAI,GAAGd,OAAO,CAACe,OAAO;MAC5B,IAAID,IAAI,CAAChB,SAAS,IAAIgB,IAAI,CAACjB,OAAO,EAAE;QAClCI,SAAS,CAACa,IAAI,CAACjB,OAAO,CAAC;MACzB;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAED,eAAeD,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","useDispatch","clearVisibleRoom","setCurrentRoom","setLastViewedTimestamp","setVisibleRoom","store","getServerReadTimestamp","useChatRoomFocus","roomJID","isFocused","dispatch","prevRef","leaveRoom","jid","state","getState","rooms","timestamp","roomHeapSlice","chatJID","chatSettingStore","client","flushLastViewedToPrivateStoreStanza","visibleRoomJID","catch","prev","current"],"sourceRoot":"../../../src","sources":["hooks/useChatRoomFocus.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAASC,WAAW,QAAQ,aAAa;AACzC,SACEC,gBAAgB,EAChBC,cAAc,EACdC,sBAAsB,EACtBC,cAAc,QACT,yBAAyB;AAChC,SAASC,KAAK,QAAQ,cAAc;AACpC,SAASC,sBAAsB,QAAQ,mCAAmC;AAgB1E;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;AACA,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAC/BC,OAAO;EACPC;AACuB,CAAC,KAAK;EAC7B,MAAMC,QAAQ,GAAGV,WAAW,CAAC,CAAC;EAC9B,MAAMW,OAAO,GAAGZ,MAAM,CAAiD;IACrES,OAAO,EAAE,IAAI;IACbC,SAAS,EAAE;EACb,CAAC,CAAC;EAEF,MAAMG,SAAS,GAAIC,GAAW,IAAK;IACjC,MAAMC,KAAK,GAAGT,KAAK,CAACU,QAAQ,CAAC,CAAC;IAC9B,MAAMC,KAAK,GAAGF,KAAK,CAACE,KAAK,EAAEA,KAAK;IAChC,MAAMC,SAAS,GAAGX,sBAAsB,CAACU,KAAK,GAAGH,GAAG,CAAC,EAAEC,KAAK,CAACI,aAAa,CAAC;IAC3E;IACA;IACA,IAAID,SAAS,GAAG,CAAC,EAAE;MACjBP,QAAQ,CAACP,sBAAsB,CAAC;QAAEgB,OAAO,EAAEN,GAAG;QAAEI;MAAU,CAAC,CAAC,CAAC;IAC/D;IACAP,QAAQ,CAACT,gBAAgB,CAAC,CAAC,CAAC;IAC3Ba,KAAK,CAACM,gBAAgB,EAAUC,MAAM,EACnCC,mCAAmC,CAACN,KAAK,EAAE;MAAEO,cAAc,EAAEV;IAAI,CAAC,CAAC,CACpEW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC;EAED1B,SAAS,CAAC,MAAM;IACd,MAAM2B,IAAI,GAAGd,OAAO,CAACe,OAAO;IAC5B,IAAID,IAAI,CAAChB,SAAS,IAAIgB,IAAI,CAACjB,OAAO,KAAKiB,IAAI,CAACjB,OAAO,KAAKA,OAAO,IAAI,CAACC,SAAS,CAAC,EAAE;MAC9EG,SAAS,CAACa,IAAI,CAACjB,OAAO,CAAC;IACzB;IAEA,IAAIA,OAAO,IAAIC,SAAS,EAAE;MACxBC,QAAQ,CAACR,cAAc,CAAC;QAAEM;MAAQ,CAAC,CAAC,CAAC;MACrCE,QAAQ,CAACN,cAAc,CAAC;QAAEI;MAAQ,CAAC,CAAC,CAAC;IACvC;IAEAG,OAAO,CAACe,OAAO,GAAG;MAAElB,OAAO,EAAEA,OAAO,IAAI,IAAI;MAAEC;IAAU,CAAC;EAC3D,CAAC,EAAE,CAACD,OAAO,EAAEC,SAAS,EAAEC,QAAQ,CAAC,CAAC;EAElCZ,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACX,MAAM2B,IAAI,GAAGd,OAAO,CAACe,OAAO;MAC5B,IAAID,IAAI,CAAChB,SAAS,IAAIgB,IAAI,CAACjB,OAAO,EAAE;QAClCI,SAAS,CAACa,IAAI,CAACjB,OAAO,CAAC;MACzB;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAED,eAAeD,gBAAgB","ignoreList":[]}
@@ -7,7 +7,6 @@ import { useDispatch, useSelector } from 'react-redux';
7
7
  import { useXmppClient } from '../context/xmppProvider';
8
8
  import { chatAutoEnterer } from '../helpers/chatAutoEnterer';
9
9
  import { initRoomsPresence } from '../helpers/initRoomsPresence';
10
- import { updatedChatLastTimestamps } from '../helpers/updatedChatLastTimestamps';
11
10
  import { updateMessagesTillLast } from '../helpers/updateMessagesTillLast';
12
11
  import { refreshAuthTokensQuietly } from '../networking/authRefresh';
13
12
  import { setLangSource, setConfig } from '../roomStore/chatSettingsSlice';
@@ -136,11 +135,17 @@ const useChatWrapperInit = ({
136
135
  }
137
136
  }
138
137
  try {
138
+ // getChatsPrivateStoreRequestStanza hydrates redux itself
139
+ // (dispatch(applyPrivateStoreMarkers(...)) internally,
140
+ // clamped + forward-only) - do not also apply the raw
141
+ // return value here. That used to double-dispatch via
142
+ // updatedChatLastTimestamps' unconditional
143
+ // setLastViewedTimestamp, which has neither the
144
+ // forward-only guard nor the future-marker clamp, so on
145
+ // every reconnect it could silently re-clobber a value
146
+ // the clamp had just corrected (bug #38).
139
147
  const roomTimestampObject = await newClient.getChatsPrivateStoreRequestStanza();
140
148
  console.log('Got chats private store', roomTimestampObject?.length || 0);
141
- if (roomTimestampObject) {
142
- updatedChatLastTimestamps(roomTimestampObject, dispatch);
143
- }
144
149
  if (!hasSyncedHistoryRef.current) {
145
150
  console.log('Updating messages till last');
146
151
  await updateMessagesTillLast(rooms, newClient);
@@ -175,11 +180,11 @@ const useChatWrapperInit = ({
175
180
  setInited(true);
176
181
  console.log(' Getting chats private store for existing client');
177
182
  try {
183
+ // See the "new client" branch above: getChatsPrivateStoreRequestStanza
184
+ // already hydrates redux (clamped + forward-only); do not
185
+ // also apply the raw return value here.
178
186
  const roomTimestampObject = await client.getChatsPrivateStoreRequestStanza();
179
187
  console.log('Got chats private store for existing client', roomTimestampObject?.length || 0);
180
- if (roomTimestampObject) {
181
- updatedChatLastTimestamps(roomTimestampObject, dispatch);
182
- }
183
188
  if (!hasSyncedHistoryRef.current) {
184
189
  console.log('Updating messages till last for existing client');
185
190
  await updateMessagesTillLast(rooms, client);
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useState","useDispatch","useSelector","useXmppClient","chatAutoEnterer","initRoomsPresence","updatedChatLastTimestamps","updateMessagesTillLast","refreshAuthTokensQuietly","setLangSource","setConfig","setIsLoading","useRoomState","useChatSettingState","isChatIdPresentInArray","useGetNewArchRoom","getRoomsWithRetry","shallowEqual","useChatWrapperInit","roomJID","wasAutoSelected","config","dispatch","inited","setInited","showModal","setShowModal","isConnectionLost","setConnectionLost","isRetrying","setIsRetrying","hasSyncedHistoryRef","client","initializeClient","setClient","syncRooms","rooms","state","roomsList","user","xmppPassword","console","log","close","lastSyncedConfigRef","undefined","current","getRoomsWithRertyRequest","retryRooms","loadRooms","disableLoad","loading","loadingText","retryTimeout","initXmmpClient","translates","enabled","translations","xmppUsername","error","newClient","defaultWallet","walletAddress","xmppSettings","status","Object","keys","length","newArch","loadedRooms","enableRoomsRetry","isSelectedRoomPresent","getRoomsStanza","roomTimestampObject","getChatsPrivateStoreRequestStanza","err","warn","refreshTokens","setTimeout","clearTimeout"],"sourceRoot":"../../../src","sources":["hooks/useChatWrapperInit.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","useState","useDispatch","useSelector","useXmppClient","chatAutoEnterer","initRoomsPresence","updateMessagesTillLast","refreshAuthTokensQuietly","setLangSource","setConfig","setIsLoading","useRoomState","useChatSettingState","isChatIdPresentInArray","useGetNewArchRoom","getRoomsWithRetry","shallowEqual","useChatWrapperInit","roomJID","wasAutoSelected","config","dispatch","inited","setInited","showModal","setShowModal","isConnectionLost","setConnectionLost","isRetrying","setIsRetrying","hasSyncedHistoryRef","client","initializeClient","setClient","syncRooms","rooms","state","roomsList","user","xmppPassword","console","log","close","lastSyncedConfigRef","undefined","current","getRoomsWithRertyRequest","retryRooms","loadRooms","disableLoad","loading","loadingText","retryTimeout","initXmmpClient","translates","enabled","translations","xmppUsername","error","newClient","defaultWallet","walletAddress","xmppSettings","status","Object","keys","length","newArch","loadedRooms","enableRoomsRetry","isSelectedRoomPresent","getRoomsStanza","roomTimestampObject","getChatsPrivateStoreRequestStanza","err","warn","refreshTokens","setTimeout","clearTimeout"],"sourceRoot":"../../../src","sources":["hooks/useChatWrapperInit.ts"],"mappings":"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","ignoreList":[]}
@@ -167,7 +167,8 @@ const onMessageHistory = async stanza => {
167
167
  // what senderJID would have held — fall back to it. createMessageFromXml
168
168
  // already derives a display name from the jid when senderFirstName/
169
169
  // senderLastName are absent.
170
- const innerFrom = stanza.getChild('result')?.getChild('forwarded')?.getChild('message')?.attrs?.from || stanza.attrs.from;
170
+ const forwardedMessage = stanza.getChild('result')?.getChild('forwarded')?.getChild('message');
171
+ const innerFrom = forwardedMessage?.attrs?.from || stanza.attrs.from;
171
172
  const senderJID = data?.attrs?.senderJID || innerFrom;
172
173
  if (!data?.attrs || !senderJID) {
173
174
  // console.log(
@@ -182,7 +183,24 @@ const onMessageHistory = async stanza => {
182
183
  if (!mergedAttrs.senderJID) {
183
184
  mergedAttrs.senderJID = senderJID;
184
185
  }
185
- const rawMessage = await createMessageFromXml(mergedAttrs, body, id, stanza.attrs.from, !!deleted);
186
+ // The forwarded <message>'s own stanza id is our original send id
187
+ // (what `xmppId` holds on the live/wrapped paths) - capture it so
188
+ // this MAM-replayed message dedupes against its live echo /
189
+ // optimistic pending bubble the same way, instead of never carrying
190
+ // an xmppId at all.
191
+ if (forwardedMessage?.attrs?.id) {
192
+ mergedAttrs.xmppId = forwardedMessage.attrs.id;
193
+ }
194
+ const rawMessage = await createMessageFromXml(mergedAttrs, body, id,
195
+ // Bug #41: pass the resource-bearing occupant `from`
196
+ // (room@conference/sender-id) here, not the outer envelope's
197
+ // `stanza.attrs.from` (which has no resource for a MAM result).
198
+ // createMessageFromXml derives `user.id` from this field's
199
+ // resource - the same authoritative source getDataFromXml uses
200
+ // for live messages - so catch-up rows resolve the correct
201
+ // sender from the very first render instead of needing a later
202
+ // correction once the "official" history fetch lands.
203
+ innerFrom, !!deleted);
186
204
 
187
205
  // Same call-log transform as the realtime path, applied to archived
188
206
  // history so calls received while offline still render as log entries.
@@ -1 +1 @@
1
- {"version":3,"names":["store","addRoom","addRoomMessage","deleteRoomMessage","editRoomMessage","setComposing","setCurrentRoom","setRoomRole","updateRoom","mergeUsersSet","createMessageFromXml","getDataFromXml","setDeleteModal","messageNotificationManager","transformCallLogMessage","onRealtimeMessage","stanza","getChild","is","attrs","id","body","archived","data","deleted","console","log","toString","senderJID","from","parsed","pData","pId","pBody","pRest","mergedData","rawMessage","isDeleted","message","getState","chatSettingStore","user","xmppUsername","roomJID","split","dispatch","state","currentUserWallet","walletAddress","toLowerCase","senderJIDLower","String","includes","room","rooms","roomName","title","name","senderName","senderFirstName","senderLastName","filter","Boolean","join","trim","showNotification","err","warn","onDeleteMessage","stanzaId","by","messageId","isDeleteModal","onEditMessage","replace","text","onMessageHistory","children","xmlns","delay","innerFrom","mergedAttrs","handleComposing","currentUser","composingUser","norm","s","senderLocal","selfUser","selfXmppUsername","selfWallet","isSelf","chatJID","composingList","push","fullName","pop","composing","onPresenceInRoom","startsWith","role","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","updates","usersSetUpdates","member","local","Object","keys","members","onGetRoomInfo","onGetLastMessageArchive","_xmpp","onNewRoomCreated","xmpp","onGetChatRooms","Array","isArray","forEach","result","currentChatRooms","isRoomAlreadyAdded","values","some","element","roomData","usersCnt","users_cnt","messages","isLoading","roomBg","room_background","icon","room_thumbnail","unreadMessages","lastViewedTimestamp","error","e","onMessageError","_stanza","onReactionMessage","onReactionHistory","onRoomKicked"],"sourceRoot":"../../../src","sources":["networking/stanzaHandlers.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["store","addRoom","addRoomMessage","deleteRoomMessage","editRoomMessage","setComposing","setCurrentRoom","setRoomRole","updateRoom","mergeUsersSet","createMessageFromXml","getDataFromXml","setDeleteModal","messageNotificationManager","transformCallLogMessage","onRealtimeMessage","stanza","getChild","is","attrs","id","body","archived","data","deleted","console","log","toString","senderJID","from","parsed","pData","pId","pBody","pRest","mergedData","rawMessage","isDeleted","message","getState","chatSettingStore","user","xmppUsername","roomJID","split","dispatch","state","currentUserWallet","walletAddress","toLowerCase","senderJIDLower","String","includes","room","rooms","roomName","title","name","senderName","senderFirstName","senderLastName","filter","Boolean","join","trim","showNotification","err","warn","onDeleteMessage","stanzaId","by","messageId","isDeleteModal","onEditMessage","replace","text","onMessageHistory","children","xmlns","delay","forwardedMessage","innerFrom","mergedAttrs","xmppId","handleComposing","currentUser","composingUser","norm","s","senderLocal","selfUser","selfXmppUsername","selfWallet","isSelf","chatJID","composingList","push","fullName","pop","composing","onPresenceInRoom","startsWith","role","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","updates","usersSetUpdates","member","local","Object","keys","members","onGetRoomInfo","onGetLastMessageArchive","_xmpp","onNewRoomCreated","xmpp","onGetChatRooms","Array","isArray","forEach","result","currentChatRooms","isRoomAlreadyAdded","values","some","element","roomData","usersCnt","users_cnt","messages","isLoading","roomBg","room_background","icon","room_thumbnail","unreadMessages","lastViewedTimestamp","error","e","onMessageError","_stanza","onReactionMessage","onReactionHistory","onRoomKicked"],"sourceRoot":"../../../src","sources":["networking/stanzaHandlers.ts"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { getChatsPrivateStoreRequest } from './getChatsPrivateStoreRequest.xmpp';
4
4
  import { setChatsPrivateStoreRequest } from './setChatsPrivateStoreRequest.xmpp';
5
+ import { getServerReadTimestamp, isCorruptFutureReadMarker } from '../../helpers/getServerReadTimestamp';
5
6
  /**
6
7
  * Merge in-memory lastViewedTimestamp values into the server-side
7
8
  * private store. Reads current state, overlays per-room updates, writes
@@ -9,8 +10,11 @@ import { setChatsPrivateStoreRequest } from './setChatsPrivateStoreRequest.xmpp'
9
10
  * each other's entries.
10
11
  *
11
12
  * Called on: tab change away from chat, AppState background/inactive,
12
- * and (with onlyIfNoUnread=true) logout. ChatRoom's own unmount path
13
- * still uses actionSetTimestampToPrivateStore for the single-room case.
13
+ * and (with onlyIfNoUnread=true) logout. ChatRoom's own unmount path also
14
+ * goes through this (via flushLastViewedToPrivateStoreStanza) for the
15
+ * single-room case - actionSetTimestampToPrivateStore is a separate,
16
+ * unconditional low-level write primitive kept for direct/external use
17
+ * and is not part of this merge path.
14
18
  */
15
19
  export async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
16
20
  if (!client?.client) {
@@ -19,7 +23,8 @@ export async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
19
23
  const {
20
24
  visibleRoomJID,
21
25
  visibleRoomTs,
22
- onlyIfNoUnread
26
+ onlyIfNoUnread,
27
+ heapState
23
28
  } = opts;
24
29
  const roomList = Object.values(rooms || {});
25
30
  if (roomList.length === 0) {
@@ -34,7 +39,6 @@ export async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
34
39
  if (!storeObj || typeof storeObj !== 'object') {
35
40
  storeObj = {};
36
41
  }
37
- const nowMs = Date.now();
38
42
  let dirty = false;
39
43
  for (const room of roomList) {
40
44
  if (!room?.jid) {
@@ -43,17 +47,30 @@ export async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
43
47
  const isVisible = !!visibleRoomJID && room.jid === visibleRoomJID;
44
48
  const hasUnread = Number(room.unreadMessages || 0) > 0;
45
49
 
46
- // For the visible room, persist "now" — read state is driven by
47
- // room visibility, not by a sentinel timestamp. The exception is an
48
- // explicit `visibleRoomTs`: the caller knows the user only read up
49
- // to a certain point (left the room while scrolled up), so stamping
50
- // "now" here would mark genuinely-unread messages as read.
50
+ // Newest message this room actually has server-side proof of. Used
51
+ // both as the "read up to now" fallback for the visible room and as
52
+ // the yardstick for detecting a corrupt (future) stored marker below
53
+ // - never as a substitute for the device clock (bug #38: a device
54
+ // with a fast clock previously stamped Date.now() here, and once
55
+ // that future value reached the server the forward-only check a few
56
+ // lines down rejected every later correct write, forever).
57
+ const newestAckedMs = getServerReadTimestamp(room, heapState);
58
+
59
+ // For the visible room, persist "read up to the newest message we
60
+ // know the server has" - read state is driven by room visibility,
61
+ // not by a sentinel timestamp. The exception is an explicit
62
+ // `visibleRoomTs`: the caller knows the user only read up to a
63
+ // certain point (left the room while scrolled up), so stamping
64
+ // "everything" here would mark genuinely-unread messages as read.
51
65
  let ts;
52
66
  if (isVisible) {
53
- ts = typeof visibleRoomTs === 'number' && visibleRoomTs > 0 ? visibleRoomTs : nowMs;
67
+ ts = typeof visibleRoomTs === 'number' && visibleRoomTs > 0 ? visibleRoomTs : newestAckedMs || undefined;
54
68
  } else if (room.lastViewedTimestamp && room.lastViewedTimestamp > 0) {
55
69
  ts = room.lastViewedTimestamp;
56
70
  }
71
+
72
+ // Nothing to anchor a write to (no boundary, no existing marker, no
73
+ // known messages yet) - skip rather than write a device-clock guess.
57
74
  if (!ts) {
58
75
  continue;
59
76
  }
@@ -62,7 +79,24 @@ export async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
62
79
  }
63
80
  const prev = storeObj[room.jid];
64
81
  const prevNum = prev != null ? Number(prev) : 0;
65
- if (Number.isFinite(prevNum) && prevNum >= ts) {
82
+ // A currently-stored value that sits well past the newest message we
83
+ // know this room has is not "fresher" - it's a leftover future
84
+ // marker (bug #38). Forward-only logic normally protects a fresher
85
+ // read from being clobbered by a stale fetch, but applied to a
86
+ // corrupt future value it does the opposite: it permanently blocks
87
+ // the correct (smaller) value from ever landing. Detect that case
88
+ // and waive the forward-only check for it specifically; sane values
89
+ // keep the normal forward-only protection.
90
+ //
91
+ // "Well past the newest message we know about" is deliberately NOT
92
+ // sufficient on its own - see isCorruptFutureReadMarker. THIS device's
93
+ // copy of the room can simply be stale (history not synced yet this
94
+ // session), in which case a legitimate marker written by another
95
+ // device that HAS seen newer messages looks exactly like a corrupt
96
+ // one, and "healing" it here would push the server marker BACKWARDS
97
+ // and resurrect already-read messages on every device.
98
+ const prevLooksCorrupt = isCorruptFutureReadMarker(prevNum, newestAckedMs);
99
+ if (!prevLooksCorrupt && Number.isFinite(prevNum) && prevNum >= ts) {
66
100
  continue;
67
101
  }
68
102
  storeObj[room.jid] = String(ts);
@@ -1 +1 @@
1
- {"version":3,"names":["getChatsPrivateStoreRequest","setChatsPrivateStoreRequest","flushLastViewedToPrivateStore","client","rooms","opts","visibleRoomJID","visibleRoomTs","onlyIfNoUnread","roomList","Object","values","length","storeObj","nowMs","Date","now","dirty","room","jid","isVisible","hasUnread","Number","unreadMessages","ts","lastViewedTimestamp","prev","prevNum","isFinite","String","JSON","stringify"],"sourceRoot":"../../../../src","sources":["networking/xmpp/flushLastViewedToPrivateStore.ts"],"mappings":";;AAAA,SAASA,2BAA2B,QAAQ,oCAAoC;AAChF,SAASC,2BAA2B,QAAQ,oCAAoC;AA2BhF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,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,MAAMb,2BAA2B,CAACG,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,MAAMC,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;EACxB,IAAIC,KAAK,GAAG,KAAK;EAEjB,KAAK,MAAMC,IAAI,IAAIT,QAAQ,EAAE;IAC3B,IAAI,CAACS,IAAI,EAAEC,GAAG,EAAE;MAAC;IAAS;IAC1B,MAAMC,SAAS,GAAG,CAAC,CAACd,cAAc,IAAIY,IAAI,CAACC,GAAG,KAAKb,cAAc;IACjE,MAAMe,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,OAAOjB,aAAa,KAAK,QAAQ,IAAIA,aAAa,GAAG,CAAC,GAClDA,aAAa,GACbO,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,IAAIhB,cAAc,IAAIa,SAAS,IAAI,CAACD,SAAS,EAAE;MAAC;IAAS;IAEzD,MAAMM,IAAI,GAAGb,QAAQ,CAACK,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;IACzDX,QAAQ,CAACK,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,MAAMhB,2BAA2B,CAACE,MAAM,CAACA,MAAM,EAAE2B,IAAI,CAACC,SAAS,CAAClB,QAAQ,CAAC,CAAC;IAC1E,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF","ignoreList":[]}
1
+ {"version":3,"names":["getChatsPrivateStoreRequest","setChatsPrivateStoreRequest","getServerReadTimestamp","isCorruptFutureReadMarker","flushLastViewedToPrivateStore","client","rooms","opts","visibleRoomJID","visibleRoomTs","onlyIfNoUnread","heapState","roomList","Object","values","length","storeObj","dirty","room","jid","isVisible","hasUnread","Number","unreadMessages","newestAckedMs","ts","undefined","lastViewedTimestamp","prev","prevNum","prevLooksCorrupt","isFinite","String","JSON","stringify"],"sourceRoot":"../../../../src","sources":["networking/xmpp/flushLastViewedToPrivateStore.ts"],"mappings":"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","ignoreList":[]}
@@ -28,6 +28,7 @@ import { normalizeRoomJid } from '../helpers/normalizeRoomJid';
28
28
  import { store } from '../roomStore';
29
29
  import { applyPrivateStoreMarkers } from '../roomStore/roomsSlice';
30
30
  import { clearOutboundSends, enqueueOutboundSend, flushOutboundSends } from './outboundQueue';
31
+ import { getServerReadTimestamp, isCorruptFutureReadMarker } from '../helpers/getServerReadTimestamp';
31
32
 
32
33
  // Canonical production XMPP WSS endpoint (standard wss/443, no port suffix).
33
34
  const DEFAULT_DEV_SERVER = 'xmpp.chat.ethora.com';
@@ -944,9 +945,35 @@ export class XmppClient {
944
945
  // `getChatsPrivateStoreRequest` directly and intentionally skip this.
945
946
  if (markers && typeof markers === 'object') {
946
947
  const normalized = {};
948
+ const roomsState = store.getState().rooms?.rooms || {};
949
+ const heapState = store.getState().roomHeapSlice;
947
950
  for (const jid of Object.keys(markers)) {
948
951
  const n = Number(markers[jid]);
949
- if (jid && Number.isFinite(n) && n > 0) {
952
+ if (!jid || !Number.isFinite(n) || n <= 0) {
953
+ continue;
954
+ }
955
+ // Defensive clamp (bug #38): a marker written while some
956
+ // device's clock was ahead can land in the future relative to
957
+ // the newest message the server actually has for this room.
958
+ // The redux merge (applyPrivateStoreMarkers) and the
959
+ // server-side merge (flushLastViewedToPrivateStore) both treat
960
+ // "newer" as "better", so an uncorrected future value would
961
+ // block every later correct write forever - useUnread() would
962
+ // report 0 for that room on every cold start. When we already
963
+ // know this room's messages locally, clamp an implausible
964
+ // marker down to the newest one we actually have instead of
965
+ // trusting the server value verbatim.
966
+ //
967
+ // "Implausible" needs BOTH "past the newest message we know
968
+ // about" AND "past real time" (isCorruptFutureReadMarker):
969
+ // this device's cache for a room is routinely stale, and
970
+ // clamping on staleness alone would drag a perfectly good
971
+ // marker written by another device backwards.
972
+ const room = roomsState[jid];
973
+ const newestKnownMs = room ? getServerReadTimestamp(room, heapState) : 0;
974
+ if (isCorruptFutureReadMarker(n, newestKnownMs)) {
975
+ normalized[jid] = newestKnownMs;
976
+ } else {
950
977
  normalized[jid] = n;
951
978
  }
952
979
  }
@@ -977,7 +1004,14 @@ export class XmppClient {
977
1004
  return false;
978
1005
  }
979
1006
  try {
980
- return await flushLastViewedToPrivateStore(this, rooms, opts);
1007
+ // Auto-inject the pending/failed-send heap so every caller gets
1008
+ // getServerReadTimestamp's exclusion of optimistic messages for
1009
+ // free, without needing to reach into the redux store themselves.
1010
+ const heapState = store.getState().roomHeapSlice;
1011
+ return await flushLastViewedToPrivateStore(this, rooms, {
1012
+ ...opts,
1013
+ heapState
1014
+ });
981
1015
  } catch {
982
1016
  return false;
983
1017
  }