@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.
- package/lib/module/screens/ChatInfo/ChatInfo.js +12 -3
- package/lib/module/screens/ChatInfo/ChatInfo.js.map +1 -1
- package/lib/module/screens/ChatInfo/ChatInfoActions.js +45 -40
- package/lib/module/screens/ChatInfo/ChatInfoActions.js.map +1 -1
- package/lib/module/screens/ChatInfo/ChatInfoProfile.js +11 -7
- package/lib/module/screens/ChatInfo/ChatInfoProfile.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatDetail.js +42 -7
- package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +249 -49
- package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
- package/lib/module/screens/chat-detail/hooks/createUnreadMarkReadGate.js +32 -0
- package/lib/module/screens/chat-detail/hooks/createUnreadMarkReadGate.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useMarkConversationRead.js +180 -0
- package/lib/module/screens/chat-detail/hooks/useMarkConversationRead.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useUnreadAnchorSeen.js +88 -0
- package/lib/module/screens/chat-detail/hooks/useUnreadAnchorSeen.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useUnreadDeeplinkCheck.js +59 -0
- package/lib/module/screens/chat-detail/hooks/useUnreadDeeplinkCheck.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useUnreadIndicator.js +105 -0
- package/lib/module/screens/chat-detail/hooks/useUnreadIndicator.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useUnreadIndicatorInList.js +157 -0
- package/lib/module/screens/chat-detail/hooks/useUnreadIndicatorInList.js.map +1 -0
- package/lib/module/screens/chat-detail/legend/LegendChatUnreadButton.js +140 -0
- package/lib/module/screens/chat-detail/legend/LegendChatUnreadButton.js.map +1 -0
- package/lib/module/screens/chat-detail/legend/LegendChatUnreadDivider.js +51 -0
- package/lib/module/screens/chat-detail/legend/LegendChatUnreadDivider.js.map +1 -0
- package/lib/module/services/message.js +30 -0
- package/lib/module/services/message.js.map +1 -1
- package/lib/module/store/message.js +25 -4
- package/lib/module/store/message.js.map +1 -1
- package/lib/module/store/unreadIndicator.js +26 -0
- package/lib/module/store/unreadIndicator.js.map +1 -0
- package/lib/module/translation/resources/i18n.js +2 -0
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/types/chat.js.map +1 -1
- package/lib/module/types/unreadIndicator.js +2 -0
- package/lib/module/types/unreadIndicator.js.map +1 -0
- package/lib/module/utils/markReadPolicy.js +25 -0
- package/lib/module/utils/markReadPolicy.js.map +1 -0
- package/lib/module/utils/promise.js +16 -0
- package/lib/module/utils/promise.js.map +1 -1
- package/lib/module/utils/unreadAnchor.js +57 -0
- package/lib/module/utils/unreadAnchor.js.map +1 -0
- package/lib/module/utils/unreadIndicatorState.js +96 -0
- package/lib/module/utils/unreadIndicatorState.js.map +1 -0
- package/lib/typescript/src/screens/ChatInfo/ChatInfo.d.ts.map +1 -1
- package/lib/typescript/src/screens/ChatInfo/ChatInfoActions.d.ts +2 -1
- package/lib/typescript/src/screens/ChatInfo/ChatInfoActions.d.ts.map +1 -1
- package/lib/typescript/src/screens/ChatInfo/ChatInfoProfile.d.ts +2 -1
- package/lib/typescript/src/screens/ChatInfo/ChatInfoProfile.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts +4 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/hooks/createUnreadMarkReadGate.d.ts +9 -0
- package/lib/typescript/src/screens/chat-detail/hooks/createUnreadMarkReadGate.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useMarkConversationRead.d.ts +39 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useMarkConversationRead.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useUnreadAnchorSeen.d.ts +26 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useUnreadAnchorSeen.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useUnreadDeeplinkCheck.d.ts +17 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useUnreadDeeplinkCheck.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useUnreadIndicator.d.ts +21 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useUnreadIndicator.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useUnreadIndicatorInList.d.ts +35 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useUnreadIndicatorInList.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatUnreadButton.d.ts +8 -0
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatUnreadButton.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatUnreadDivider.d.ts +7 -0
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatUnreadDivider.d.ts.map +1 -0
- package/lib/typescript/src/services/message.d.ts +8 -0
- package/lib/typescript/src/services/message.d.ts.map +1 -1
- package/lib/typescript/src/store/message.d.ts.map +1 -1
- package/lib/typescript/src/store/unreadIndicator.d.ts +10 -0
- package/lib/typescript/src/store/unreadIndicator.d.ts.map +1 -0
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
- package/lib/typescript/src/types/chat.d.ts +3 -0
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/lib/typescript/src/types/events.d.ts +17 -1
- package/lib/typescript/src/types/events.d.ts.map +1 -1
- package/lib/typescript/src/types/unreadIndicator.d.ts +45 -0
- package/lib/typescript/src/types/unreadIndicator.d.ts.map +1 -0
- package/lib/typescript/src/utils/markReadPolicy.d.ts +27 -0
- package/lib/typescript/src/utils/markReadPolicy.d.ts.map +1 -0
- package/lib/typescript/src/utils/promise.d.ts +6 -0
- package/lib/typescript/src/utils/promise.d.ts.map +1 -1
- package/lib/typescript/src/utils/unreadAnchor.d.ts +33 -0
- package/lib/typescript/src/utils/unreadAnchor.d.ts.map +1 -0
- package/lib/typescript/src/utils/unreadIndicatorState.d.ts +26 -0
- package/lib/typescript/src/utils/unreadIndicatorState.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/screens/ChatInfo/ChatInfo.tsx +10 -1
- package/src/screens/ChatInfo/ChatInfoActions.tsx +47 -39
- package/src/screens/ChatInfo/ChatInfoProfile.tsx +17 -12
- package/src/screens/chat-detail/ChatDetail.tsx +58 -5
- package/src/screens/chat-detail/ChatListLegend.tsx +314 -46
- package/src/screens/chat-detail/hooks/createUnreadMarkReadGate.ts +41 -0
- package/src/screens/chat-detail/hooks/useMarkConversationRead.ts +197 -0
- package/src/screens/chat-detail/hooks/useUnreadAnchorSeen.ts +105 -0
- package/src/screens/chat-detail/hooks/useUnreadDeeplinkCheck.ts +68 -0
- package/src/screens/chat-detail/hooks/useUnreadIndicator.ts +112 -0
- package/src/screens/chat-detail/hooks/useUnreadIndicatorInList.ts +181 -0
- package/src/screens/chat-detail/legend/LegendChatUnreadButton.tsx +165 -0
- package/src/screens/chat-detail/legend/LegendChatUnreadDivider.tsx +52 -0
- package/src/services/message.ts +42 -0
- package/src/store/message.ts +23 -5
- package/src/store/unreadIndicator.ts +38 -0
- package/src/translation/resources/i18n.ts +2 -0
- package/src/types/chat.ts +3 -0
- package/src/types/events.ts +18 -1
- package/src/types/unreadIndicator.ts +49 -0
- package/src/utils/markReadPolicy.ts +55 -0
- package/src/utils/promise.ts +20 -0
- package/src/utils/unreadAnchor.ts +87 -0
- 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;
|
|
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
|
-
|
|
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
|
-
|
|
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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
|
|
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":";;
|
|
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 @@
|
|
|
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":[]}
|