@droppii-org/chat-mobile 0.2.108 → 0.2.110

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 (114) hide show
  1. package/lib/module/screens/ChatInfo/ChatInfo.js +12 -3
  2. package/lib/module/screens/ChatInfo/ChatInfo.js.map +1 -1
  3. package/lib/module/screens/ChatInfo/ChatInfoActions.js +45 -40
  4. package/lib/module/screens/ChatInfo/ChatInfoActions.js.map +1 -1
  5. package/lib/module/screens/ChatInfo/ChatInfoProfile.js +11 -7
  6. package/lib/module/screens/ChatInfo/ChatInfoProfile.js.map +1 -1
  7. package/lib/module/screens/chat-detail/ChatDetail.js +42 -7
  8. package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
  9. package/lib/module/screens/chat-detail/ChatListLegend.js +249 -49
  10. package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
  11. package/lib/module/screens/chat-detail/hooks/createUnreadMarkReadGate.js +32 -0
  12. package/lib/module/screens/chat-detail/hooks/createUnreadMarkReadGate.js.map +1 -0
  13. package/lib/module/screens/chat-detail/hooks/useMarkConversationRead.js +180 -0
  14. package/lib/module/screens/chat-detail/hooks/useMarkConversationRead.js.map +1 -0
  15. package/lib/module/screens/chat-detail/hooks/useUnreadAnchorSeen.js +88 -0
  16. package/lib/module/screens/chat-detail/hooks/useUnreadAnchorSeen.js.map +1 -0
  17. package/lib/module/screens/chat-detail/hooks/useUnreadDeeplinkCheck.js +59 -0
  18. package/lib/module/screens/chat-detail/hooks/useUnreadDeeplinkCheck.js.map +1 -0
  19. package/lib/module/screens/chat-detail/hooks/useUnreadIndicator.js +105 -0
  20. package/lib/module/screens/chat-detail/hooks/useUnreadIndicator.js.map +1 -0
  21. package/lib/module/screens/chat-detail/hooks/useUnreadIndicatorInList.js +157 -0
  22. package/lib/module/screens/chat-detail/hooks/useUnreadIndicatorInList.js.map +1 -0
  23. package/lib/module/screens/chat-detail/legend/LegendChatUnreadButton.js +140 -0
  24. package/lib/module/screens/chat-detail/legend/LegendChatUnreadButton.js.map +1 -0
  25. package/lib/module/screens/chat-detail/legend/LegendChatUnreadDivider.js +51 -0
  26. package/lib/module/screens/chat-detail/legend/LegendChatUnreadDivider.js.map +1 -0
  27. package/lib/module/services/message.js +30 -0
  28. package/lib/module/services/message.js.map +1 -1
  29. package/lib/module/store/message.js +25 -4
  30. package/lib/module/store/message.js.map +1 -1
  31. package/lib/module/store/unreadIndicator.js +26 -0
  32. package/lib/module/store/unreadIndicator.js.map +1 -0
  33. package/lib/module/translation/resources/i18n.js +2 -0
  34. package/lib/module/translation/resources/i18n.js.map +1 -1
  35. package/lib/module/types/chat.js.map +1 -1
  36. package/lib/module/types/unreadIndicator.js +2 -0
  37. package/lib/module/types/unreadIndicator.js.map +1 -0
  38. package/lib/module/utils/markReadPolicy.js +25 -0
  39. package/lib/module/utils/markReadPolicy.js.map +1 -0
  40. package/lib/module/utils/promise.js +16 -0
  41. package/lib/module/utils/promise.js.map +1 -1
  42. package/lib/module/utils/unreadAnchor.js +57 -0
  43. package/lib/module/utils/unreadAnchor.js.map +1 -0
  44. package/lib/module/utils/unreadIndicatorState.js +96 -0
  45. package/lib/module/utils/unreadIndicatorState.js.map +1 -0
  46. package/lib/typescript/src/screens/ChatInfo/ChatInfo.d.ts.map +1 -1
  47. package/lib/typescript/src/screens/ChatInfo/ChatInfoActions.d.ts +2 -1
  48. package/lib/typescript/src/screens/ChatInfo/ChatInfoActions.d.ts.map +1 -1
  49. package/lib/typescript/src/screens/ChatInfo/ChatInfoProfile.d.ts +2 -1
  50. package/lib/typescript/src/screens/ChatInfo/ChatInfoProfile.d.ts.map +1 -1
  51. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
  52. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts +4 -1
  53. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
  54. package/lib/typescript/src/screens/chat-detail/hooks/createUnreadMarkReadGate.d.ts +9 -0
  55. package/lib/typescript/src/screens/chat-detail/hooks/createUnreadMarkReadGate.d.ts.map +1 -0
  56. package/lib/typescript/src/screens/chat-detail/hooks/useMarkConversationRead.d.ts +39 -0
  57. package/lib/typescript/src/screens/chat-detail/hooks/useMarkConversationRead.d.ts.map +1 -0
  58. package/lib/typescript/src/screens/chat-detail/hooks/useUnreadAnchorSeen.d.ts +26 -0
  59. package/lib/typescript/src/screens/chat-detail/hooks/useUnreadAnchorSeen.d.ts.map +1 -0
  60. package/lib/typescript/src/screens/chat-detail/hooks/useUnreadDeeplinkCheck.d.ts +17 -0
  61. package/lib/typescript/src/screens/chat-detail/hooks/useUnreadDeeplinkCheck.d.ts.map +1 -0
  62. package/lib/typescript/src/screens/chat-detail/hooks/useUnreadIndicator.d.ts +21 -0
  63. package/lib/typescript/src/screens/chat-detail/hooks/useUnreadIndicator.d.ts.map +1 -0
  64. package/lib/typescript/src/screens/chat-detail/hooks/useUnreadIndicatorInList.d.ts +35 -0
  65. package/lib/typescript/src/screens/chat-detail/hooks/useUnreadIndicatorInList.d.ts.map +1 -0
  66. package/lib/typescript/src/screens/chat-detail/legend/LegendChatUnreadButton.d.ts +8 -0
  67. package/lib/typescript/src/screens/chat-detail/legend/LegendChatUnreadButton.d.ts.map +1 -0
  68. package/lib/typescript/src/screens/chat-detail/legend/LegendChatUnreadDivider.d.ts +7 -0
  69. package/lib/typescript/src/screens/chat-detail/legend/LegendChatUnreadDivider.d.ts.map +1 -0
  70. package/lib/typescript/src/services/message.d.ts +8 -0
  71. package/lib/typescript/src/services/message.d.ts.map +1 -1
  72. package/lib/typescript/src/store/message.d.ts.map +1 -1
  73. package/lib/typescript/src/store/unreadIndicator.d.ts +10 -0
  74. package/lib/typescript/src/store/unreadIndicator.d.ts.map +1 -0
  75. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  76. package/lib/typescript/src/types/chat.d.ts +3 -0
  77. package/lib/typescript/src/types/chat.d.ts.map +1 -1
  78. package/lib/typescript/src/types/events.d.ts +17 -1
  79. package/lib/typescript/src/types/events.d.ts.map +1 -1
  80. package/lib/typescript/src/types/unreadIndicator.d.ts +45 -0
  81. package/lib/typescript/src/types/unreadIndicator.d.ts.map +1 -0
  82. package/lib/typescript/src/utils/markReadPolicy.d.ts +27 -0
  83. package/lib/typescript/src/utils/markReadPolicy.d.ts.map +1 -0
  84. package/lib/typescript/src/utils/promise.d.ts +6 -0
  85. package/lib/typescript/src/utils/promise.d.ts.map +1 -1
  86. package/lib/typescript/src/utils/unreadAnchor.d.ts +33 -0
  87. package/lib/typescript/src/utils/unreadAnchor.d.ts.map +1 -0
  88. package/lib/typescript/src/utils/unreadIndicatorState.d.ts +26 -0
  89. package/lib/typescript/src/utils/unreadIndicatorState.d.ts.map +1 -0
  90. package/package.json +2 -2
  91. package/src/screens/ChatInfo/ChatInfo.tsx +10 -1
  92. package/src/screens/ChatInfo/ChatInfoActions.tsx +47 -39
  93. package/src/screens/ChatInfo/ChatInfoProfile.tsx +17 -12
  94. package/src/screens/chat-detail/ChatDetail.tsx +58 -5
  95. package/src/screens/chat-detail/ChatListLegend.tsx +314 -46
  96. package/src/screens/chat-detail/hooks/createUnreadMarkReadGate.ts +41 -0
  97. package/src/screens/chat-detail/hooks/useMarkConversationRead.ts +197 -0
  98. package/src/screens/chat-detail/hooks/useUnreadAnchorSeen.ts +105 -0
  99. package/src/screens/chat-detail/hooks/useUnreadDeeplinkCheck.ts +68 -0
  100. package/src/screens/chat-detail/hooks/useUnreadIndicator.ts +112 -0
  101. package/src/screens/chat-detail/hooks/useUnreadIndicatorInList.ts +181 -0
  102. package/src/screens/chat-detail/legend/LegendChatUnreadButton.tsx +165 -0
  103. package/src/screens/chat-detail/legend/LegendChatUnreadDivider.tsx +52 -0
  104. package/src/services/message.ts +42 -0
  105. package/src/store/message.ts +23 -5
  106. package/src/store/unreadIndicator.ts +38 -0
  107. package/src/translation/resources/i18n.ts +2 -0
  108. package/src/types/chat.ts +3 -0
  109. package/src/types/events.ts +18 -1
  110. package/src/types/unreadIndicator.ts +49 -0
  111. package/src/utils/markReadPolicy.ts +55 -0
  112. package/src/utils/promise.ts +20 -0
  113. package/src/utils/unreadAnchor.ts +87 -0
  114. package/src/utils/unreadIndicatorState.ts +131 -0
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ import { memo, useEffect } from 'react';
4
+ import { StyleSheet } from 'react-native';
5
+ import Animated, { Easing, cancelAnimation, useAnimatedStyle, useReducedMotion, useSharedValue, withDelay, withRepeat, withSequence, withTiming } from 'react-native-reanimated';
6
+ import { KColors, KContainer, KImage, KLabel, KRadiusValue } from '@droppii/libs';
7
+ import { trans } from "../../../translation/index.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const FADE = {
10
+ duration: 200,
11
+ easing: Easing.out(Easing.ease)
12
+ };
13
+
14
+ // Chevron cascade (D5): the bottom chevron leads and the top one follows, an
15
+ // upward motion cue. Designer may tune these.
16
+ const CYCLE_MS = 1200;
17
+ const STEP_MS = CYCLE_MS / 4;
18
+ const DIM = 0.35;
19
+ const CHEVRON_SIZE = 14;
20
+
21
+ // The touch target is real padded bounds, not `hitSlop`: a hitSlop reaching
22
+ // outside the parent Animated.View is dead on Android. 23 + 2 * 11 = 45pt.
23
+ const TOUCH_PAD_V = 11;
24
+ const TOUCH_PAD_L = 8;
25
+ // The pill itself sits 16 below the list top.
26
+ const PILL_TOP = 16;
27
+ const wave = () => withRepeat(withSequence(withTiming(DIM, {
28
+ duration: STEP_MS
29
+ }), withTiming(1, {
30
+ duration: STEP_MS
31
+ })), -1);
32
+ const UnreadChevrons = /*#__PURE__*/memo(() => {
33
+ const reducedMotion = useReducedMotion();
34
+ const top = useSharedValue(1);
35
+ const bottom = useSharedValue(1);
36
+ useEffect(() => {
37
+ if (reducedMotion) return;
38
+ bottom.value = wave();
39
+ top.value = withDelay(STEP_MS, wave());
40
+ return () => {
41
+ cancelAnimation(top);
42
+ cancelAnimation(bottom);
43
+ };
44
+ }, [reducedMotion, top, bottom]);
45
+ const topStyle = useAnimatedStyle(() => ({
46
+ opacity: top.value
47
+ }));
48
+ const bottomStyle = useAnimatedStyle(() => ({
49
+ opacity: bottom.value
50
+ }));
51
+ return /*#__PURE__*/_jsxs(KContainer.View, {
52
+ style: styles.chevrons,
53
+ children: [/*#__PURE__*/_jsx(Animated.View, {
54
+ style: topStyle,
55
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
56
+ name: "angle-up-o",
57
+ size: CHEVRON_SIZE,
58
+ color: KColors.palette.gray.w900
59
+ })
60
+ }), /*#__PURE__*/_jsx(Animated.View, {
61
+ style: [styles.chevronOverlap, bottomStyle],
62
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
63
+ name: "angle-up-o",
64
+ size: CHEVRON_SIZE,
65
+ color: KColors.palette.gray.w900
66
+ })
67
+ })]
68
+ });
69
+ });
70
+ UnreadChevrons.displayName = 'UnreadChevrons';
71
+ /** "Tin chưa đọc" half-pill, top-right of the list; jumps to the divider. */
72
+ export const LegendChatUnreadButton = /*#__PURE__*/memo(({
73
+ visible,
74
+ onPress
75
+ }) => {
76
+ const opacity = useSharedValue(0);
77
+ useEffect(() => {
78
+ opacity.value = withTiming(visible ? 1 : 0, FADE);
79
+ }, [visible, opacity]);
80
+ const animatedStyle = useAnimatedStyle(() => ({
81
+ opacity: opacity.value
82
+ }));
83
+ return /*#__PURE__*/_jsx(Animated.View, {
84
+ style: [styles.anchor, animatedStyle]
85
+ // From the prop, not the animated opacity: deterministic on Old Arch.
86
+ ,
87
+ pointerEvents: visible ? 'box-none' : 'none',
88
+ children: /*#__PURE__*/_jsx(KContainer.Touchable, {
89
+ onPress: onPress,
90
+ activeOpacity: 0.7,
91
+ style: styles.touchArea,
92
+ accessible: true,
93
+ accessibilityRole: "button",
94
+ accessibilityLabel: trans('chat:unread_jump_button'),
95
+ children: /*#__PURE__*/_jsxs(KContainer.View, {
96
+ style: styles.pill,
97
+ children: [visible && /*#__PURE__*/_jsx(UnreadChevrons, {}), /*#__PURE__*/_jsx(KLabel.Text, {
98
+ typo: "TextXsMedium",
99
+ color: KColors.palette.gray.w900,
100
+ children: trans('chat:unread_jump_button')
101
+ })]
102
+ })
103
+ })
104
+ });
105
+ });
106
+ LegendChatUnreadButton.displayName = 'LegendChatUnreadButton';
107
+ const styles = StyleSheet.create({
108
+ anchor: {
109
+ position: 'absolute',
110
+ top: PILL_TOP - TOUCH_PAD_V,
111
+ right: 0,
112
+ zIndex: 10
113
+ },
114
+ touchArea: {
115
+ paddingVertical: TOUCH_PAD_V,
116
+ paddingLeft: TOUCH_PAD_L
117
+ },
118
+ pill: {
119
+ flexDirection: 'row',
120
+ alignItems: 'center',
121
+ gap: 2,
122
+ paddingHorizontal: 6,
123
+ paddingVertical: 2,
124
+ backgroundColor: KColors.palette.grayCool.w25,
125
+ borderWidth: 1,
126
+ borderRightWidth: 0,
127
+ borderColor: KColors.white,
128
+ borderTopLeftRadius: KRadiusValue.round,
129
+ borderBottomLeftRadius: KRadiusValue.round
130
+ },
131
+ chevrons: {
132
+ width: CHEVRON_SIZE,
133
+ height: CHEVRON_SIZE,
134
+ justifyContent: 'center'
135
+ },
136
+ chevronOverlap: {
137
+ marginTop: -8
138
+ }
139
+ });
140
+ //# sourceMappingURL=LegendChatUnreadButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useEffect","StyleSheet","Animated","Easing","cancelAnimation","useAnimatedStyle","useReducedMotion","useSharedValue","withDelay","withRepeat","withSequence","withTiming","KColors","KContainer","KImage","KLabel","KRadiusValue","trans","jsx","_jsx","jsxs","_jsxs","FADE","duration","easing","out","ease","CYCLE_MS","STEP_MS","DIM","CHEVRON_SIZE","TOUCH_PAD_V","TOUCH_PAD_L","PILL_TOP","wave","UnreadChevrons","reducedMotion","top","bottom","value","topStyle","opacity","bottomStyle","View","style","styles","chevrons","children","VectorIcons","name","size","color","palette","gray","w900","chevronOverlap","displayName","LegendChatUnreadButton","visible","onPress","animatedStyle","anchor","pointerEvents","Touchable","activeOpacity","touchArea","accessible","accessibilityRole","accessibilityLabel","pill","Text","typo","create","position","right","zIndex","paddingVertical","paddingLeft","flexDirection","alignItems","gap","paddingHorizontal","backgroundColor","grayCool","w25","borderWidth","borderRightWidth","borderColor","white","borderTopLeftRadius","round","borderBottomLeftRadius","width","height","justifyContent","marginTop"],"sourceRoot":"../../../../../src","sources":["screens/chat-detail/legend/LegendChatUnreadButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import { StyleSheet } from 'react-native';
5
+ import { KColors, KContainer, KDivider, KLabel, KSpacingValue } from '@droppii/libs';
6
+ import { trans } from "../../../translation/index.js";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ const LINE_COLOR = KColors.opacity.grayDark[10];
9
+
10
+ /**
11
+ * "TIN NHẮN CHƯA ĐỌC" row above the first unread message. Figma spacing: the
12
+ * previous row's 8 bottom margin + 8 top margin + 4 padding = 20 above the
13
+ * lines; 4 padding + 12 bottom margin + the time label's 8 = 24 below.
14
+ */
15
+ export const LegendChatUnreadDivider = /*#__PURE__*/memo(() => /*#__PURE__*/_jsxs(KContainer.View, {
16
+ row: true,
17
+ center: true,
18
+ paddingH: "1rem",
19
+ paddingV: "0.25rem",
20
+ style: styles.root,
21
+ accessible: true,
22
+ accessibilityLabel: trans('chat:unread_divider'),
23
+ children: [/*#__PURE__*/_jsx(KContainer.View, {
24
+ flex: true,
25
+ children: /*#__PURE__*/_jsx(KDivider, {
26
+ type: "line",
27
+ size: "hairline",
28
+ background: LINE_COLOR
29
+ })
30
+ }), /*#__PURE__*/_jsx(KLabel.Text, {
31
+ typo: "TextXsBold",
32
+ color: KColors.palette.gray.w200,
33
+ marginH: "1rem",
34
+ children: trans('chat:unread_divider')
35
+ }), /*#__PURE__*/_jsx(KContainer.View, {
36
+ flex: true,
37
+ children: /*#__PURE__*/_jsx(KDivider, {
38
+ type: "line",
39
+ size: "hairline",
40
+ background: LINE_COLOR
41
+ })
42
+ })]
43
+ }));
44
+ LegendChatUnreadDivider.displayName = 'LegendChatUnreadDivider';
45
+ const styles = StyleSheet.create({
46
+ root: {
47
+ marginTop: KSpacingValue['0.5rem'],
48
+ marginBottom: KSpacingValue['0.75rem']
49
+ }
50
+ });
51
+ //# sourceMappingURL=LegendChatUnreadDivider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","StyleSheet","KColors","KContainer","KDivider","KLabel","KSpacingValue","trans","jsx","_jsx","jsxs","_jsxs","LINE_COLOR","opacity","grayDark","LegendChatUnreadDivider","View","row","center","paddingH","paddingV","style","styles","root","accessible","accessibilityLabel","children","flex","type","size","background","Text","typo","color","palette","gray","w200","marginH","displayName","create","marginTop","marginBottom"],"sourceRoot":"../../../../../src","sources":["screens/chat-detail/legend/LegendChatUnreadDivider.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,cAAc;AACzC,SACEC,OAAO,EACPC,UAAU,EACVC,QAAQ,EACRC,MAAM,EACNC,aAAa,QACR,eAAe;AACtB,SAASC,KAAK,QAAQ,+BAAsB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE7C,MAAMC,UAAU,GAAGV,OAAO,CAACW,OAAO,CAACC,QAAQ,CAAC,EAAE,CAAC;;AAE/C;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,uBAAuB,gBAAGf,IAAI,CAAC,mBAC1CW,KAAA,CAACR,UAAU,CAACa,IAAI;EACdC,GAAG;EACHC,MAAM;EACNC,QAAQ,EAAC,MAAM;EACfC,QAAQ,EAAC,SAAS;EAClBC,KAAK,EAAEC,MAAM,CAACC,IAAK;EACnBC,UAAU;EACVC,kBAAkB,EAAElB,KAAK,CAAC,qBAAqB,CAAE;EAAAmB,QAAA,gBAEjDjB,IAAA,CAACN,UAAU,CAACa,IAAI;IAACW,IAAI;IAAAD,QAAA,eACnBjB,IAAA,CAACL,QAAQ;MAACwB,IAAI,EAAC,MAAM;MAACC,IAAI,EAAC,UAAU;MAACC,UAAU,EAAElB;IAAW,CAAE;EAAC,CACjD,CAAC,eAClBH,IAAA,CAACJ,MAAM,CAAC0B,IAAI;IACVC,IAAI,EAAC,YAAY;IACjBC,KAAK,EAAE/B,OAAO,CAACgC,OAAO,CAACC,IAAI,CAACC,IAAK;IACjCC,OAAO,EAAC,MAAM;IAAAX,QAAA,EAEbnB,KAAK,CAAC,qBAAqB;EAAC,CAClB,CAAC,eACdE,IAAA,CAACN,UAAU,CAACa,IAAI;IAACW,IAAI;IAAAD,QAAA,eACnBjB,IAAA,CAACL,QAAQ;MAACwB,IAAI,EAAC,MAAM;MAACC,IAAI,EAAC,UAAU;MAACC,UAAU,EAAElB;IAAW,CAAE;EAAC,CACjD,CAAC;AAAA,CACH,CAClB,CAAC;AAEFG,uBAAuB,CAACuB,WAAW,GAAG,yBAAyB;AAE/D,MAAMhB,MAAM,GAAGrB,UAAU,CAACsC,MAAM,CAAC;EAC/BhB,IAAI,EAAE;IACJiB,SAAS,EAAElC,aAAa,CAAC,QAAQ,CAAC;IAClCmC,YAAY,EAAEnC,aAAa,CAAC,SAAS;EACvC;AACF,CAAC,CAAC","ignoreList":[]}
@@ -3,7 +3,14 @@
3
3
  import OpenIMSDK, { ViewType } from '@droppii/openim-rn-client-sdk';
4
4
  import { useConversationStore } from "../store/index.js";
5
5
  import { getReceiverId } from "../utils/message.js";
6
+ import { perfMark } from "../utils/perf-marker.js";
7
+ import { withTimeout } from "../utils/promise.js";
6
8
  const DEFAULT_PAGE_SIZE = 20;
9
+
10
+ // Rendering never waits on this, only the read receipt does, while a timeout
11
+ // loses the indicator for good. Tune from the measured p95 of
12
+ // `unread_anchor_response.ms` before release.
13
+ export const FIRST_UNREAD_TIMEOUT_MS = 5000;
7
14
  export let ChatMessageAPI;
8
15
  (function (_ChatMessageAPI) {
9
16
  async function fetchHistoryMessages(conversationID, options) {
@@ -45,6 +52,29 @@ export let ChatMessageAPI;
45
52
  return Promise.all([OpenIMSDK.markConversationMessageAsRead(conversationID), OpenIMSDK.resetConversationGroupAtType(conversationID)]);
46
53
  }
47
54
  _ChatMessageAPI.markConversationAsRead = markConversationAsRead;
55
+ async function getFirstUnreadMessage(conversationID, timeoutMs = FIRST_UNREAD_TIMEOUT_MS) {
56
+ const startedAt = Date.now();
57
+ try {
58
+ perfMark('unread_anchor_request');
59
+ const res = await withTimeout(OpenIMSDK.getFirstUnreadMessage(conversationID), timeoutMs);
60
+ perfMark('unread_anchor_response', {
61
+ found: !!res?.message,
62
+ ms: Date.now() - startedAt
63
+ });
64
+ return res?.message ?? null;
65
+ } catch (error) {
66
+ try {
67
+ perfMark('unread_anchor_response', {
68
+ found: false,
69
+ failed: true,
70
+ ms: Date.now() - startedAt
71
+ });
72
+ } catch {}
73
+ if (__DEV__) console.log('[unread] getFirstUnreadMessage failed', error);
74
+ return null;
75
+ }
76
+ }
77
+ _ChatMessageAPI.getFirstUnreadMessage = getFirstUnreadMessage;
48
78
  async function getCurrentUserId() {
49
79
  return OpenIMSDK.getLoginUserID();
50
80
  }
@@ -1 +1 @@
1
- {"version":3,"names":["OpenIMSDK","ViewType","useConversationStore","getReceiverId","DEFAULT_PAGE_SIZE","ChatMessageAPI","_ChatMessageAPI","fetchHistoryMessages","conversationID","options","getAdvancedHistoryMessageListApp","count","startClientMsgID","viewType","History","applicationType","sendTextMessage","params","currentConversation","getState","getCurrentConversation","message","createTextMessage","text","sentMessage","sendMessage","searchLocalMessages","keywordList","messageTypeList","pageIndex","markConversationAsRead","Promise","all","markConversationMessageAsRead","resetConversationGroupAtType","getCurrentUserId","getLoginUserID"],"sourceRoot":"../../../src","sources":["services/message.ts"],"mappings":";;AAAA,OAAOA,SAAS,IACdC,QAAQ,QAGH,+BAA+B;AACtC,SAASC,oBAAoB,QAAQ,mBAAU;AAC/C,SAASC,aAAa,QAAQ,qBAAkB;AAEhD,MAAMC,iBAAiB,GAAG,EAAE;AAAC,WAMZC,cAAc;AAAA,WAAAC,eAAA;EACtB,eAAeC,oBAAoBA,CACxCC,cAAsB,EACtBC,OAKC,EAC8B;IAC/B,OAAOT,SAAS,CAACU,gCAAgC,CAAC;MAChDF,cAAc;MACdG,KAAK,EAAEF,OAAO,EAAEE,KAAK,IAAIP,iBAAiB;MAC1CQ,gBAAgB,EAAEH,OAAO,EAAEG,gBAAgB,IAAI,EAAE;MACjDC,QAAQ,EAAEZ,QAAQ,CAACa,OAAO;MAC1BC,eAAe,EAAEN,OAAO,EAAEM,eAAe,IAAI;IAC/C,CAAC,CAAC;EACJ;EAACT,eAAA,CAAAC,oBAAA,GAAAA,oBAAA;EAEM,eAAeS,eAAeA,CAACC,MAErC,EAAwB;IACvB,MAAMC,mBAAmB,GAAGhB,oBAAoB,CAC7CiB,QAAQ,CAAC,CAAC,CACVC,sBAAsB,CAAC,CAAC;IAE3B,MAAMC,OAAO,GAAG,MAAMrB,SAAS,CAACsB,iBAAiB,CAACL,MAAM,CAACM,IAAI,CAAC;IAE9D,MAAMC,WAAW,GAAG,MAAMxB,SAAS,CAACyB,WAAW,CAAC;MAC9C,GAAGtB,aAAa,CAACe,mBAAmB,CAAC;MACrCG;IACF,CAAC,CAAC;IAEF,OAAOG,WAAW;EACpB;EAAClB,eAAA,CAAAU,eAAA,GAAAA,eAAA;EAEM,eAAeU,mBAAmBA,CACvClB,cAAsB,EACtBC,OAKC,EACD;IACA,OAAOT,SAAS,CAAC0B,mBAAmB,CAAC;MACnClB,cAAc;MACdmB,WAAW,EAAElB,OAAO,EAAEkB,WAAW,IAAI,CAAC,GAAG,CAAC;MAC1CC,eAAe,EAAEnB,OAAO,EAAEmB,eAAe;MACzCC,SAAS,EAAEpB,OAAO,EAAEoB,SAAS,IAAI,CAAC;MAClClB,KAAK,EAAEF,OAAO,EAAEE,KAAK,IAAI;IAC3B,CAAC,CAAC;EACJ;EAACL,eAAA,CAAAoB,mBAAA,GAAAA,mBAAA;EAEM,eAAeI,sBAAsBA,CAACtB,cAAsB,EAAE;IACnE;IACA;IACA;IACA;IACA;IACA,OAAOuB,OAAO,CAACC,GAAG,CAAC,CACjBhC,SAAS,CAACiC,6BAA6B,CAACzB,cAAc,CAAC,EACvDR,SAAS,CAACkC,4BAA4B,CAAC1B,cAAc,CAAC,CACvD,CAAC;EACJ;EAACF,eAAA,CAAAwB,sBAAA,GAAAA,sBAAA;EAEM,eAAeK,gBAAgBA,CAAA,EAAG;IACvC,OAAOnC,SAAS,CAACoC,cAAc,CAAC,CAAC;EACnC;EAAC9B,eAAA,CAAA6B,gBAAA,GAAAA,gBAAA;AAAA,GApEc9B,cAAc,KAAdA,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["OpenIMSDK","ViewType","useConversationStore","getReceiverId","perfMark","withTimeout","DEFAULT_PAGE_SIZE","FIRST_UNREAD_TIMEOUT_MS","ChatMessageAPI","_ChatMessageAPI","fetchHistoryMessages","conversationID","options","getAdvancedHistoryMessageListApp","count","startClientMsgID","viewType","History","applicationType","sendTextMessage","params","currentConversation","getState","getCurrentConversation","message","createTextMessage","text","sentMessage","sendMessage","searchLocalMessages","keywordList","messageTypeList","pageIndex","markConversationAsRead","Promise","all","markConversationMessageAsRead","resetConversationGroupAtType","getFirstUnreadMessage","timeoutMs","startedAt","Date","now","res","found","ms","error","failed","__DEV__","console","log","getCurrentUserId","getLoginUserID"],"sourceRoot":"../../../src","sources":["services/message.ts"],"mappings":"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","ignoreList":[]}
@@ -88,6 +88,10 @@ export const useMessageStore = create()((set, get) => ({
88
88
  set(state => ({
89
89
  messages: loadMore ? mergeMessages(state.messages, res.messageList || []) : res.messageList || [],
90
90
  hasMoreOld: !res.isEnd,
91
+ // A fresh fetch is the newest page (FAB out of a jump window).
92
+ ...(loadMore ? {} : {
93
+ hasMoreNew: false
94
+ }),
91
95
  initLoading: false,
92
96
  moreOldLoading: false
93
97
  }));
@@ -145,9 +149,12 @@ export const useMessageStore = create()((set, get) => ({
145
149
  searchMessages: async ({
146
150
  applicationType,
147
151
  conversationId,
148
- startClientMsgId
152
+ startClientMsgId,
153
+ scrollOptions
149
154
  }) => {
150
155
  if (!conversationId || !startClientMsgId) return;
156
+ // Opted out of the toast-and-exit: the caller handles a missing target.
157
+ const keepOnUnavailable = scrollOptions?.exitOnUnavailable === false;
151
158
  try {
152
159
  set({
153
160
  initLoading: true
@@ -176,20 +183,34 @@ export const useMessageStore = create()((set, get) => ({
176
183
  if (conversationId === useConversationStore.getState().currentConversationId) {
177
184
  const currentMessages = searchMessages?.findResultItems?.find(item => item.conversationID === conversationId)?.messageList || [];
178
185
  const newMessages = mergeMessages([...(searchPrevRes?.messageList || []), ...currentMessages, ...(searchNextRes?.messageList || [])], []);
186
+ const targetMessage = newMessages.find(msg => msg.clientMsgID === startClientMsgId);
187
+
188
+ // Not in the local DB: keep the current window rather than swapping
189
+ // in one around a target that isn't there.
190
+ if (!targetMessage && keepOnUnavailable) {
191
+ set({
192
+ initLoading: false
193
+ });
194
+ return;
195
+ }
179
196
  set({
180
197
  messages: newMessages,
181
198
  hasMoreOld: !searchPrevRes.isEnd,
182
199
  hasMoreNew: !searchNextRes.isEnd,
183
200
  initLoading: false
184
201
  });
185
- const targetMessage = newMessages.find(msg => msg.clientMsgID === startClientMsgId);
186
202
  if (!targetMessage || isMessageRevoked(targetMessage)) {
187
- DeviceEventEmitter.emit(ChatEvent.TargetMessageUnavailable);
203
+ if (!keepOnUnavailable) {
204
+ DeviceEventEmitter.emit(ChatEvent.TargetMessageUnavailable);
205
+ }
188
206
  return;
189
207
  }
208
+ if (scrollOptions?.reemitAfterSearch === false) return;
190
209
  await new Promise(resolve => setTimeout(resolve, 300));
191
210
  DeviceEventEmitter.emit(ChatEvent.ScrollToMessage, {
192
- clientMessageId: startClientMsgId
211
+ ...scrollOptions,
212
+ clientMessageId: startClientMsgId,
213
+ fromSearch: true
193
214
  });
194
215
  }
195
216
  } catch (error) {
@@ -1 +1 @@
1
- {"version":3,"names":["create","DeviceEventEmitter","OpenIMSDK","MessageType","ViewType","ChatEvent","mergeMessages","isMessageRevoked","useConversationStore","perfMark","PAGE_SIZE","useMessageStore","set","get","messages","hasMoreOld","hasMoreNew","initLoading","moreOldLoading","moreNewLoading","setMessages","hasMore","pushNewMessage","message","state","updateOneMessage","tmpList","idx","findIndex","msg","clientMsgID","deleteOneMessage","filter","getMoreOldMessages","loadMore","applicationType","conversationId","params","count","startClientMsgID","conversationID","viewType","History","loaded","length","res","getAdvancedHistoryMessageListApp","received","messageList","isEnd","getState","currentConversationId","total","error","console","log","getMoreNewMessages","getAdvancedHistoryMessageListReverseApp","Promise","resolve","setTimeout","emit","ScrollToBottom","searchMessages","startClientMsgId","searchPrevParams","Search","searchNextParams","searchCurrentParams","clientMsgIDList","findMessageList","searchPrevRes","searchNextRes","currentMessages","findResultItems","find","item","newMessages","targetMessage","TargetMessageUnavailable","ScrollToMessage","clientMessageId","reset","markMessageRevoked","alreadyRevoked","some","contentType","RevokeMessage","MessageRevoked","revokeQuotedReferences","forEach","quoteElem","quoteMessage","atTextElem"],"sourceRoot":"../../../src","sources":["store/message.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["create","DeviceEventEmitter","OpenIMSDK","MessageType","ViewType","ChatEvent","mergeMessages","isMessageRevoked","useConversationStore","perfMark","PAGE_SIZE","useMessageStore","set","get","messages","hasMoreOld","hasMoreNew","initLoading","moreOldLoading","moreNewLoading","setMessages","hasMore","pushNewMessage","message","state","updateOneMessage","tmpList","idx","findIndex","msg","clientMsgID","deleteOneMessage","filter","getMoreOldMessages","loadMore","applicationType","conversationId","params","count","startClientMsgID","conversationID","viewType","History","loaded","length","res","getAdvancedHistoryMessageListApp","received","messageList","isEnd","getState","currentConversationId","total","error","console","log","getMoreNewMessages","getAdvancedHistoryMessageListReverseApp","Promise","resolve","setTimeout","emit","ScrollToBottom","searchMessages","startClientMsgId","scrollOptions","keepOnUnavailable","exitOnUnavailable","searchPrevParams","Search","searchNextParams","searchCurrentParams","clientMsgIDList","findMessageList","searchPrevRes","searchNextRes","currentMessages","findResultItems","find","item","newMessages","targetMessage","TargetMessageUnavailable","reemitAfterSearch","ScrollToMessage","clientMessageId","fromSearch","reset","markMessageRevoked","alreadyRevoked","some","contentType","RevokeMessage","MessageRevoked","revokeQuotedReferences","forEach","quoteElem","quoteMessage","atTextElem"],"sourceRoot":"../../../src","sources":["store/message.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ import { create } from 'zustand';
4
+ import { INITIAL_UNREAD_INDICATOR_STATE, beginUnreadSession, clearUnreadSession, confirmUnreadDeeplinkCheck, dismissUnreadPill, rearmUnreadDeeplinkCheck, resetUnreadSession, resolveUnreadSession } from "../utils/unreadIndicatorState.js";
5
+
6
+ /**
7
+ * Unread-indicator session for ChatDetail. A dedicated store rather than a
8
+ * slice of `useMessageStore`, whose `reset()` also runs on a deeplink target
9
+ * change. Module scope on purpose: the session outlives remounts of
10
+ * ChatDetail inside the same route (access re-check, SDK reconnect). Internal —
11
+ * not exported from `store/index.ts`.
12
+ */
13
+ export const useUnreadIndicatorStore = create()((set, get) => ({
14
+ ...INITIAL_UNREAD_INDICATOR_STATE,
15
+ begin: options => {
16
+ set(s => beginUnreadSession(s, options, Date.now()));
17
+ return get().token;
18
+ },
19
+ resolve: (token, anchor) => set(s => resolveUnreadSession(s, token, anchor)),
20
+ clear: token => set(s => clearUnreadSession(s, token)),
21
+ dismissPill: token => set(s => dismissUnreadPill(s, token)),
22
+ confirmDeeplinkCheck: (token, hide) => set(s => confirmUnreadDeeplinkCheck(s, token, hide)),
23
+ rearmDeeplinkCheck: token => set(s => rearmUnreadDeeplinkCheck(s, token)),
24
+ reset: () => set(s => resetUnreadSession(s))
25
+ }));
26
+ //# sourceMappingURL=unreadIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["create","INITIAL_UNREAD_INDICATOR_STATE","beginUnreadSession","clearUnreadSession","confirmUnreadDeeplinkCheck","dismissUnreadPill","rearmUnreadDeeplinkCheck","resetUnreadSession","resolveUnreadSession","useUnreadIndicatorStore","set","get","begin","options","s","Date","now","token","resolve","anchor","clear","dismissPill","confirmDeeplinkCheck","hide","rearmDeeplinkCheck","reset"],"sourceRoot":"../../../src","sources":["store/unreadIndicator.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,SAAS;AAEhC,SACEC,8BAA8B,EAC9BC,kBAAkB,EAClBC,kBAAkB,EAClBC,0BAA0B,EAC1BC,iBAAiB,EACjBC,wBAAwB,EACxBC,kBAAkB,EAClBC,oBAAoB,QACf,kCAA+B;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,uBAAuB,GAAGT,MAAM,CAAuB,CAAC,CACnE,CAACU,GAAG,EAAEC,GAAG,MAAM;EACb,GAAGV,8BAA8B;EACjCW,KAAK,EAAGC,OAAO,IAAK;IAClBH,GAAG,CAAEI,CAAC,IAAKZ,kBAAkB,CAACY,CAAC,EAAED,OAAO,EAAEE,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtD,OAAOL,GAAG,CAAC,CAAC,CAACM,KAAK;EACpB,CAAC;EACDC,OAAO,EAAEA,CAACD,KAAK,EAAEE,MAAM,KACrBT,GAAG,CAAEI,CAAC,IAAKN,oBAAoB,CAACM,CAAC,EAAEG,KAAK,EAAEE,MAAM,CAAC,CAAC;EACpDC,KAAK,EAAGH,KAAK,IAAKP,GAAG,CAAEI,CAAC,IAAKX,kBAAkB,CAACW,CAAC,EAAEG,KAAK,CAAC,CAAC;EAC1DI,WAAW,EAAGJ,KAAK,IAAKP,GAAG,CAAEI,CAAC,IAAKT,iBAAiB,CAACS,CAAC,EAAEG,KAAK,CAAC,CAAC;EAC/DK,oBAAoB,EAAEA,CAACL,KAAK,EAAEM,IAAI,KAChCb,GAAG,CAAEI,CAAC,IAAKV,0BAA0B,CAACU,CAAC,EAAEG,KAAK,EAAEM,IAAI,CAAC,CAAC;EACxDC,kBAAkB,EAAGP,KAAK,IACxBP,GAAG,CAAEI,CAAC,IAAKR,wBAAwB,CAACQ,CAAC,EAAEG,KAAK,CAAC,CAAC;EAChDQ,KAAK,EAAEA,CAAA,KAAMf,GAAG,CAAEI,CAAC,IAAKP,kBAAkB,CAACO,CAAC,CAAC;AAC/C,CAAC,CACH,CAAC","ignoreList":[]}
@@ -36,6 +36,8 @@ const i18nKey = {
36
36
  'chat:copy_message_success': 'Sao chép tin nhắn thành công',
37
37
  'chat:copy_message_link_success': 'Sao chép đường dẫn tin nhắn thành công',
38
38
  'chat:target_message_unavailable': 'Tin nhắn có thể đã bị xoá và không còn tồn tại',
39
+ 'chat:unread_divider': 'TIN NHẮN CHƯA ĐỌC',
40
+ 'chat:unread_jump_button': 'Tin chưa đọc',
39
41
  'chat:retry_message': 'Gửi lại',
40
42
  'chat:revoke_message': 'Thu hồi',
41
43
  'chat:pin_message': 'Ghim',
@@ -1 +1 @@
1
- {"version":3,"names":["i18nKey","vi"],"sourceRoot":"../../../../src","sources":["translation/resources/i18n.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["i18nKey","vi"],"sourceRoot":"../../../../src","sources":["translation/resources/i18n.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["EventProvider","ga","appsflyer","netcore","DChatApplicationType","DChatPlatform","DChatProject","DChatCategory","DMemberRole","DFlowState","DBotStatusValue","DBotType","SyncStatus","ConnectStatus","CustomMessageType","Order","Product","DThreadResourceContentType","ContactCategory"],"sourceRoot":"../../../src","sources":["types/chat.ts"],"mappings":";;AAoBA,OAAO,MAAMA,aAAa,GAAG;EAC3BC,EAAE,EAAE,IAAI;EACRC,SAAS,EAAE,WAAW;EACtBC,OAAO,EAAE;AACX,CAAU;AAsCV,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAKhC,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAMzB,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAKxB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAQzB,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAKvB,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAatB,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAK3B,WAAYC,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;;AAgBpB;AACA;AACA;AACA;;AASA,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAMtB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AA8HzB,OAAO,MAAMC,iBAAiB,GAAG;EAC/BC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE;AACX,CAAU;AAgBV,WAAYC,0BAA0B,0BAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAAA,OAA1BA,0BAA0B;AAAA;;AA0BtC;AACA;AACA;AACA;AACA;AACA;;AAmBA;AACA;AACA;AACA;AACA;;AAiCA,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;;AA8B3B","ignoreList":[]}
1
+ {"version":3,"names":["EventProvider","ga","appsflyer","netcore","DChatApplicationType","DChatPlatform","DChatProject","DChatCategory","DMemberRole","DFlowState","DBotStatusValue","DBotType","SyncStatus","ConnectStatus","CustomMessageType","Order","Product","DThreadResourceContentType","ContactCategory"],"sourceRoot":"../../../src","sources":["types/chat.ts"],"mappings":";;AAqBA,OAAO,MAAMA,aAAa,GAAG;EAC3BC,EAAE,EAAE,IAAI;EACRC,SAAS,EAAE,WAAW;EACtBC,OAAO,EAAE;AACX,CAAU;AAsCV,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAKhC,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAMzB,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAKxB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAQzB,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAKvB,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAatB,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAK3B,WAAYC,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;;AAgBpB;AACA;AACA;AACA;;AASA,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAMtB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAgIzB,OAAO,MAAMC,iBAAiB,GAAG;EAC/BC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE;AACX,CAAU;AAgBV,WAAYC,0BAA0B,0BAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAAA,OAA1BA,0BAA0B;AAAA;;AA0BtC;AACA;AACA;AACA;AACA;AACA;;AAmBA;AACA;AACA;AACA;AACA;;AAiCA,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;;AA8B3B","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=unreadIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/unreadIndicator.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * When ChatDetail may mark the conversation read. Since OpenIM rc43 every
5
+ * call is a server round-trip (two SDK requests), so it's edge-triggered and
6
+ * throttled instead of fired on every scroll event. Pure, for unit tests.
7
+ */
8
+
9
+ /** A list (re)load just landed — not something the user did. */
10
+ export const isListLoadReason = reason => reason === 'list-load' || reason === 'window-reload';
11
+ export const shouldRequestMarkRead = input => {
12
+ const atTrueEnd = input.listLoaded && !input.hasMoreNew && input.atBottom;
13
+ // The user saw it and is leaving: gate and focus no longer matter, but a
14
+ // message that only arrived while blurred must not be marked read.
15
+ if (input.reason === 'leave') return atTrueEnd && input.dirtyWhileFocused;
16
+ if (isListLoadReason(input.reason) && input.isDeeplinkFirstLoad) {
17
+ return false;
18
+ }
19
+ return !input.gateClosed && input.focused && input.appActive && atTrueEnd;
20
+ };
21
+ export const MARK_READ_THROTTLE_MS = 1000;
22
+
23
+ /** 0 → call now; otherwise the delay of the trailing call. */
24
+ export const nextMarkReadDelay = (now, lastCallAt, throttleMs = MARK_READ_THROTTLE_MS) => Math.max(0, lastCallAt + throttleMs - now);
25
+ //# sourceMappingURL=markReadPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isListLoadReason","reason","shouldRequestMarkRead","input","atTrueEnd","listLoaded","hasMoreNew","atBottom","dirtyWhileFocused","isDeeplinkFirstLoad","gateClosed","focused","appActive","MARK_READ_THROTTLE_MS","nextMarkReadDelay","now","lastCallAt","throttleMs","Math","max"],"sourceRoot":"../../../src","sources":["utils/markReadPolicy.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AA4BA;AACA,OAAO,MAAMA,gBAAgB,GAAIC,MAAsB,IACrDA,MAAM,KAAK,WAAW,IAAIA,MAAM,KAAK,eAAe;AAEtD,OAAO,MAAMC,qBAAqB,GAAIC,KAAoB,IAAc;EACtE,MAAMC,SAAS,GAAGD,KAAK,CAACE,UAAU,IAAI,CAACF,KAAK,CAACG,UAAU,IAAIH,KAAK,CAACI,QAAQ;EACzE;EACA;EACA,IAAIJ,KAAK,CAACF,MAAM,KAAK,OAAO,EAAE,OAAOG,SAAS,IAAID,KAAK,CAACK,iBAAiB;EACzE,IAAIR,gBAAgB,CAACG,KAAK,CAACF,MAAM,CAAC,IAAIE,KAAK,CAACM,mBAAmB,EAAE;IAC/D,OAAO,KAAK;EACd;EACA,OAAO,CAACN,KAAK,CAACO,UAAU,IAAIP,KAAK,CAACQ,OAAO,IAAIR,KAAK,CAACS,SAAS,IAAIR,SAAS;AAC3E,CAAC;AAED,OAAO,MAAMS,qBAAqB,GAAG,IAAI;;AAEzC;AACA,OAAO,MAAMC,iBAAiB,GAAGA,CAC/BC,GAAW,EACXC,UAAkB,EAClBC,UAAU,GAAGJ,qBAAqB,KACvBK,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,UAAU,GAAGC,UAAU,GAAGF,GAAG,CAAC","ignoreList":[]}
@@ -11,4 +11,20 @@ export const allSettled = promises => Promise.all(promises.map(p => Promise.reso
11
11
  status: 'rejected',
12
12
  reason
13
13
  }))));
14
+
15
+ /**
16
+ * Rejects with `Error('timeout')` if `promise` hasn't settled within `ms`.
17
+ * A settle that lands after the timeout is ignored, and the timer is always
18
+ * cleared on settle so nothing is left pending.
19
+ */
20
+ export const withTimeout = (promise, ms) => new Promise((resolve, reject) => {
21
+ const timer = setTimeout(() => reject(new Error('timeout')), ms);
22
+ promise.then(value => {
23
+ clearTimeout(timer);
24
+ resolve(value);
25
+ }, error => {
26
+ clearTimeout(timer);
27
+ reject(error);
28
+ });
29
+ });
14
30
  //# sourceMappingURL=promise.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["allSettled","promises","Promise","all","map","p","resolve","then","value","status","catch","reason"],"sourceRoot":"../../../src","sources":["utils/promise.ts"],"mappings":";;AAIA;AACA;AACA;AACA;AACA,OAAO,MAAMA,UAAU,GACrBC,QAAyB,IAEzBC,OAAO,CAACC,GAAG,CACTF,QAAQ,CAACG,GAAG,CAAEC,CAAC,IACbH,OAAO,CAACI,OAAO,CAACD,CAAC,CAAC,CACfE,IAAI,CAAEC,KAAK,KAAM;EAAEC,MAAM,EAAE,WAAoB;EAAED;AAAM,CAAC,CAAC,CAAC,CAC1DE,KAAK,CAAEC,MAAM,KAAM;EAAEF,MAAM,EAAE,UAAmB;EAAEE;AAAO,CAAC,CAAC,CAChE,CACF,CAA8D","ignoreList":[]}
1
+ {"version":3,"names":["allSettled","promises","Promise","all","map","p","resolve","then","value","status","catch","reason","withTimeout","promise","ms","reject","timer","setTimeout","Error","clearTimeout","error"],"sourceRoot":"../../../src","sources":["utils/promise.ts"],"mappings":";;AAIA;AACA;AACA;AACA;AACA,OAAO,MAAMA,UAAU,GACrBC,QAAyB,IAEzBC,OAAO,CAACC,GAAG,CACTF,QAAQ,CAACG,GAAG,CAAEC,CAAC,IACbH,OAAO,CAACI,OAAO,CAACD,CAAC,CAAC,CACfE,IAAI,CAAEC,KAAK,KAAM;EAAEC,MAAM,EAAE,WAAoB;EAAED;AAAM,CAAC,CAAC,CAAC,CAC1DE,KAAK,CAAEC,MAAM,KAAM;EAAEF,MAAM,EAAE,UAAmB;EAAEE;AAAO,CAAC,CAAC,CAChE,CACF,CAA8D;;AAEhE;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAGA,CAAIC,OAAmB,EAAEC,EAAU,KAC5D,IAAIZ,OAAO,CAAI,CAACI,OAAO,EAAES,MAAM,KAAK;EAClC,MAAMC,KAAK,GAAGC,UAAU,CAAC,MAAMF,MAAM,CAAC,IAAIG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAEJ,EAAE,CAAC;EAChED,OAAO,CAACN,IAAI,CACTC,KAAK,IAAK;IACTW,YAAY,CAACH,KAAK,CAAC;IACnBV,OAAO,CAACE,KAAK,CAAC;EAChB,CAAC,EACAY,KAAK,IAAK;IACTD,YAAY,CAACH,KAAK,CAAC;IACnBD,MAAM,CAACK,KAAK,CAAC;EACf,CACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ import { getGroupIdFromConversationId, isConversationParticipant, isSingleConversationId } from "./conversation.js";
4
+
5
+ /** Height of the divider at the top of the anchor row (Figma: 27px). */
6
+ export const UNREAD_DIVIDER_HEIGHT = 27;
7
+ export const messageBelongsToConversation = (message, conversationId) => isSingleConversationId(conversationId) ? isConversationParticipant(conversationId, message.sendID) && isConversationParticipant(conversationId, message.recvID) : !!message.groupID && getGroupIdFromConversationId(conversationId) === message.groupID;
8
+
9
+ /**
10
+ * Validates the server's first-unread message before it's trusted: a finite
11
+ * positive `seq`, a non-empty `clientMsgID`, and a message that belongs to
12
+ * this conversation. Anything else → `null` (no indicator).
13
+ */
14
+ export const toUnreadAnchor = (message, conversationId) => {
15
+ if (!message) return null;
16
+ const {
17
+ clientMsgID,
18
+ seq
19
+ } = message;
20
+ if (typeof clientMsgID !== 'string' || !clientMsgID) return null;
21
+ if (typeof seq !== 'number' || !Number.isFinite(seq) || seq <= 0) {
22
+ return null;
23
+ }
24
+ if (!messageBelongsToConversation(message, conversationId)) return null;
25
+ return {
26
+ clientMsgID,
27
+ seq
28
+ };
29
+ };
30
+
31
+ /**
32
+ * The list row that carries the divider: the first RENDERED message at or
33
+ * after the anchor. The anchor itself may be filtered out of the rendered list
34
+ * (internal / bot notification messages), so the match is by `seq` as well as
35
+ * by id. Only valid when the boundary is inside the loaded window — the raw
36
+ * window's oldest `seq` is at or before the anchor, or there's no older
37
+ * history — otherwise `null` (the anchor is out of window).
38
+ * Returns the row's list key (same as `keyExtractor` for real messages).
39
+ */
40
+ export const resolveUnreadAnchorRowId = (rendered, anchor, window) => {
41
+ if (!anchor || rendered.length === 0) return null;
42
+ const boundaryLoaded = !window.hasMoreOld || window.oldestLoadedSeq > 0 && window.oldestLoadedSeq <= anchor.seq;
43
+ if (!boundaryLoaded) return null;
44
+ const row = rendered.find(m => m.clientMsgID === anchor.clientMsgID || m.seq > 0 && m.seq >= anchor.seq);
45
+ return row ? row.clientMsgID || row.serverMsgID || null : null;
46
+ };
47
+
48
+ /**
49
+ * Whether the top edge of a row (where the divider sits) is inside the
50
+ * viewport with at least `minVisiblePx` of it showing. A tall row clipped at
51
+ * the top — only its bottom part visible — does NOT count.
52
+ */
53
+ export const isRowTopInViewport = (rowTop, scroll, scrollLength, minVisiblePx = UNREAD_DIVIDER_HEIGHT) => rowTop != null && rowTop >= scroll && rowTop + minVisiblePx <= scroll + scrollLength;
54
+
55
+ /** D11: a deeplink to a message older than the first unread hides the indicator. */
56
+ export const isDeeplinkTargetBeforeAnchor = (targetSeq, anchorSeq) => !!targetSeq && !!anchorSeq && targetSeq > 0 && targetSeq < anchorSeq;
57
+ //# sourceMappingURL=unreadAnchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getGroupIdFromConversationId","isConversationParticipant","isSingleConversationId","UNREAD_DIVIDER_HEIGHT","messageBelongsToConversation","message","conversationId","sendID","recvID","groupID","toUnreadAnchor","clientMsgID","seq","Number","isFinite","resolveUnreadAnchorRowId","rendered","anchor","window","length","boundaryLoaded","hasMoreOld","oldestLoadedSeq","row","find","m","serverMsgID","isRowTopInViewport","rowTop","scroll","scrollLength","minVisiblePx","isDeeplinkTargetBeforeAnchor","targetSeq","anchorSeq"],"sourceRoot":"../../../src","sources":["utils/unreadAnchor.ts"],"mappings":";;AAEA,SACEA,4BAA4B,EAC5BC,yBAAyB,EACzBC,sBAAsB,QACjB,mBAAgB;;AAEvB;AACA,OAAO,MAAMC,qBAAqB,GAAG,EAAE;AAEvC,OAAO,MAAMC,4BAA4B,GAAGA,CAC1CC,OAA2D,EAC3DC,cAAsB,KAEtBJ,sBAAsB,CAACI,cAAc,CAAC,GAClCL,yBAAyB,CAACK,cAAc,EAAED,OAAO,CAACE,MAAM,CAAC,IACzDN,yBAAyB,CAACK,cAAc,EAAED,OAAO,CAACG,MAAM,CAAC,GACzD,CAAC,CAACH,OAAO,CAACI,OAAO,IACjBT,4BAA4B,CAACM,cAAc,CAAC,KAAKD,OAAO,CAACI,OAAO;;AAEtE;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAGA,CAC5BL,OAAuC,EACvCC,cAAsB,KACE;EACxB,IAAI,CAACD,OAAO,EAAE,OAAO,IAAI;EACzB,MAAM;IAAEM,WAAW;IAAEC;EAAI,CAAC,GAAGP,OAAO;EACpC,IAAI,OAAOM,WAAW,KAAK,QAAQ,IAAI,CAACA,WAAW,EAAE,OAAO,IAAI;EAChE,IAAI,OAAOC,GAAG,KAAK,QAAQ,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACF,GAAG,CAAC,IAAIA,GAAG,IAAI,CAAC,EAAE;IAChE,OAAO,IAAI;EACb;EACA,IAAI,CAACR,4BAA4B,CAACC,OAAO,EAAEC,cAAc,CAAC,EAAE,OAAO,IAAI;EACvE,OAAO;IAAEK,WAAW;IAAEC;EAAI,CAAC;AAC7B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMG,wBAAwB,GAAGA,CACtCC,QAAgC,EAChCC,MAA2B,EAC3BC,MAAwD,KACtC;EAClB,IAAI,CAACD,MAAM,IAAID,QAAQ,CAACG,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EACjD,MAAMC,cAAc,GAClB,CAACF,MAAM,CAACG,UAAU,IACjBH,MAAM,CAACI,eAAe,GAAG,CAAC,IAAIJ,MAAM,CAACI,eAAe,IAAIL,MAAM,CAACL,GAAI;EACtE,IAAI,CAACQ,cAAc,EAAE,OAAO,IAAI;EAChC,MAAMG,GAAG,GAAGP,QAAQ,CAACQ,IAAI,CACtBC,CAAC,IACAA,CAAC,CAACd,WAAW,KAAKM,MAAM,CAACN,WAAW,IAAKc,CAAC,CAACb,GAAG,GAAG,CAAC,IAAIa,CAAC,CAACb,GAAG,IAAIK,MAAM,CAACL,GAC1E,CAAC;EACD,OAAOW,GAAG,GAAGA,GAAG,CAACZ,WAAW,IAAIY,GAAG,CAACG,WAAW,IAAI,IAAI,GAAG,IAAI;AAChE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,GAAGA,CAChCC,MAA0B,EAC1BC,MAAc,EACdC,YAAoB,EACpBC,YAAY,GAAG5B,qBAAqB,KAEpCyB,MAAM,IAAI,IAAI,IACdA,MAAM,IAAIC,MAAM,IAChBD,MAAM,GAAGG,YAAY,IAAIF,MAAM,GAAGC,YAAY;;AAEhD;AACA,OAAO,MAAME,4BAA4B,GAAGA,CAC1CC,SAAkB,EAClBC,SAAkB,KAElB,CAAC,CAACD,SAAS,IAAI,CAAC,CAACC,SAAS,IAAID,SAAS,GAAG,CAAC,IAAIA,SAAS,GAAGC,SAAS","ignoreList":[]}