@droppii-org/chat-mobile 0.2.55 → 0.2.57
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/components/messages/imageMessage/index.js +31 -14
- package/lib/module/components/messages/imageMessage/index.js.map +1 -1
- package/lib/module/components/messages/stickerMessage/index.js +1 -1
- package/lib/module/components/messages/stickerMessage/index.js.map +1 -1
- package/lib/module/screens/MediaView/VideoPlayer.js +13 -1
- package/lib/module/screens/MediaView/VideoPlayer.js.map +1 -1
- package/lib/module/screens/MediaView/index.js +18 -9
- package/lib/module/screens/MediaView/index.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +91 -36
- package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
- package/lib/typescript/src/components/messages/imageMessage/index.d.ts +12 -0
- package/lib/typescript/src/components/messages/imageMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/stickerMessage/index.d.ts +1 -0
- package/lib/typescript/src/components/messages/stickerMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/MediaView/VideoPlayer.d.ts.map +1 -1
- package/lib/typescript/src/screens/MediaView/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/messages/imageMessage/index.tsx +48 -19
- package/src/components/messages/stickerMessage/index.tsx +1 -1
- package/src/screens/MediaView/VideoPlayer.tsx +13 -2
- package/src/screens/MediaView/index.tsx +15 -7
- package/src/screens/chat-detail/ChatListLegend.tsx +125 -51
|
@@ -37,6 +37,27 @@ const calcDisplayDims = (imgWidth, imgHeight, windowWidth) => {
|
|
|
37
37
|
height: Math.round(finalHeight)
|
|
38
38
|
};
|
|
39
39
|
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Single source of truth for "what size will `ImageMessage` render this
|
|
43
|
+
* message at" — used both by the component itself and by
|
|
44
|
+
* `ChatListLegend`'s `getFixedItemSize` (must predict the exact same size the
|
|
45
|
+
* component ends up rendering, or the list permanently reserves the wrong
|
|
46
|
+
* height for it). Mirrors the component's own metaWidth/metaHeight → cache →
|
|
47
|
+
* `DEFAULT_DIMS` fallback chain exactly.
|
|
48
|
+
*/
|
|
49
|
+
export const resolveImageDisplayDims = (message, windowWidth) => {
|
|
50
|
+
const pictureElem = message?.pictureElem;
|
|
51
|
+
const rawImageUrl = pictureElem?.snapshotPicture?.url || pictureElem?.bigPicture?.url || pictureElem?.sourcePicture?.url;
|
|
52
|
+
if (!rawImageUrl) return DEFAULT_DIMS;
|
|
53
|
+
const metaWidth = pictureElem?.bigPicture?.width || pictureElem?.snapshotPicture?.width || pictureElem?.width;
|
|
54
|
+
const metaHeight = pictureElem?.bigPicture?.height || pictureElem?.snapshotPicture?.height || pictureElem?.height;
|
|
55
|
+
const cachedDims = dimsCache.get(rawImageUrl);
|
|
56
|
+
const srcWidth = metaWidth || cachedDims?.width;
|
|
57
|
+
const srcHeight = metaHeight || cachedDims?.height;
|
|
58
|
+
if (!srcWidth || !srcHeight) return DEFAULT_DIMS;
|
|
59
|
+
return calcDisplayDims(srcWidth, srcHeight, windowWidth);
|
|
60
|
+
};
|
|
40
61
|
export const ImageMessage = /*#__PURE__*/memo(({
|
|
41
62
|
message,
|
|
42
63
|
onMediaPress
|
|
@@ -48,16 +69,13 @@ export const ImageMessage = /*#__PURE__*/memo(({
|
|
|
48
69
|
const metaWidth = pictureElem?.bigPicture?.width || pictureElem?.snapshotPicture?.width || pictureElem?.width;
|
|
49
70
|
const metaHeight = pictureElem?.bigPicture?.height || pictureElem?.snapshotPicture?.height || pictureElem?.height;
|
|
50
71
|
|
|
51
|
-
//
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (!srcWidth || !srcHeight) return DEFAULT_DIMS;
|
|
59
|
-
return calcDisplayDims(srcWidth, srcHeight, windowWidth);
|
|
60
|
-
}, [metaWidth, metaHeight, loadedDims, rawImageUrl, windowWidth]);
|
|
72
|
+
// Bumped after `onLoad` caches real dims — `resolveImageDisplayDims` reads
|
|
73
|
+
// the shared module-level cache fresh each call, so this state's only job
|
|
74
|
+
// is to force `imageDimensions` to recompute once that cache is populated.
|
|
75
|
+
const [loadDimsVersion, setLoadDimsVersion] = useState(0);
|
|
76
|
+
const imageDimensions = useMemo(() => resolveImageDisplayDims(message, windowWidth),
|
|
77
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
78
|
+
[message, windowWidth, loadDimsVersion]);
|
|
61
79
|
const handleLoad = useCallback(e => {
|
|
62
80
|
setIsLoading(false);
|
|
63
81
|
if (!metaWidth || !metaHeight) {
|
|
@@ -66,12 +84,11 @@ export const ImageMessage = /*#__PURE__*/memo(({
|
|
|
66
84
|
height
|
|
67
85
|
} = e?.nativeEvent ?? {};
|
|
68
86
|
if (width && height) {
|
|
69
|
-
|
|
87
|
+
if (rawImageUrl) cacheDims(rawImageUrl, {
|
|
70
88
|
width,
|
|
71
89
|
height
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
setLoadedDims(dims);
|
|
90
|
+
});
|
|
91
|
+
setLoadDimsVersion(v => v + 1);
|
|
75
92
|
}
|
|
76
93
|
}
|
|
77
94
|
}, [metaWidth, metaHeight, rawImageUrl]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","useState","useCallback","useMemo","StyleSheet","useWindowDimensions","KContainer","KImage","ChatImageDimens","messageStyles","jsx","_jsx","jsxs","_jsxs","DEFAULT_DIMS","width","height","MAX_CACHE","dimsCache","Map","cacheDims","url","dims","size","delete","keys","next","value","set","calcDisplayDims","imgWidth","imgHeight","windowWidth","aspectRatio","horizontalBuffer","maxWidth","Math","floor","finalWidth","finalHeight","maxHeight","round","
|
|
1
|
+
{"version":3,"names":["memo","useState","useCallback","useMemo","StyleSheet","useWindowDimensions","KContainer","KImage","ChatImageDimens","messageStyles","jsx","_jsx","jsxs","_jsxs","DEFAULT_DIMS","width","height","MAX_CACHE","dimsCache","Map","cacheDims","url","dims","size","delete","keys","next","value","set","calcDisplayDims","imgWidth","imgHeight","windowWidth","aspectRatio","horizontalBuffer","maxWidth","Math","floor","finalWidth","finalHeight","maxHeight","round","resolveImageDisplayDims","message","pictureElem","rawImageUrl","snapshotPicture","bigPicture","sourcePicture","metaWidth","metaHeight","cachedDims","get","srcWidth","srcHeight","ImageMessage","onMediaPress","isLoading","setIsLoading","loadDimsVersion","setLoadDimsVersion","imageDimensions","handleLoad","e","nativeEvent","v","handlePress","optimizedUrl","getOptimizedImageUrlWithDimensions","View","style","styles","wrapper","children","Touchable","onPress","imageBubble","imageContainer","Base","uri","onLoad","skeleton","displayName","create","overflow","position","top","left","right","bottom","backgroundColor","borderRadius"],"sourceRoot":"../../../../../src","sources":["components/messages/imageMessage/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ import { memo } from 'react';
|
|
|
4
4
|
import { KContainer, KImage } from '@droppii/libs';
|
|
5
5
|
import { StyleSheet } from 'react-native';
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
-
const STICKER_SIZE = 120;
|
|
7
|
+
export const STICKER_SIZE = 120;
|
|
8
8
|
export const StickerMessage = /*#__PURE__*/memo(({
|
|
9
9
|
message
|
|
10
10
|
}) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","KContainer","KImage","StyleSheet","jsx","_jsx","STICKER_SIZE","StickerMessage","message","View","style","styles","children","Base","uri","stickerElem","content","width","height","create","justifyContent","alignItems"],"sourceRoot":"../../../../../src","sources":["components/messages/stickerMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAE5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,UAAU,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1C,MAAMC,YAAY,GAAG,GAAG;
|
|
1
|
+
{"version":3,"names":["memo","KContainer","KImage","StyleSheet","jsx","_jsx","STICKER_SIZE","StickerMessage","message","View","style","styles","children","Base","uri","stickerElem","content","width","height","create","justifyContent","alignItems"],"sourceRoot":"../../../../../src","sources":["components/messages/stickerMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAE5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,UAAU,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1C,OAAO,MAAMC,YAAY,GAAG,GAAG;AAC/B,OAAO,MAAMC,cAAc,gBAAGP,IAAI,CAAC,CAAC;EAAEQ;AAAgC,CAAC,KAAK;EAC1E,oBACEH,IAAA,CAACJ,UAAU,CAACQ,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACH,OAAQ;IAAAI,QAAA,eACrCP,IAAA,CAACH,MAAM,CAACW,IAAI;MACVC,GAAG,EAAEN,OAAO,EAAEO,WAAW,EAAEC,OAAO,IAAI,EAAG;MACzCC,KAAK,EAAEX,YAAa;MACpBY,MAAM,EAAEZ;IAAa,CACtB;EAAC,CACa,CAAC;AAEtB,CAAC,CAAC;AAEF,MAAMK,MAAM,GAAGR,UAAU,CAACgB,MAAM,CAAC;EAC/BX,OAAO,EAAE;IACPS,KAAK,EAAEX,YAAY;IACnBY,MAAM,EAAEZ,YAAY;IACpBc,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -20,6 +20,7 @@ const VideoPlayer = /*#__PURE__*/memo(props => {
|
|
|
20
20
|
onPress,
|
|
21
21
|
resizeMode = ResizeMode.CONTAIN,
|
|
22
22
|
showCustomControls = false,
|
|
23
|
+
isActive,
|
|
23
24
|
height
|
|
24
25
|
} = props;
|
|
25
26
|
const videoRef = useRef(null);
|
|
@@ -55,6 +56,17 @@ const VideoPlayer = /*#__PURE__*/memo(props => {
|
|
|
55
56
|
}
|
|
56
57
|
}, [paused, resumeVideo, pauseVideo, onPress]);
|
|
57
58
|
|
|
59
|
+
// `isActive` (this is the currently-viewed page in the pager) drives
|
|
60
|
+
// play/pause directly — becoming active resumes, becoming inactive pauses.
|
|
61
|
+
// `repeat` on `<Video>` handles looping natively while playing.
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
if (isActive) {
|
|
64
|
+
resumeVideo();
|
|
65
|
+
} else {
|
|
66
|
+
pauseVideo();
|
|
67
|
+
}
|
|
68
|
+
}, [isActive, resumeVideo, pauseVideo]);
|
|
69
|
+
|
|
58
70
|
/** GESTURE (worklet -> runOnJS) */
|
|
59
71
|
const singleTap = useMemo(() => Gesture.Tap().maxDuration(250).numberOfTaps(1).onEnd((_e, success) => {
|
|
60
72
|
'worklet';
|
|
@@ -124,8 +136,8 @@ const VideoPlayer = /*#__PURE__*/memo(props => {
|
|
|
124
136
|
style: styles.video,
|
|
125
137
|
muted: muted,
|
|
126
138
|
paused: paused,
|
|
127
|
-
resizeMode: resizeMode,
|
|
128
139
|
repeat: true,
|
|
140
|
+
resizeMode: resizeMode,
|
|
129
141
|
controls: !showCustomControls,
|
|
130
142
|
ignoreSilentSwitch: IgnoreSilentSwitchType.IGNORE
|
|
131
143
|
}), renderOverlay()]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","memo","ActivityIndicator","StyleSheet","KColors","KContainer","KImage","KDims","KRadiusValue","KSpacingValue","Video","IgnoreSilentSwitchType","ResizeMode","Gesture","GestureDetector","runOnJS","useSharedValue","jsx","_jsx","jsxs","_jsxs","bufferConfig","minBufferMs","maxBufferMs","bufferForPlaybackMs","bufferForPlaybackAfterRebufferMs","cacheSizeMB","VideoPlayer","props","url","onPress","resizeMode","CONTAIN","showCustomControls","height","videoRef","containerWidth","containerHeight","muted","setMuted","paused","setPaused","initLoading","setInitLoading","buffering","setBuffering","onReadyForDisplay","onBuffer","e","isBuffering","onLoadStart","onLoad","resumeVideo","current","resume","pauseVideo","pause","handleSingleTapJS","singleTap","Tap","maxDuration","numberOfTaps","onEnd","_e","success","handleContainerLayout","value","nativeEvent","layout","width","renderIndicator","VisibleView","visible","children","animating","size","style","styles","loader","color","primary","normal","renderOverlay","View","overlay","Touchable","playButton","VectorIcons","name","white","memoHeight","videoContent","videoContainer","collapsable","edges","onLayout","ref","source","uri","video","repeat","controls","ignoreSilentSwitch","IGNORE","gesture","displayName","create","flex","backgroundColor","black","justifyContent","alignItems","absoluteFill","position","zIndex","borderRadius","padding"],"sourceRoot":"../../../../src","sources":["screens/MediaView/VideoPlayer.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,IAAI,QAAQ,OAAO;AAC/E,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,cAAc;AAC5D,SACEC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,KAAK,EACLC,YAAY,EACZC,aAAa,QACR,eAAe;AACtB,OAAOC,KAAK,IAAIC,sBAAsB,EAAEC,UAAU,QAAQ,oBAAoB;AAE9E,SAASC,OAAO,EAAEC,eAAe,QAAQ,8BAA8B;AACvE,SAASC,OAAO,EAAEC,cAAc,QAAQ,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAWlE,MAAMC,YAA0B,GAAG;EACjCC,WAAW,EAAE,KAAK;EAClBC,WAAW,EAAE,KAAK;EAClBC,mBAAmB,EAAE,IAAI;EACzBC,gCAAgC,EAAE,IAAI;EACtCC,WAAW,EAAE;AACf,CAAC;AAED,MAAMC,WAAW,gBAAG1B,IAAI,CAAE2B,KAAY,IAAK;EACzC,MAAM;IACJC,GAAG;IACHC,OAAO;IACPC,UAAU,GAAGnB,UAAU,CAACoB,OAAO;IAC/BC,kBAAkB,GAAG,KAAK;
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","memo","ActivityIndicator","StyleSheet","KColors","KContainer","KImage","KDims","KRadiusValue","KSpacingValue","Video","IgnoreSilentSwitchType","ResizeMode","Gesture","GestureDetector","runOnJS","useSharedValue","jsx","_jsx","jsxs","_jsxs","bufferConfig","minBufferMs","maxBufferMs","bufferForPlaybackMs","bufferForPlaybackAfterRebufferMs","cacheSizeMB","VideoPlayer","props","url","onPress","resizeMode","CONTAIN","showCustomControls","isActive","height","videoRef","containerWidth","containerHeight","muted","setMuted","paused","setPaused","initLoading","setInitLoading","buffering","setBuffering","onReadyForDisplay","onBuffer","e","isBuffering","onLoadStart","onLoad","resumeVideo","current","resume","pauseVideo","pause","handleSingleTapJS","singleTap","Tap","maxDuration","numberOfTaps","onEnd","_e","success","handleContainerLayout","value","nativeEvent","layout","width","renderIndicator","VisibleView","visible","children","animating","size","style","styles","loader","color","primary","normal","renderOverlay","View","overlay","Touchable","playButton","VectorIcons","name","white","memoHeight","videoContent","videoContainer","collapsable","edges","onLayout","ref","source","uri","video","repeat","controls","ignoreSilentSwitch","IGNORE","gesture","displayName","create","flex","backgroundColor","black","justifyContent","alignItems","absoluteFill","position","zIndex","borderRadius","padding"],"sourceRoot":"../../../../src","sources":["screens/MediaView/VideoPlayer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useCallback, useEffect, useRef, useState, useMemo } from 'react';
|
|
4
|
-
import { ActivityIndicator, BackHandler, Platform, StyleSheet, StatusBar } from 'react-native';
|
|
4
|
+
import { ActivityIndicator, BackHandler, Platform, StyleSheet, StatusBar, useWindowDimensions } from 'react-native';
|
|
5
5
|
import { LegendList } from '@legendapp/list/react-native';
|
|
6
6
|
import LinearGradient from 'react-native-linear-gradient';
|
|
7
7
|
import Animated, { FadeIn, FadeOut, SlideInDown, SlideOutDown } from 'react-native-reanimated';
|
|
@@ -21,7 +21,7 @@ const MediaViewerScreen = props => {
|
|
|
21
21
|
images = [],
|
|
22
22
|
initIndex = 0,
|
|
23
23
|
download,
|
|
24
|
-
pagination,
|
|
24
|
+
pagination = false,
|
|
25
25
|
onDismiss
|
|
26
26
|
} = props;
|
|
27
27
|
const insets = useSafeAreaInsets();
|
|
@@ -29,6 +29,9 @@ const MediaViewerScreen = props => {
|
|
|
29
29
|
const [index, setIndex] = useState(initIndex);
|
|
30
30
|
const [isScrolling, setIsScrolling] = useState(false);
|
|
31
31
|
const [isDownloading, setIsDownloading] = useState(false);
|
|
32
|
+
const {
|
|
33
|
+
height
|
|
34
|
+
} = useWindowDimensions();
|
|
32
35
|
const dismiss = useCallback(() => {
|
|
33
36
|
onDismiss?.();
|
|
34
37
|
}, [onDismiss]);
|
|
@@ -83,13 +86,14 @@ const MediaViewerScreen = props => {
|
|
|
83
86
|
};
|
|
84
87
|
}, []);
|
|
85
88
|
useEffect(() => {
|
|
89
|
+
let sub = null;
|
|
86
90
|
if (Platform.OS === 'android') {
|
|
87
|
-
|
|
91
|
+
sub = BackHandler.addEventListener('hardwareBackPress', () => {
|
|
88
92
|
dismiss();
|
|
89
93
|
return true;
|
|
90
94
|
});
|
|
91
|
-
return () => sub.remove();
|
|
92
95
|
}
|
|
96
|
+
return () => sub?.remove();
|
|
93
97
|
}, [dismiss]);
|
|
94
98
|
const onMomentumScrollBegin = useCallback(() => setIsScrolling(true), []);
|
|
95
99
|
const onMomentumScrollEnd = useCallback(() => setIsScrolling(false), []);
|
|
@@ -99,7 +103,7 @@ const MediaViewerScreen = props => {
|
|
|
99
103
|
const i = viewableItems[0]?.index;
|
|
100
104
|
setIndex(i || 0);
|
|
101
105
|
}).current;
|
|
102
|
-
const keyEx = useCallback((item, i) => `${item
|
|
106
|
+
const keyEx = useCallback((item, i) => `${item?.url}-${i}`, []);
|
|
103
107
|
const renderItem = useCallback(({
|
|
104
108
|
item,
|
|
105
109
|
index: itemIndex
|
|
@@ -111,7 +115,8 @@ const MediaViewerScreen = props => {
|
|
|
111
115
|
children: /*#__PURE__*/_jsx(VideoPlayer, {
|
|
112
116
|
url: item?.url || '',
|
|
113
117
|
isActive: itemIndex === index && !isScrolling,
|
|
114
|
-
showCustomControls: false
|
|
118
|
+
showCustomControls: false,
|
|
119
|
+
height: height
|
|
115
120
|
})
|
|
116
121
|
}), /*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
117
122
|
visible: !item.isVideo,
|
|
@@ -126,10 +131,13 @@ const MediaViewerScreen = props => {
|
|
|
126
131
|
style: styles.img
|
|
127
132
|
})
|
|
128
133
|
})]
|
|
129
|
-
}), [index, isScrolling]);
|
|
134
|
+
}), [index, isScrolling, height]);
|
|
130
135
|
const renderFooter = useMemo(() => {
|
|
131
136
|
// `pagination` only toggles the dot indicator (noisy on large sets like
|
|
132
137
|
// Resource Center grids) — the current-index counter should always show.
|
|
138
|
+
// Defaults to HIDDEN — callers must explicitly pass `pagination` to show
|
|
139
|
+
// dots (was inverted: it used to default to visible, hidden only via
|
|
140
|
+
// `pagination={false}`).
|
|
133
141
|
if (images.length <= 1) return null;
|
|
134
142
|
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
135
143
|
style: [styles.footer, {
|
|
@@ -141,7 +149,7 @@ const MediaViewerScreen = props => {
|
|
|
141
149
|
style: styles.counterText,
|
|
142
150
|
children: [index + 1, "/", images.length]
|
|
143
151
|
}), /*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
144
|
-
visible: pagination
|
|
152
|
+
visible: pagination === true,
|
|
145
153
|
children: /*#__PURE__*/_jsx(Pagination, {
|
|
146
154
|
dotContainerStyle: styles.dotContainerStyle,
|
|
147
155
|
dotStyle: styles.dot,
|
|
@@ -219,7 +227,8 @@ const MediaViewerScreen = props => {
|
|
|
219
227
|
},
|
|
220
228
|
onMomentumScrollBegin: onMomentumScrollBegin,
|
|
221
229
|
onMomentumScrollEnd: onMomentumScrollEnd,
|
|
222
|
-
style: styles.flex
|
|
230
|
+
style: styles.flex,
|
|
231
|
+
extraData: [index, isScrolling]
|
|
223
232
|
}), renderFooter]
|
|
224
233
|
})
|
|
225
234
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useRef","useState","useMemo","ActivityIndicator","BackHandler","Platform","StyleSheet","StatusBar","LegendList","LinearGradient","Animated","FadeIn","FadeOut","SlideInDown","SlideOutDown","Pagination","PhotoView","RNFS","useSafeAreaInsets","saveDocuments","KColors","KContainer","KDims","KImage","KLabel","KRadiusValue","KSpacingValue","VideoPlayer","UIUtils","trans","getMimeType","jsx","_jsx","jsxs","_jsxs","MediaViewerScreen","props","images","initIndex","download","pagination","onDismiss","insets","listRef","index","setIndex","isScrolling","setIsScrolling","isDownloading","setIsDownloading","dismiss","onDownload","item","url","urlPath","split","fallbackExt","isVideo","fileName","pop","destPath","CachesDirectoryPath","exists","result","downloadFile","fromUrl","toFile","promise","statusCode","Error","sourceUris","mimeType","copy","toast","open","title","theme","setHidden","OS","sub","addEventListener","remove","onMomentumScrollBegin","onMomentumScrollEnd","onViewableItemsChanged","viewableItems","i","current","keyEx","renderItem","itemIndex","Touchable","center","activeOpacity","children","VisibleView","visible","isActive","showCustomControls","source","uri","minimumZoomScale","maximumZoomScale","scale","androidScaleType","style","styles","img","renderFooter","length","View","footer","bottom","Text","typo","color","white","counterText","dotContainerStyle","dotStyle","dot","inactiveDotStyle","inactiveDot","inactiveDotScale","dotsLength","activeDotIndex","inactiveDotOpacity","wrapper","entering","exiting","stiffness","flex","colors","topOverlay","paddingTop","top","pointerEvents","headerRow","headerBtn","onPress","VectorIcons","name","size","undefined","disabled","ref","initialScrollIndex","data","keyExtractor","estimatedItemSize","width","pagingEnabled","horizontal","showsHorizontalScrollIndicator","viewabilityConfig","itemVisiblePercentThreshold","displayName","create","backgroundColor","black","height","position","left","right","zIndex","minHeight","flexDirection","alignItems","padding","borderRadius","justifyContent","actionGroup","gap","counterWrapper","letterSpacing","cartIconStyle","selectToDownloadWrapper","marginTop","selectToDownloadBtn","paddingHorizontal","borderWidth","borderColor","selectToDownloadText","alignSelf","marginHorizontal","gray","light"],"sourceRoot":"../../../../src","sources":["screens/MediaView/index.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,OAAO,QAAQ,OAAO;AAEzE,SACEC,iBAAiB,EACjBC,WAAW,EACXC,QAAQ,EACRC,UAAU,EAEVC,SAAS,QACJ,cAAc;AACrB,SACEC,UAAU,QAGL,8BAA8B;AAErC,OAAOC,cAAc,MAAM,8BAA8B;AACzD,OAAOC,QAAQ,IACbC,MAAM,EACNC,OAAO,EACPC,WAAW,EACXC,YAAY,QACP,yBAAyB;AAChC,SAASC,UAAU,QAAQ,4BAA4B;AACvD,OAAOC,SAAS,MAAM,yBAAyB;AAC/C,OAAOC,IAAI,MAAM,iBAAiB;AAClC,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,aAAa,QAAQ,gCAAgC;AAC9D,SACEC,OAAO,EACPC,UAAU,EACVC,KAAK,EACLC,MAAM,EACNC,MAAM,EACNC,YAAY,EACZC,aAAa,QACR,eAAe;AACtB,OAAOC,WAAW,MAAM,kBAAe;AACvC,SAASC,OAAO,QAAQ,wBAAqB;AAC7C,SAASC,KAAK,QAAQ,4BAAmB;AACzC,SAASC,WAAW,QAAQ,2BAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAWrD,MAAMC,iBAAiB,GAAIC,KAAwB,IAAK;EACtD,MAAM;IACJC,MAAM,GAAG,EAAE;IACXC,SAAS,GAAG,CAAC;IACbC,QAAQ;IACRC,UAAU;IAEVC;EACF,CAAC,GAAGL,KAAK;EAET,MAAMM,MAAM,GAAGxB,iBAAiB,CAAC,CAAC;EAClC,MAAMyB,OAAO,GAAG3C,MAAM,CAAgB,IAAI,CAAC;EAC3C,MAAM,CAAC4C,KAAK,EAAEC,QAAQ,CAAC,GAAG5C,QAAQ,CAACqC,SAAS,CAAC;EAC7C,MAAM,CAACQ,WAAW,EAAEC,cAAc,CAAC,GAAG9C,QAAQ,CAAC,KAAK,CAAC;EACrD,MAAM,CAAC+C,aAAa,EAAEC,gBAAgB,CAAC,GAAGhD,QAAQ,CAAC,KAAK,CAAC;EAEzD,MAAMiD,OAAO,GAAGpD,WAAW,CAAC,MAAM;IAChC2C,SAAS,GAAG,CAAC;EACf,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;;EAEf;EACA;EACA;EACA,MAAMU,UAAU,GAAGrD,WAAW,CAAC,YAAY;IACzC,MAAMsD,IAAI,GAAGf,MAAM,CAACO,KAAK,CAAC;IAC1B,IAAI,CAACQ,IAAI,EAAEC,GAAG,IAAIL,aAAa,EAAE;IAEjCC,gBAAgB,CAAC,IAAI,CAAC;IACtB,IAAI;MACF,MAAMK,OAAO,GAAGF,IAAI,CAACC,GAAG,CAACE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACtC,MAAMC,WAAW,GAAGJ,IAAI,CAACK,OAAO,GAAG,KAAK,GAAG,KAAK;MAChD,MAAMC,QAAQ,GACZJ,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAACI,GAAG,CAAC,CAAC,IACxB,GAAGP,IAAI,CAACK,OAAO,GAAG,OAAO,GAAG,OAAO,IAAIb,KAAK,IAAIY,WAAW,EAAE;MAC/D,MAAMI,QAAQ,GAAG,GAAG3C,IAAI,CAAC4C,mBAAmB,IAAIH,QAAQ,EAAE;MAE1D,MAAMI,MAAM,GAAG,MAAM7C,IAAI,CAAC6C,MAAM,CAACF,QAAQ,CAAC;MAC1C,IAAI,CAACE,MAAM,EAAE;QACX,MAAMC,MAAM,GAAG,MAAM9C,IAAI,CAAC+C,YAAY,CAAC;UACrCC,OAAO,EAAEb,IAAI,CAACC,GAAG;UACjBa,MAAM,EAAEN;QACV,CAAC,CAAC,CAACO,OAAO;QACV,IAAIJ,MAAM,CAACK,UAAU,GAAG,GAAG,IAAIL,MAAM,CAACK,UAAU,IAAI,GAAG,EAAE;UACvD,MAAM,IAAIC,KAAK,CAAC,QAAQN,MAAM,CAACK,UAAU,EAAE,CAAC;QAC9C;MACF;MAEA,MAAMjD,aAAa,CAAC;QAClBmD,UAAU,EAAE,CAAC,UAAUV,QAAQ,EAAE,CAAC;QAClCW,QAAQ,EAAEzC,WAAW,CAAC4B,QAAQ,CAAC;QAC/BA,QAAQ;QACRc,IAAI,EAAE;MACR,CAAC,CAAC;MACF5C,OAAO,CAAC6C,KAAK,CAACC,IAAI,CAAC;QACjBC,KAAK,EAAE9C,KAAK,CAAC,8BAA8B,EAAE;UAAE6B;QAAS,CAAC,CAAC;QAC1DkB,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,MAAM;MACNhD,OAAO,CAAC6C,KAAK,CAACC,IAAI,CAAC;QACjBC,KAAK,EAAE9C,KAAK,CAAC,2BAA2B,CAAC;QACzC+C,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,SAAS;MACR3B,gBAAgB,CAAC,KAAK,CAAC;IACzB;EACF,CAAC,EAAE,CAACZ,MAAM,EAAEO,KAAK,EAAEI,aAAa,CAAC,CAAC;EAElCjD,SAAS,CAAC,MAAM;IACdQ,SAAS,CAACsE,SAAS,CAAC,IAAI,CAAC;IACzB,OAAO,MAAM;MACXtE,SAAS,CAACsE,SAAS,CAAC,KAAK,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN9E,SAAS,CAAC,MAAM;IACd,IAAIM,QAAQ,CAACyE,EAAE,KAAK,SAAS,EAAE;MAC7B,MAAMC,GAAG,GAAG3E,WAAW,CAAC4E,gBAAgB,CAAC,mBAAmB,EAAE,MAAM;QAClE9B,OAAO,CAAC,CAAC;QACT,OAAO,IAAI;MACb,CAAC,CAAC;MACF,OAAO,MAAM6B,GAAG,CAACE,MAAM,CAAC,CAAC;IAC3B;EACF,CAAC,EAAE,CAAC/B,OAAO,CAAC,CAAC;EAEb,MAAMgC,qBAAqB,GAAGpF,WAAW,CAAC,MAAMiD,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;EACzE,MAAMoC,mBAAmB,GAAGrF,WAAW,CAAC,MAAMiD,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;EAExE,MAAMqC,sBAAsB,GAAGpF,MAAM,CACnC,CAAC;IAAEqF;EAA8C,CAAC,KAAK;IACrD,MAAMC,CAAC,GAAGD,aAAa,CAAC,CAAC,CAAC,EAAEzC,KAAK;IACjCC,QAAQ,CAACyC,CAAC,IAAI,CAAC,CAAC;EAClB,CACF,CAAC,CAACC,OAAO;EAET,MAAMC,KAAK,GAAG1F,WAAW,CAAC,CAACsD,IAAS,EAAEkC,CAAS,KAAK,GAAGlC,IAAI,CAACC,GAAG,IAAIiC,CAAC,EAAE,EAAE,EAAE,CAAC;EAE3E,MAAMG,UAAU,GAAG3F,WAAW,CAC5B,CAAC;IAAEsD,IAAI;IAAER,KAAK,EAAE8C;EAA0C,CAAC,kBACzDxD,KAAA,CAACb,UAAU,CAACsE,SAAS;IAACC,MAAM;IAACC,aAAa,EAAE,CAAE;IAAAC,QAAA,gBAC5C9D,IAAA,CAACX,UAAU,CAAC0E,WAAW;MAACC,OAAO,EAAE,CAAC,CAAC5C,IAAI,CAACK,OAAQ;MAAAqC,QAAA,eAC9C9D,IAAA,CAACL,WAAW;QACV0B,GAAG,EAAED,IAAI,EAAEC,GAAG,IAAI,EAAG;QACrB4C,QAAQ,EAAEP,SAAS,KAAK9C,KAAK,IAAI,CAACE,WAAY;QAC9CoD,kBAAkB,EAAE;MAAM,CAC3B;IAAC,CACoB,CAAC,eACzBlE,IAAA,CAACX,UAAU,CAAC0E,WAAW;MAACC,OAAO,EAAE,CAAC5C,IAAI,CAACK,OAAQ;MAAAqC,QAAA,eAC7C9D,IAAA,CAAChB,SAAS;QACRmF,MAAM,EAAE;UAAEC,GAAG,EAAEhD,IAAI,CAACC;QAAI,CAAE;QAC1BgD,gBAAgB,EAAE,CAAE;QACpBC,gBAAgB,EAAE,CAAE;QACpBC,KAAK,EAAE,CAAE;QACTC,gBAAgB,EAAC,WAAW;QAC5BC,KAAK,EAAEC,MAAM,CAACC;MAAI,CACnB;IAAC,CACoB,CAAC;EAAA,CACL,CACvB,EACD,CAAC/D,KAAK,EAAEE,WAAW,CACrB,CAAC;EAED,MAAM8D,YAAY,GAAG1G,OAAO,CAAC,MAAM;IACjC;IACA;IACA,IAAImC,MAAM,CAACwE,MAAM,IAAI,CAAC,EAAE,OAAO,IAAI;IACnC,oBACE3E,KAAA,CAACb,UAAU,CAACyF,IAAI;MACdL,KAAK,EAAE,CACLC,MAAM,CAACK,MAAM,EACb;QACEC,MAAM,EACJtE,MAAM,CAACsE,MAAM,GAAG,CAAC,GACbtE,MAAM,CAACsE,MAAM,GAAGtF,aAAa,CAAC,QAAQ,CAAC,GACvCA,aAAa,CAAC,MAAM;MAC5B,CAAC,CACD;MAAAoE,QAAA,gBAEF5D,KAAA,CAACV,MAAM,CAACyF,IAAI;QACVC,IAAI,EAAC,cAAc;QACnBC,KAAK,EAAE/F,OAAO,CAACgG,KAAM;QACrBX,KAAK,EAAEC,MAAM,CAACW,WAAY;QAAAvB,QAAA,GAEzBlD,KAAK,GAAG,CAAC,EAAC,GAAC,EAACP,MAAM,CAACwE,MAAM;MAAA,CACf,CAAC,eACd7E,IAAA,CAACX,UAAU,CAAC0E,WAAW;QAACC,OAAO,EAAExD,UAAU,KAAK,KAAM;QAAAsD,QAAA,eACpD9D,IAAA,CAACjB,UAAU;UACTuG,iBAAiB,EAAEZ,MAAM,CAACY,iBAAkB;UAC5CC,QAAQ,EAAEb,MAAM,CAACc,GAAI;UACrBC,gBAAgB,EAAEf,MAAM,CAACgB,WAAY;UACrCC,gBAAgB,EAAE,GAAI;UACtBC,UAAU,EAAEvF,MAAM,CAACwE,MAAO;UAC1BgB,cAAc,EAAEjF,KAAM;UACtBkF,kBAAkB,EAAE;QAAI,CACzB;MAAC,CACoB,CAAC;IAAA,CACV,CAAC;EAEtB,CAAC,EAAE,CAACtF,UAAU,EAAEH,MAAM,CAACwE,MAAM,EAAEjE,KAAK,EAAEF,MAAM,CAACsE,MAAM,CAAC,CAAC;EACrD,oBACEhF,IAAA,CAACtB,QAAQ,CAACoG,IAAI;IACZL,KAAK,EAAEC,MAAM,CAACqB,OAAQ;IACtBC,QAAQ,EAAEnH,WAAY;IACtBoH,OAAO,EAAEnH,YAAa;IAAAgF,QAAA,eAEtB5D,KAAA,CAACxB,QAAQ,CAACoG,IAAI;MACZkB,QAAQ,EAAErH,MAAM,CAACuH,SAAS,CAAC,GAAG,CAAE;MAChCD,OAAO,EAAErH,OAAO,CAACsH,SAAS,CAAC,GAAG,CAAE;MAChCzB,KAAK,EAAEC,MAAM,CAACyB,IAAK;MAAArC,QAAA,gBAGnB9D,IAAA,CAACvB,cAAc;QACb2H,MAAM,EAAE,CAAC,iBAAiB,EAAE,eAAe,CAAE;QAC7C3B,KAAK,EAAE,CAACC,MAAM,CAAC2B,UAAU,EAAE;UAAEC,UAAU,EAAE5F,MAAM,CAAC6F;QAAI,CAAC,CAAE;QACvDC,aAAa,EAAC,UAAU;QAAA1C,QAAA,eAGxB5D,KAAA,CAACb,UAAU,CAACyF,IAAI;UAACL,KAAK,EAAEC,MAAM,CAAC+B,SAAU;UAAA3C,QAAA,gBAEvC9D,IAAA,CAACX,UAAU,CAACsE,SAAS;YAACc,KAAK,EAAEC,MAAM,CAACgC,SAAU;YAACC,OAAO,EAAEzF,OAAQ;YAAA4C,QAAA,eAC9D9D,IAAA,CAACT,MAAM,CAACqH,WAAW;cACjBC,IAAI,EAAC,SAAS;cACdC,IAAI,EAAE,EAAG;cACT3B,KAAK,EAAE/F,OAAO,CAACgG;YAAM,CACtB;UAAC,CACkB,CAAC,eAGvBpF,IAAA,CAACX,UAAU,CAACyF,IAAI;YAACqB,IAAI;UAAA,CAAE,CAAC,eAGxBnG,IAAA,CAACX,UAAU,CAAC0E,WAAW;YAACC,OAAO,EAAE,CAAC,CAACzD,QAAS;YAAAuD,QAAA,eAC1C5D,KAAA,CAACb,UAAU,CAACsE,SAAS;cACnBc,KAAK,EAAEC,MAAM,CAACgC,SAAU;cACxBC,OAAO,EAAE3F,aAAa,GAAG+F,SAAS,GAAG5F,UAAW;cAChD6F,QAAQ,EAAEhG,aAAc;cAAA8C,QAAA,gBAExB9D,IAAA,CAACX,UAAU,CAAC0E,WAAW;gBAACC,OAAO,EAAEhD,aAAc;gBAAA8C,QAAA,eAC7C9D,IAAA,CAAC7B,iBAAiB;kBAAC2I,IAAI,EAAC,OAAO;kBAAC3B,KAAK,EAAE/F,OAAO,CAACgG;gBAAM,CAAE;cAAC,CAClC,CAAC,eACzBpF,IAAA,CAACX,UAAU,CAAC0E,WAAW;gBAACC,OAAO,EAAE,CAAChD,aAAc;gBAAA8C,QAAA,eAC9C9D,IAAA,CAACT,MAAM,CAACqH,WAAW;kBACjBC,IAAI,EAAC,YAAY;kBACjBC,IAAI,EAAE,EAAG;kBACT3B,KAAK,EAAE/F,OAAO,CAACgG;gBAAM,CACtB;cAAC,CACoB,CAAC;YAAA,CACL;UAAC,CACD,CAAC;QAAA,CACV;MAAC,CACJ,CAAC,eAOjBpF,IAAA,CAACxB,UAAU;QACTyI,GAAG,EAAEtG,OAAQ;QACbuG,kBAAkB,EAChB5G,SAAS,IAAID,MAAM,EAAEwE,MAAM,GAAGxE,MAAM,EAAEwE,MAAM,GAAG,CAAC,GAAGvE,SACpD;QACD6G,IAAI,EAAE9G,MAAO;QACboD,UAAU,EAAEA,UAAW;QACvB2D,YAAY,EAAE5D,KAAM;QACpB6D,iBAAiB,EAAE/H,KAAK,CAACgI,KAAM;QAC/BC,aAAa;QACbC,UAAU;QACVC,8BAA8B,EAAE,KAAM;QACtCrE,sBAAsB,EAAEA,sBAAuB;QAC/CsE,iBAAiB,EAAE;UAAEC,2BAA2B,EAAE;QAAG,CAAE;QACvDzE,qBAAqB,EAAEA,qBAAsB;QAC7CC,mBAAmB,EAAEA,mBAAoB;QACzCsB,KAAK,EAAEC,MAAM,CAACyB;MAAK,CACpB,CAAC,EAEDvB,YAAY;IAAA,CACA;EAAC,CACH,CAAC;AAEpB,CAAC;AAEAzE,iBAAiB,CAAwByH,WAAW,GAAG,oBAAoB;AAE5E,eAAezH,iBAAiB;AAEhC,MAAMuE,MAAM,GAAGpG,UAAU,CAACuJ,MAAM,CAAC;EAC/B9B,OAAO,EAAE;IACPI,IAAI,EAAE,CAAC;IACP2B,eAAe,EAAE1I,OAAO,CAAC2I;EAC3B,CAAC;EACD5B,IAAI,EAAE;IACJA,IAAI,EAAE;EACR,CAAC;EACDxB,GAAG,EAAE;IACH2C,KAAK,EAAEhI,KAAK,CAACgI,KAAK;IAClBU,MAAM,EAAE1I,KAAK,CAAC0I;EAChB,CAAC;EACD3B,UAAU,EAAE;IACV;IACA;IACA4B,QAAQ,EAAE,UAAU;IACpB1B,GAAG,EAAE,CAAC;IACN2B,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,GAAG;IACXC,SAAS,EAAE;EACb,CAAC;EACD;EACA5B,SAAS,EAAE;IACT6B,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,OAAO,EAAE;EACX,CAAC;EACD;EACA9B,SAAS,EAAE;IACT8B,OAAO,EAAE,CAAC;IACVC,YAAY,EAAE,GAAG;IACjBC,cAAc,EAAE,QAAQ;IACxBH,UAAU,EAAE;EACd,CAAC;EACD;EACAI,WAAW,EAAE;IACXL,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBK,GAAG,EAAE;EACP,CAAC;EACD;EACAC,cAAc,EAAE;IACdZ,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACR5B,GAAG,EAAE,EAAE;IACPgC,UAAU,EAAE;EACd,CAAC;EACDlD,WAAW,EAAE;IACXyD,aAAa,EAAE;EACjB,CAAC;EACDC,aAAa,EAAE;IACb5D,KAAK,EAAE/F,OAAO,CAACgG;EACjB,CAAC;EACD4D,uBAAuB,EAAE;IACvBT,UAAU,EAAE,QAAQ;IACpBU,SAAS,EAAEvJ,aAAa,CAAC,QAAQ;EACnC,CAAC;EACDwJ,mBAAmB,EAAE;IACnBZ,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBP,MAAM,EAAE,EAAE;IACVmB,iBAAiB,EAAEzJ,aAAa,CAAC,SAAS,CAAC;IAC3C+I,YAAY,EAAEhJ,YAAY,CAAC,IAAI,CAAC;IAChC2J,WAAW,EAAE,CAAC;IACdC,WAAW,EAAEjK,OAAO,CAACgG,KAAK;IAC1BwD,GAAG,EAAElJ,aAAa,CAAC,SAAS;EAC9B,CAAC;EACD4J,oBAAoB,EAAE;IACpBR,aAAa,EAAE;EACjB,CAAC;EACD/D,MAAM,EAAE;IACN;IACA;IACA;IACAkD,QAAQ,EAAE,UAAU;IACpBsB,SAAS,EAAE,QAAQ;IACnBhB,UAAU,EAAE,QAAQ;IACpBH,MAAM,EAAE;EACV,CAAC;EACD9C,iBAAiB,EAAE;IACjBkE,gBAAgB,EAAE;EACpB,CAAC;EACDhE,GAAG,EAAE;IACHsC,eAAe,EAAE1I,OAAO,CAACgG,KAAK;IAC9BkC,KAAK,EAAE,CAAC;IACRU,MAAM,EAAE,CAAC;IACTS,YAAY,EAAE,CAAC;IACfe,gBAAgB,EAAE;EACpB,CAAC;EACD9D,WAAW,EAAE;IACXoC,eAAe,EAAE1I,OAAO,CAACqK,IAAI,CAACC;EAChC;AACF,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","useMemo","ActivityIndicator","BackHandler","Platform","StyleSheet","StatusBar","useWindowDimensions","LegendList","LinearGradient","Animated","FadeIn","FadeOut","SlideInDown","SlideOutDown","Pagination","PhotoView","RNFS","useSafeAreaInsets","saveDocuments","KColors","KContainer","KDims","KImage","KLabel","KRadiusValue","KSpacingValue","VideoPlayer","UIUtils","trans","getMimeType","jsx","_jsx","jsxs","_jsxs","MediaViewerScreen","props","images","initIndex","download","pagination","onDismiss","insets","listRef","index","setIndex","isScrolling","setIsScrolling","isDownloading","setIsDownloading","height","dismiss","onDownload","item","url","urlPath","split","fallbackExt","isVideo","fileName","pop","destPath","CachesDirectoryPath","exists","result","downloadFile","fromUrl","toFile","promise","statusCode","Error","sourceUris","mimeType","copy","toast","open","title","theme","setHidden","sub","OS","addEventListener","remove","onMomentumScrollBegin","onMomentumScrollEnd","onViewableItemsChanged","viewableItems","i","current","keyEx","renderItem","itemIndex","Touchable","center","activeOpacity","children","VisibleView","visible","isActive","showCustomControls","source","uri","minimumZoomScale","maximumZoomScale","scale","androidScaleType","style","styles","img","renderFooter","length","View","footer","bottom","Text","typo","color","white","counterText","dotContainerStyle","dotStyle","dot","inactiveDotStyle","inactiveDot","inactiveDotScale","dotsLength","activeDotIndex","inactiveDotOpacity","wrapper","entering","exiting","stiffness","flex","colors","topOverlay","paddingTop","top","pointerEvents","headerRow","headerBtn","onPress","VectorIcons","name","size","undefined","disabled","ref","initialScrollIndex","data","keyExtractor","estimatedItemSize","width","pagingEnabled","horizontal","showsHorizontalScrollIndicator","viewabilityConfig","itemVisiblePercentThreshold","extraData","displayName","create","backgroundColor","black","position","left","right","zIndex","minHeight","flexDirection","alignItems","padding","borderRadius","justifyContent","actionGroup","gap","counterWrapper","letterSpacing","cartIconStyle","selectToDownloadWrapper","marginTop","selectToDownloadBtn","paddingHorizontal","borderWidth","borderColor","selectToDownloadText","alignSelf","marginHorizontal","gray","light"],"sourceRoot":"../../../../src","sources":["screens/MediaView/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { memo, useCallback, useMemo, useEffect, useRef, useState } from 'react';
|
|
4
|
-
import { DeviceEventEmitter, StyleSheet } from 'react-native';
|
|
4
|
+
import { DeviceEventEmitter, StyleSheet, useWindowDimensions } from 'react-native';
|
|
5
5
|
import Animated, { useSharedValue, useAnimatedStyle, withSpring } from 'react-native-reanimated';
|
|
6
6
|
import { KeyboardAwareLegendList } from '@legendapp/list/keyboard';
|
|
7
7
|
import { KContainer, KColors, KSpacingValue, KLabel } from '@droppii/libs';
|
|
@@ -18,9 +18,18 @@ import { ChatEvent } from "../../types/events.js";
|
|
|
18
18
|
import { useMessageStore } from "../../store/message.js";
|
|
19
19
|
import { useChatContext } from "../../context/index.js";
|
|
20
20
|
import { messageStyles } from "./legend/messageTypes.js";
|
|
21
|
+
import { MessageType } from '@droppii/openim-rn-client-sdk';
|
|
21
22
|
import { useUserStore } from "../../store/index.js";
|
|
22
23
|
import { ChatMessageAPI } from "../../services/index.js";
|
|
24
|
+
import { resolveImageDisplayDims } from "../../components/messages/imageMessage/index.js";
|
|
25
|
+
import { STICKER_SIZE } from "../../components/messages/stickerMessage/index.js";
|
|
26
|
+
import ChatImageDimens, { CHAT_IMAGE_VIEW_SOURCE } from "../../utils/chatImageDimens.js";
|
|
27
|
+
|
|
28
|
+
// Row wrapper (`messageRowLeft`/`messageRowRight` in `components/messages/styles.ts`)
|
|
29
|
+
// adds only a bottom margin — no vertical padding — so a fixed-size item's true
|
|
30
|
+
// rendered height is `content height + this margin`.
|
|
23
31
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
32
|
+
const ROW_MARGIN_BOTTOM = KSpacingValue['0.25rem'];
|
|
24
33
|
export const ChatListLegend = /*#__PURE__*/memo(({
|
|
25
34
|
messages = [],
|
|
26
35
|
conversationId,
|
|
@@ -40,6 +49,7 @@ export const ChatListLegend = /*#__PURE__*/memo(({
|
|
|
40
49
|
keyboardOffset
|
|
41
50
|
}) => {
|
|
42
51
|
const currentUserId = useUserStore(s => s.user?.userID);
|
|
52
|
+
const windowWidth = useWindowDimensions().width;
|
|
43
53
|
// Precompute all message data in single pass (O(n))
|
|
44
54
|
const messageDataMap = useMemo(() => precomputeLegendListData(messages), [messages]);
|
|
45
55
|
const {
|
|
@@ -62,29 +72,12 @@ export const ChatListLegend = /*#__PURE__*/memo(({
|
|
|
62
72
|
const buttonOpacity = useSharedValue(0);
|
|
63
73
|
const isAtBottomRef = useRef(true);
|
|
64
74
|
const scrollDebounceRef = useRef(undefined);
|
|
65
|
-
const itemHeightsRef = useRef(new Map());
|
|
66
|
-
const avgItemHeightRef = useRef(120);
|
|
67
|
-
const heightDebounceRef = useRef(undefined);
|
|
68
75
|
const rowRefsMap = useRef(new Map());
|
|
69
76
|
const [showBadge, setShowBadge] = useState(false);
|
|
70
77
|
const {
|
|
71
78
|
applicationType
|
|
72
79
|
} = useChatContext();
|
|
73
80
|
const searchMessages = useMessageStore(s => s.searchMessages);
|
|
74
|
-
const handleItemLayout = useCallback((messageId, height) => {
|
|
75
|
-
itemHeightsRef.current.set(messageId, height);
|
|
76
|
-
|
|
77
|
-
// Debounce average height calculation (batch updates)
|
|
78
|
-
if (heightDebounceRef.current) {
|
|
79
|
-
clearTimeout(heightDebounceRef.current);
|
|
80
|
-
}
|
|
81
|
-
heightDebounceRef.current = setTimeout(() => {
|
|
82
|
-
if (itemHeightsRef.current.size > 0) {
|
|
83
|
-
const total = Array.from(itemHeightsRef.current.values()).reduce((a, b) => a + b, 0);
|
|
84
|
-
avgItemHeightRef.current = Math.round(total / itemHeightsRef.current.size);
|
|
85
|
-
}
|
|
86
|
-
}, 100); // Batch updates every 100ms during load
|
|
87
|
-
}, []);
|
|
88
81
|
const handleMessageLongPress = useCallback((messageId, message) => {
|
|
89
82
|
const node = rowRefsMap.current.get(messageId);
|
|
90
83
|
node?.measureInWindow((x, y, width, height) => {
|
|
@@ -132,7 +125,6 @@ export const ChatListLegend = /*#__PURE__*/memo(({
|
|
|
132
125
|
if (node) rowRefsMap.current.set(messageId, node);else rowRefsMap.current.delete(messageId);
|
|
133
126
|
},
|
|
134
127
|
style: isOutgoing ? messageStyles.messageRowRight : messageStyles.messageRowLeft,
|
|
135
|
-
onLayout: e => handleItemLayout(messageId, e.nativeEvent.layout.height),
|
|
136
128
|
children: [/*#__PURE__*/_jsx(LegendChatMessage, {
|
|
137
129
|
message: message,
|
|
138
130
|
isOutgoing: isOutgoing,
|
|
@@ -159,17 +151,21 @@ export const ChatListLegend = /*#__PURE__*/memo(({
|
|
|
159
151
|
})
|
|
160
152
|
});
|
|
161
153
|
}
|
|
162
|
-
}, [currentUserId, lastMessageId, messageDataMap, isBotConversation, onMediaPress, onPressUrl, onLongPress, handleMessageLongPress, customMessageItemFactory, onResetFlow, onRunFlow, conversationFlow?.flowCurrentStep,
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
154
|
+
}, [currentUserId, lastMessageId, messageDataMap, isBotConversation, onMediaPress, onPressUrl, onLongPress, handleMessageLongPress, customMessageItemFactory, onResetFlow, onRunFlow, conversationFlow?.flowCurrentStep, retryMessage]);
|
|
155
|
+
|
|
156
|
+
// const maintainScrollConfig = useMemo(
|
|
157
|
+
// () => ({
|
|
158
|
+
// animated: false,
|
|
159
|
+
// on: {
|
|
160
|
+
// dataChange: !moreOldLoading,
|
|
161
|
+
// layout: !moreOldLoading,
|
|
162
|
+
// // Must be disabled while prepending older history; otherwise re-measuring
|
|
163
|
+
// // the freshly prepended items snaps the list back to the bottom.
|
|
164
|
+
// itemLayout: !moreOldLoading,
|
|
165
|
+
// },
|
|
166
|
+
// }),
|
|
167
|
+
// [moreOldLoading]
|
|
168
|
+
// );
|
|
173
169
|
|
|
174
170
|
// Stable config so the native maintainVisibleContentPosition prop isn't toggled
|
|
175
171
|
// mid-prepend (toggling forces an extra layout recompute). `data` anchoring keeps
|
|
@@ -177,6 +173,66 @@ export const ChatListLegend = /*#__PURE__*/memo(({
|
|
|
177
173
|
const maintainVisiblePositionConfig = useMemo(() => ({
|
|
178
174
|
data: true
|
|
179
175
|
}), []);
|
|
176
|
+
|
|
177
|
+
// Buckets averaging (`averageSizes[itemType]`, internal to LegendList) per
|
|
178
|
+
// content type, so a batch of images landing early doesn't pollute the
|
|
179
|
+
// estimate used for still-unmeasured text rows and vice versa. Items
|
|
180
|
+
// rendered via `customMessageItemFactory` (host apps can override ANY
|
|
181
|
+
// content type with an arbitrary custom node — see `LegendChatMessage`'s
|
|
182
|
+
// `customNode` short-circuit, checked before its own contentType switch)
|
|
183
|
+
// get their own bucket per content type, so a custom node's real measured
|
|
184
|
+
// height never pollutes the native component's average for that same type.
|
|
185
|
+
const getItemType = useCallback(item => {
|
|
186
|
+
const isCustom = !!customMessageItemFactory?.(item);
|
|
187
|
+
return `${item?.contentType ?? 'default'}${isCustom ? '-custom' : ''}`;
|
|
188
|
+
}, [customMessageItemFactory]);
|
|
189
|
+
|
|
190
|
+
// Exact size for content types that are knowable ahead of render — see
|
|
191
|
+
// `plans/260728-1400-chatlist-legend-fixed-item-size/plan.md`. Returns
|
|
192
|
+
// `undefined` (defer to dynamic measurement) for anything whose size can't
|
|
193
|
+
// be predicted, AND for any item carrying extra chrome this function
|
|
194
|
+
// doesn't account for (day-divider above it, trailing flow-input-buttons
|
|
195
|
+
// row) — `getFixedItemSize` describes the ENTIRE item LegendList renders,
|
|
196
|
+
// and once it resolves a number that item is never measured again, so
|
|
197
|
+
// guessing wrong here is a permanent regression, not just an approximation.
|
|
198
|
+
const getFixedItemSize = useCallback((item, index) => {
|
|
199
|
+
const message = item;
|
|
200
|
+
const messageId = message.clientMsgID || message.serverMsgID || `temp-${message.sendTime || message.createTime}-${index}`;
|
|
201
|
+
if (messageDataMap.get(messageId)?.dayStart) return undefined;
|
|
202
|
+
|
|
203
|
+
// Resolve the content-type candidate FIRST — for every type other
|
|
204
|
+
// than these three the result is `undefined` regardless of anything
|
|
205
|
+
// else, so bail before paying for a `customMessageItemFactory` call
|
|
206
|
+
// (text/quote/link/file/merge/revoke are the overwhelming majority of
|
|
207
|
+
// messages in a real chat — skip the extra call for all of them).
|
|
208
|
+
let candidateSize;
|
|
209
|
+
switch (message.contentType) {
|
|
210
|
+
case MessageType.PictureMessage:
|
|
211
|
+
candidateSize = resolveImageDisplayDims(message, windowWidth).height + ROW_MARGIN_BOTTOM;
|
|
212
|
+
break;
|
|
213
|
+
case MessageType.VideoMessage:
|
|
214
|
+
candidateSize = ChatImageDimens.getDimensions(CHAT_IMAGE_VIEW_SOURCE.MessageListThumbnail).height + ROW_MARGIN_BOTTOM;
|
|
215
|
+
break;
|
|
216
|
+
case MessageType.StickerMessage:
|
|
217
|
+
candidateSize = STICKER_SIZE + ROW_MARGIN_BOTTOM;
|
|
218
|
+
break;
|
|
219
|
+
default:
|
|
220
|
+
return undefined;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// `customMessageItemFactory` can override rendering for ANY content
|
|
224
|
+
// type with an arbitrary node (`LegendChatMessage` checks it first,
|
|
225
|
+
// before its own contentType switch) — its real height is unknowable
|
|
226
|
+
// here, so defer to dynamic measurement when it intercepts. Only
|
|
227
|
+
// checked once we know this item would otherwise be fixed-sizeable.
|
|
228
|
+
if (customMessageItemFactory?.(message)) return undefined;
|
|
229
|
+
const isOutgoing = message.sendID === currentUserId;
|
|
230
|
+
const isLastIncoming = !isOutgoing && messageId === lastMessageId;
|
|
231
|
+
if (isLastIncoming && isBotConversation && getFlowInputButtonsNode(conversationFlow?.flowCurrentStep)) {
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
return candidateSize;
|
|
235
|
+
}, [messageDataMap, customMessageItemFactory, currentUserId, lastMessageId, isBotConversation, conversationFlow?.flowCurrentStep, windowWidth]);
|
|
180
236
|
const handleStartReached = useCallback(() => {
|
|
181
237
|
if (__DEV__) {
|
|
182
238
|
console.log('[LegendList] onStartReached triggered', {
|
|
@@ -238,15 +294,12 @@ export const ChatListLegend = /*#__PURE__*/memo(({
|
|
|
238
294
|
pointerEvents: buttonOpacity.value === 0 ? 'none' : 'auto'
|
|
239
295
|
}));
|
|
240
296
|
|
|
241
|
-
// Cleanup debounce
|
|
297
|
+
// Cleanup debounce timeout on unmount
|
|
242
298
|
useEffect(() => {
|
|
243
299
|
return () => {
|
|
244
300
|
if (scrollDebounceRef.current) {
|
|
245
301
|
clearTimeout(scrollDebounceRef.current);
|
|
246
302
|
}
|
|
247
|
-
if (heightDebounceRef.current) {
|
|
248
|
-
clearTimeout(heightDebounceRef.current);
|
|
249
|
-
}
|
|
250
303
|
};
|
|
251
304
|
}, []);
|
|
252
305
|
useEffect(() => {
|
|
@@ -303,13 +356,15 @@ export const ChatListLegend = /*#__PURE__*/memo(({
|
|
|
303
356
|
ref: listRef,
|
|
304
357
|
data: messages,
|
|
305
358
|
renderItem: renderItem,
|
|
306
|
-
estimatedItemSize:
|
|
359
|
+
estimatedItemSize: 100,
|
|
360
|
+
getItemType: getItemType,
|
|
361
|
+
getFixedItemSize: getFixedItemSize,
|
|
307
362
|
keyExtractor: item => String(item.clientMsgID || item.serverMsgID),
|
|
308
363
|
recycleItems: false,
|
|
309
364
|
extraData: `${conversationFlow?.flowCurrentStep?.id ?? ''}-${lastMessageId ?? ''}`,
|
|
310
365
|
alignItemsAtEnd: true,
|
|
311
366
|
maintainVisibleContentPosition: maintainVisiblePositionConfig,
|
|
312
|
-
maintainScrollAtEnd:
|
|
367
|
+
maintainScrollAtEnd: true,
|
|
313
368
|
freeze: freeze,
|
|
314
369
|
keyboardOffset: keyboardOffset,
|
|
315
370
|
scrollEventThrottle: 16,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","useCallback","useMemo","useEffect","useRef","useState","DeviceEventEmitter","StyleSheet","Animated","useSharedValue","useAnimatedStyle","withSpring","KeyboardAwareLegendList","KContainer","KColors","KSpacingValue","KLabel","precomputeLegendListData","LegendChatMessage","LegendChatDay","LegendChatLoadEarlier","useChatDetailContext","getFlowInputButtonsNode","InputButtonFlow","useResetFlow","useRunFlow","useSendMessage","ChatEvent","useMessageStore","useChatContext","messageStyles","useUserStore","ChatMessageAPI","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ChatListLegend","messages","conversationId","customMessageItemFactory","onLoadMoreOld","moreOldLoading","hasMoreOld","onLoadMoreNew","moreNewLoading","hasMoreNew","onMediaPress","onPressUrl","onLongPress","listRef","freeze","scrollMessageToEnd","keyboardOffset","currentUserId","s","user","userID","messageDataMap","isBotConversation","conversationFlow","retryMessage","lastMessageId","last","length","clientMsgID","serverMsgID","mutate","runFlow","resetFlow","buttonOpacity","isAtBottomRef","scrollDebounceRef","undefined","itemHeightsRef","Map","avgItemHeightRef","heightDebounceRef","rowRefsMap","showBadge","setShowBadge","applicationType","searchMessages","handleItemLayout","messageId","height","current","set","clearTimeout","setTimeout","size","total","Array","from","values","reduce","a","b","Math","round","handleMessageLongPress","message","node","get","measureInWindow","x","y","width","onRunFlow","payload","onResetFlow","renderItem","item","index","isOutgoing","sendID","isLastIncoming","sendTime","createTime","messageData","dayStart","createdAt","flowInputButtonsNode","flowCurrentStep","children","View","ref","delete","style","messageRowRight","messageRowLeft","onLayout","e","nativeEvent","layout","createdAtTime","onRetry","nodeData","error","__DEV__","console","styles","errorRow","Text","typo","maintainScrollConfig","animated","on","dataChange","itemLayout","maintainVisiblePositionConfig","data","handleStartReached","log","willLoad","handleEndReached","handleScroll","contentOffset","contentSize","layoutMeasurement","isAtBottom","value","duration","markConversationAsRead","handleScrollToBottom","closeKeyboard","animatedButtonStyle","opacity","pointerEvents","bottomSubscription","addListener","ScrollToBottom","subscription","ScrollToMessage","clientMessageId","findIndex","m","scrollToIndex","viewPosition","startClientMsgId","remove","flex","background","white","container","estimatedItemSize","keyExtractor","String","recycleItems","extraData","id","alignItemsAtEnd","maintainVisibleContentPosition","maintainScrollAtEnd","scrollEventThrottle","onScroll","contentContainerStyle","content","scrollIndicatorInsets","right","ListHeaderComponent","isLoading","onStartReached","onStartReachedThreshold","onEndReached","onEndReachedThreshold","showsVerticalScrollIndicator","initialScrollAtEnd","scrollToBottomButton","Touchable","onPress","activeOpacity","buttonInner","accessible","accessibilityLabel","accessibilityRole","scrollToBottomText","badge","displayName","create","position","paddingVertical","flexGrow","bottom","zIndex","borderRadius","backgroundColor","justifyContent","alignItems","shadowColor","black","shadowOffset","shadowOpacity","shadowRadius","elevation","fontSize","fontWeight","color","palette","primary","w400","padding","top","borderWidth","borderColor"],"sourceRoot":"../../../../src","sources":["screens/chat-detail/ChatListLegend.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useMemo","useEffect","useRef","useState","DeviceEventEmitter","StyleSheet","useWindowDimensions","Animated","useSharedValue","useAnimatedStyle","withSpring","KeyboardAwareLegendList","KContainer","KColors","KSpacingValue","KLabel","precomputeLegendListData","LegendChatMessage","LegendChatDay","LegendChatLoadEarlier","useChatDetailContext","getFlowInputButtonsNode","InputButtonFlow","useResetFlow","useRunFlow","useSendMessage","ChatEvent","useMessageStore","useChatContext","messageStyles","MessageType","useUserStore","ChatMessageAPI","resolveImageDisplayDims","STICKER_SIZE","ChatImageDimens","CHAT_IMAGE_VIEW_SOURCE","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ROW_MARGIN_BOTTOM","ChatListLegend","messages","conversationId","customMessageItemFactory","onLoadMoreOld","moreOldLoading","hasMoreOld","onLoadMoreNew","moreNewLoading","hasMoreNew","onMediaPress","onPressUrl","onLongPress","listRef","freeze","scrollMessageToEnd","keyboardOffset","currentUserId","s","user","userID","windowWidth","width","messageDataMap","isBotConversation","conversationFlow","retryMessage","lastMessageId","last","length","clientMsgID","serverMsgID","mutate","runFlow","resetFlow","buttonOpacity","isAtBottomRef","scrollDebounceRef","undefined","rowRefsMap","Map","showBadge","setShowBadge","applicationType","searchMessages","handleMessageLongPress","messageId","message","node","current","get","measureInWindow","x","y","height","onRunFlow","payload","onResetFlow","renderItem","item","index","isOutgoing","sendID","isLastIncoming","sendTime","createTime","messageData","dayStart","createdAt","flowInputButtonsNode","flowCurrentStep","children","View","ref","set","delete","style","messageRowRight","messageRowLeft","createdAtTime","onRetry","nodeData","error","__DEV__","console","styles","errorRow","Text","typo","maintainVisiblePositionConfig","data","getItemType","isCustom","contentType","getFixedItemSize","candidateSize","PictureMessage","VideoMessage","getDimensions","MessageListThumbnail","StickerMessage","handleStartReached","log","willLoad","handleEndReached","handleScroll","e","contentOffset","contentSize","layoutMeasurement","nativeEvent","isAtBottom","clearTimeout","setTimeout","value","duration","markConversationAsRead","handleScrollToBottom","animated","closeKeyboard","animatedButtonStyle","opacity","pointerEvents","bottomSubscription","addListener","ScrollToBottom","subscription","ScrollToMessage","clientMessageId","findIndex","m","scrollToIndex","viewPosition","startClientMsgId","remove","flex","background","white","container","estimatedItemSize","keyExtractor","String","recycleItems","extraData","id","alignItemsAtEnd","maintainVisibleContentPosition","maintainScrollAtEnd","scrollEventThrottle","onScroll","contentContainerStyle","content","scrollIndicatorInsets","right","ListHeaderComponent","isLoading","onStartReached","onStartReachedThreshold","onEndReached","onEndReachedThreshold","showsVerticalScrollIndicator","initialScrollAtEnd","scrollToBottomButton","Touchable","onPress","activeOpacity","buttonInner","accessible","accessibilityLabel","accessibilityRole","scrollToBottomText","badge","displayName","create","position","paddingVertical","flexGrow","bottom","zIndex","borderRadius","backgroundColor","justifyContent","alignItems","shadowColor","black","shadowOffset","shadowOpacity","shadowRadius","elevation","fontSize","fontWeight","color","palette","primary","w400","padding","top","borderWidth","borderColor"],"sourceRoot":"../../../../src","sources":["screens/chat-detail/ChatListLegend.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
1
|
import type { BaseLegendMessageProps } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Single source of truth for "what size will `ImageMessage` render this
|
|
4
|
+
* message at" — used both by the component itself and by
|
|
5
|
+
* `ChatListLegend`'s `getFixedItemSize` (must predict the exact same size the
|
|
6
|
+
* component ends up rendering, or the list permanently reserves the wrong
|
|
7
|
+
* height for it). Mirrors the component's own metaWidth/metaHeight → cache →
|
|
8
|
+
* `DEFAULT_DIMS` fallback chain exactly.
|
|
9
|
+
*/
|
|
10
|
+
export declare const resolveImageDisplayDims: (message: unknown, windowWidth: number) => {
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
};
|
|
2
14
|
export declare const ImageMessage: import("react").MemoExoticComponent<({ message, onMediaPress }: BaseLegendMessageProps) => import("react").JSX.Element>;
|
|
3
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/messages/imageMessage/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAgCvD,eAAO,MAAM,YAAY,kEACK,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/messages/imageMessage/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAgCvD;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,OAAO,EAChB,aAAa,MAAM,KAClB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAuBjC,CAAC;AAEF,eAAO,MAAM,YAAY,kEACK,sBAAsB,iCAkFnD,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { BaseLegendMessageProps } from '../types';
|
|
2
|
+
export declare const STICKER_SIZE = 120;
|
|
2
3
|
export declare const StickerMessage: import("react").MemoExoticComponent<({ message }: BaseLegendMessageProps) => import("react").JSX.Element>;
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/messages/stickerMessage/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/messages/stickerMessage/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAIvD,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,cAAc,oDAAsB,sBAAsB,iCAUrE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoPlayer.d.ts","sourceRoot":"","sources":["../../../../../src/screens/MediaView/VideoPlayer.tsx"],"names":[],"mappings":"AAUA,OAAc,EAA0B,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAK/E,UAAU,KAAK;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAUD,QAAA,MAAM,WAAW,8CAAgB,KAAK,
|
|
1
|
+
{"version":3,"file":"VideoPlayer.d.ts","sourceRoot":"","sources":["../../../../../src/screens/MediaView/VideoPlayer.tsx"],"names":[],"mappings":"AAUA,OAAc,EAA0B,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAK/E,UAAU,KAAK;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAUD,QAAA,MAAM,WAAW,8CAAgB,KAAK,iCA0JpC,CAAC;AAGH,eAAe,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/screens/MediaView/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/screens/MediaView/index.tsx"],"names":[],"mappings":"AA2CA,UAAU,iBAAiB;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,QAAA,MAAM,iBAAiB,GAAI,OAAO,iBAAiB,gCAsPlD,CAAC;AAIF,eAAe,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatListLegend.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatListLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatListLegend.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatListLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAOf,OAAiB,EAIf,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA6B7C,UAAU,2BAA4B,SAAQ,aAAa;IACzD,OAAO,EAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACzC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,kBAAkB,EAAE,CAAC,IAAI,EAAE;QACzB,QAAQ,EAAE,OAAO,CAAC;QAClB,aAAa,EAAE,OAAO,CAAC;KACxB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,cAAc,kRAkBtB,2BAA2B,iCA0b/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -35,6 +35,42 @@ const calcDisplayDims = (
|
|
|
35
35
|
return { width: Math.round(finalWidth), height: Math.round(finalHeight) };
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Single source of truth for "what size will `ImageMessage` render this
|
|
40
|
+
* message at" — used both by the component itself and by
|
|
41
|
+
* `ChatListLegend`'s `getFixedItemSize` (must predict the exact same size the
|
|
42
|
+
* component ends up rendering, or the list permanently reserves the wrong
|
|
43
|
+
* height for it). Mirrors the component's own metaWidth/metaHeight → cache →
|
|
44
|
+
* `DEFAULT_DIMS` fallback chain exactly.
|
|
45
|
+
*/
|
|
46
|
+
export const resolveImageDisplayDims = (
|
|
47
|
+
message: unknown,
|
|
48
|
+
windowWidth: number
|
|
49
|
+
): { width: number; height: number } => {
|
|
50
|
+
const pictureElem = (message as any)?.pictureElem;
|
|
51
|
+
const rawImageUrl =
|
|
52
|
+
pictureElem?.snapshotPicture?.url ||
|
|
53
|
+
pictureElem?.bigPicture?.url ||
|
|
54
|
+
pictureElem?.sourcePicture?.url;
|
|
55
|
+
if (!rawImageUrl) return DEFAULT_DIMS;
|
|
56
|
+
|
|
57
|
+
const metaWidth =
|
|
58
|
+
pictureElem?.bigPicture?.width ||
|
|
59
|
+
pictureElem?.snapshotPicture?.width ||
|
|
60
|
+
pictureElem?.width;
|
|
61
|
+
const metaHeight =
|
|
62
|
+
pictureElem?.bigPicture?.height ||
|
|
63
|
+
pictureElem?.snapshotPicture?.height ||
|
|
64
|
+
pictureElem?.height;
|
|
65
|
+
|
|
66
|
+
const cachedDims = dimsCache.get(rawImageUrl);
|
|
67
|
+
const srcWidth = metaWidth || cachedDims?.width;
|
|
68
|
+
const srcHeight = metaHeight || cachedDims?.height;
|
|
69
|
+
if (!srcWidth || !srcHeight) return DEFAULT_DIMS;
|
|
70
|
+
|
|
71
|
+
return calcDisplayDims(srcWidth, srcHeight, windowWidth);
|
|
72
|
+
};
|
|
73
|
+
|
|
38
74
|
export const ImageMessage = memo(
|
|
39
75
|
({ message, onMediaPress }: BaseLegendMessageProps) => {
|
|
40
76
|
const windowWidth = useWindowDimensions().width;
|
|
@@ -54,22 +90,16 @@ export const ImageMessage = memo(
|
|
|
54
90
|
pictureElem?.snapshotPicture?.height ||
|
|
55
91
|
pictureElem?.height;
|
|
56
92
|
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (!rawImageUrl) return DEFAULT_DIMS;
|
|
68
|
-
const srcWidth = metaWidth || loadedDims?.width;
|
|
69
|
-
const srcHeight = metaHeight || loadedDims?.height;
|
|
70
|
-
if (!srcWidth || !srcHeight) return DEFAULT_DIMS;
|
|
71
|
-
return calcDisplayDims(srcWidth, srcHeight, windowWidth);
|
|
72
|
-
}, [metaWidth, metaHeight, loadedDims, rawImageUrl, windowWidth]);
|
|
93
|
+
// Bumped after `onLoad` caches real dims — `resolveImageDisplayDims` reads
|
|
94
|
+
// the shared module-level cache fresh each call, so this state's only job
|
|
95
|
+
// is to force `imageDimensions` to recompute once that cache is populated.
|
|
96
|
+
const [loadDimsVersion, setLoadDimsVersion] = useState(0);
|
|
97
|
+
|
|
98
|
+
const imageDimensions = useMemo(
|
|
99
|
+
() => resolveImageDisplayDims(message, windowWidth),
|
|
100
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
101
|
+
[message, windowWidth, loadDimsVersion]
|
|
102
|
+
);
|
|
73
103
|
|
|
74
104
|
const handleLoad = useCallback(
|
|
75
105
|
(e: any) => {
|
|
@@ -77,9 +107,8 @@ export const ImageMessage = memo(
|
|
|
77
107
|
if (!metaWidth || !metaHeight) {
|
|
78
108
|
const { width, height } = e?.nativeEvent ?? {};
|
|
79
109
|
if (width && height) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
setLoadedDims(dims);
|
|
110
|
+
if (rawImageUrl) cacheDims(rawImageUrl, { width, height });
|
|
111
|
+
setLoadDimsVersion((v) => v + 1);
|
|
83
112
|
}
|
|
84
113
|
}
|
|
85
114
|
},
|
|
@@ -3,7 +3,7 @@ import type { BaseLegendMessageProps } from '../types';
|
|
|
3
3
|
import { KContainer, KImage } from '@droppii/libs';
|
|
4
4
|
import { StyleSheet } from 'react-native';
|
|
5
5
|
|
|
6
|
-
const STICKER_SIZE = 120;
|
|
6
|
+
export const STICKER_SIZE = 120;
|
|
7
7
|
export const StickerMessage = memo(({ message }: BaseLegendMessageProps) => {
|
|
8
8
|
return (
|
|
9
9
|
<KContainer.View style={styles.message}>
|
|
@@ -36,7 +36,7 @@ const VideoPlayer = memo((props: Props) => {
|
|
|
36
36
|
onPress,
|
|
37
37
|
resizeMode = ResizeMode.CONTAIN,
|
|
38
38
|
showCustomControls = false,
|
|
39
|
-
|
|
39
|
+
isActive,
|
|
40
40
|
height,
|
|
41
41
|
} = props;
|
|
42
42
|
|
|
@@ -75,6 +75,17 @@ const VideoPlayer = memo((props: Props) => {
|
|
|
75
75
|
}
|
|
76
76
|
}, [paused, resumeVideo, pauseVideo, onPress]);
|
|
77
77
|
|
|
78
|
+
// `isActive` (this is the currently-viewed page in the pager) drives
|
|
79
|
+
// play/pause directly — becoming active resumes, becoming inactive pauses.
|
|
80
|
+
// `repeat` on `<Video>` handles looping natively while playing.
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
if (isActive) {
|
|
83
|
+
resumeVideo();
|
|
84
|
+
} else {
|
|
85
|
+
pauseVideo();
|
|
86
|
+
}
|
|
87
|
+
}, [isActive, resumeVideo, pauseVideo]);
|
|
88
|
+
|
|
78
89
|
/** GESTURE (worklet -> runOnJS) */
|
|
79
90
|
const singleTap = useMemo(
|
|
80
91
|
() =>
|
|
@@ -155,8 +166,8 @@ const VideoPlayer = memo((props: Props) => {
|
|
|
155
166
|
style={styles.video}
|
|
156
167
|
muted={muted}
|
|
157
168
|
paused={paused}
|
|
158
|
-
resizeMode={resizeMode}
|
|
159
169
|
repeat
|
|
170
|
+
resizeMode={resizeMode}
|
|
160
171
|
controls={!showCustomControls}
|
|
161
172
|
ignoreSilentSwitch={IgnoreSilentSwitchType.IGNORE}
|
|
162
173
|
/>
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
StyleSheet,
|
|
8
8
|
type ViewToken,
|
|
9
9
|
StatusBar,
|
|
10
|
+
useWindowDimensions,
|
|
10
11
|
} from 'react-native';
|
|
11
12
|
import {
|
|
12
13
|
LegendList,
|
|
@@ -54,8 +55,7 @@ const MediaViewerScreen = (props: MediaViewerParams) => {
|
|
|
54
55
|
images = [],
|
|
55
56
|
initIndex = 0,
|
|
56
57
|
download,
|
|
57
|
-
pagination,
|
|
58
|
-
|
|
58
|
+
pagination = false,
|
|
59
59
|
onDismiss,
|
|
60
60
|
} = props;
|
|
61
61
|
|
|
@@ -65,6 +65,8 @@ const MediaViewerScreen = (props: MediaViewerParams) => {
|
|
|
65
65
|
const [isScrolling, setIsScrolling] = useState(false);
|
|
66
66
|
const [isDownloading, setIsDownloading] = useState(false);
|
|
67
67
|
|
|
68
|
+
const { height } = useWindowDimensions();
|
|
69
|
+
|
|
68
70
|
const dismiss = useCallback(() => {
|
|
69
71
|
onDismiss?.();
|
|
70
72
|
}, [onDismiss]);
|
|
@@ -124,13 +126,14 @@ const MediaViewerScreen = (props: MediaViewerParams) => {
|
|
|
124
126
|
}, []);
|
|
125
127
|
|
|
126
128
|
useEffect(() => {
|
|
129
|
+
let sub = null;
|
|
127
130
|
if (Platform.OS === 'android') {
|
|
128
|
-
|
|
131
|
+
sub = BackHandler.addEventListener('hardwareBackPress', () => {
|
|
129
132
|
dismiss();
|
|
130
133
|
return true;
|
|
131
134
|
});
|
|
132
|
-
return () => sub.remove();
|
|
133
135
|
}
|
|
136
|
+
return () => sub?.remove();
|
|
134
137
|
}, [dismiss]);
|
|
135
138
|
|
|
136
139
|
const onMomentumScrollBegin = useCallback(() => setIsScrolling(true), []);
|
|
@@ -143,7 +146,7 @@ const MediaViewerScreen = (props: MediaViewerParams) => {
|
|
|
143
146
|
}
|
|
144
147
|
).current;
|
|
145
148
|
|
|
146
|
-
const keyEx = useCallback((item: any, i: number) => `${item
|
|
149
|
+
const keyEx = useCallback((item: any, i: number) => `${item?.url}-${i}`, []);
|
|
147
150
|
|
|
148
151
|
const renderItem = useCallback(
|
|
149
152
|
({ item, index: itemIndex }: LegendListRenderItemProps<any>) => (
|
|
@@ -153,6 +156,7 @@ const MediaViewerScreen = (props: MediaViewerParams) => {
|
|
|
153
156
|
url={item?.url || ''}
|
|
154
157
|
isActive={itemIndex === index && !isScrolling}
|
|
155
158
|
showCustomControls={false}
|
|
159
|
+
height={height}
|
|
156
160
|
/>
|
|
157
161
|
</KContainer.VisibleView>
|
|
158
162
|
<KContainer.VisibleView visible={!item.isVideo}>
|
|
@@ -167,12 +171,15 @@ const MediaViewerScreen = (props: MediaViewerParams) => {
|
|
|
167
171
|
</KContainer.VisibleView>
|
|
168
172
|
</KContainer.Touchable>
|
|
169
173
|
),
|
|
170
|
-
[index, isScrolling]
|
|
174
|
+
[index, isScrolling, height]
|
|
171
175
|
);
|
|
172
176
|
|
|
173
177
|
const renderFooter = useMemo(() => {
|
|
174
178
|
// `pagination` only toggles the dot indicator (noisy on large sets like
|
|
175
179
|
// Resource Center grids) — the current-index counter should always show.
|
|
180
|
+
// Defaults to HIDDEN — callers must explicitly pass `pagination` to show
|
|
181
|
+
// dots (was inverted: it used to default to visible, hidden only via
|
|
182
|
+
// `pagination={false}`).
|
|
176
183
|
if (images.length <= 1) return null;
|
|
177
184
|
return (
|
|
178
185
|
<KContainer.View
|
|
@@ -193,7 +200,7 @@ const MediaViewerScreen = (props: MediaViewerParams) => {
|
|
|
193
200
|
>
|
|
194
201
|
{index + 1}/{images.length}
|
|
195
202
|
</KLabel.Text>
|
|
196
|
-
<KContainer.VisibleView visible={pagination
|
|
203
|
+
<KContainer.VisibleView visible={pagination === true}>
|
|
197
204
|
<Pagination
|
|
198
205
|
dotContainerStyle={styles.dotContainerStyle}
|
|
199
206
|
dotStyle={styles.dot}
|
|
@@ -282,6 +289,7 @@ const MediaViewerScreen = (props: MediaViewerParams) => {
|
|
|
282
289
|
onMomentumScrollBegin={onMomentumScrollBegin}
|
|
283
290
|
onMomentumScrollEnd={onMomentumScrollEnd}
|
|
284
291
|
style={styles.flex}
|
|
292
|
+
extraData={[index, isScrolling]}
|
|
285
293
|
/>
|
|
286
294
|
|
|
287
295
|
{renderFooter}
|
|
@@ -7,7 +7,12 @@ import {
|
|
|
7
7
|
useState,
|
|
8
8
|
type RefObject,
|
|
9
9
|
} from 'react';
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
DeviceEventEmitter,
|
|
12
|
+
StyleSheet,
|
|
13
|
+
useWindowDimensions,
|
|
14
|
+
type View,
|
|
15
|
+
} from 'react-native';
|
|
11
16
|
import Animated, {
|
|
12
17
|
useSharedValue,
|
|
13
18
|
useAnimatedStyle,
|
|
@@ -32,9 +37,20 @@ import { ChatEvent, type ScrollToMessagePayload } from '../../types/events';
|
|
|
32
37
|
import { useMessageStore } from '../../store/message';
|
|
33
38
|
import { useChatContext } from '../../context';
|
|
34
39
|
import { messageStyles } from './legend/messageTypes';
|
|
40
|
+
import { MessageType } from '@droppii/openim-rn-client-sdk';
|
|
35
41
|
import type { MessageItem } from '@droppii/openim-rn-client-sdk';
|
|
36
42
|
import { useUserStore } from '../../store';
|
|
37
43
|
import { ChatMessageAPI } from '../../services';
|
|
44
|
+
import { resolveImageDisplayDims } from '../../components/messages/imageMessage';
|
|
45
|
+
import { STICKER_SIZE } from '../../components/messages/stickerMessage';
|
|
46
|
+
import ChatImageDimens, {
|
|
47
|
+
CHAT_IMAGE_VIEW_SOURCE,
|
|
48
|
+
} from '../../utils/chatImageDimens';
|
|
49
|
+
|
|
50
|
+
// Row wrapper (`messageRowLeft`/`messageRowRight` in `components/messages/styles.ts`)
|
|
51
|
+
// adds only a bottom margin — no vertical padding — so a fixed-size item's true
|
|
52
|
+
// rendered height is `content height + this margin`.
|
|
53
|
+
const ROW_MARGIN_BOTTOM = KSpacingValue['0.25rem'];
|
|
38
54
|
|
|
39
55
|
interface ChatListLegendInternalProps extends ChatListProps {
|
|
40
56
|
listRef: RefObject<LegendListRef | null>;
|
|
@@ -66,6 +82,7 @@ export const ChatListLegend = memo(
|
|
|
66
82
|
keyboardOffset,
|
|
67
83
|
}: ChatListLegendInternalProps) => {
|
|
68
84
|
const currentUserId = useUserStore((s) => s.user?.userID);
|
|
85
|
+
const windowWidth = useWindowDimensions().width;
|
|
69
86
|
// Precompute all message data in single pass (O(n))
|
|
70
87
|
const messageDataMap = useMemo(
|
|
71
88
|
() => precomputeLegendListData(messages),
|
|
@@ -85,39 +102,12 @@ export const ChatListLegend = memo(
|
|
|
85
102
|
const buttonOpacity = useSharedValue(0);
|
|
86
103
|
const isAtBottomRef = useRef(true);
|
|
87
104
|
const scrollDebounceRef = useRef<NodeJS.Timeout | undefined>(undefined);
|
|
88
|
-
const itemHeightsRef = useRef<Map<string, number>>(new Map());
|
|
89
|
-
const avgItemHeightRef = useRef(120);
|
|
90
|
-
const heightDebounceRef = useRef<NodeJS.Timeout | undefined>(undefined);
|
|
91
105
|
const rowRefsMap = useRef<Map<string, View | null>>(new Map());
|
|
92
106
|
const [showBadge, setShowBadge] = useState(false);
|
|
93
107
|
|
|
94
108
|
const { applicationType } = useChatContext();
|
|
95
109
|
const searchMessages = useMessageStore((s) => s.searchMessages);
|
|
96
110
|
|
|
97
|
-
const handleItemLayout = useCallback(
|
|
98
|
-
(messageId: string, height: number) => {
|
|
99
|
-
itemHeightsRef.current.set(messageId, height);
|
|
100
|
-
|
|
101
|
-
// Debounce average height calculation (batch updates)
|
|
102
|
-
if (heightDebounceRef.current) {
|
|
103
|
-
clearTimeout(heightDebounceRef.current);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
heightDebounceRef.current = setTimeout(() => {
|
|
107
|
-
if (itemHeightsRef.current.size > 0) {
|
|
108
|
-
const total = Array.from(itemHeightsRef.current.values()).reduce(
|
|
109
|
-
(a, b) => a + b,
|
|
110
|
-
0
|
|
111
|
-
);
|
|
112
|
-
avgItemHeightRef.current = Math.round(
|
|
113
|
-
total / itemHeightsRef.current.size
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
}, 100); // Batch updates every 100ms during load
|
|
117
|
-
},
|
|
118
|
-
[]
|
|
119
|
-
);
|
|
120
|
-
|
|
121
111
|
const handleMessageLongPress = useCallback(
|
|
122
112
|
(messageId: string, message: MessageItem) => {
|
|
123
113
|
const node = rowRefsMap.current.get(messageId);
|
|
@@ -181,9 +171,6 @@ export const ChatListLegend = memo(
|
|
|
181
171
|
? messageStyles.messageRowRight
|
|
182
172
|
: messageStyles.messageRowLeft
|
|
183
173
|
}
|
|
184
|
-
onLayout={(e) =>
|
|
185
|
-
handleItemLayout(messageId, e.nativeEvent.layout.height)
|
|
186
|
-
}
|
|
187
174
|
>
|
|
188
175
|
<LegendChatMessage
|
|
189
176
|
message={message}
|
|
@@ -234,30 +221,118 @@ export const ChatListLegend = memo(
|
|
|
234
221
|
onResetFlow,
|
|
235
222
|
onRunFlow,
|
|
236
223
|
conversationFlow?.flowCurrentStep,
|
|
237
|
-
handleItemLayout,
|
|
238
224
|
retryMessage,
|
|
239
225
|
]
|
|
240
226
|
);
|
|
241
227
|
|
|
242
|
-
const maintainScrollConfig = useMemo(
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
);
|
|
228
|
+
// const maintainScrollConfig = useMemo(
|
|
229
|
+
// () => ({
|
|
230
|
+
// animated: false,
|
|
231
|
+
// on: {
|
|
232
|
+
// dataChange: !moreOldLoading,
|
|
233
|
+
// layout: !moreOldLoading,
|
|
234
|
+
// // Must be disabled while prepending older history; otherwise re-measuring
|
|
235
|
+
// // the freshly prepended items snaps the list back to the bottom.
|
|
236
|
+
// itemLayout: !moreOldLoading,
|
|
237
|
+
// },
|
|
238
|
+
// }),
|
|
239
|
+
// [moreOldLoading]
|
|
240
|
+
// );
|
|
255
241
|
|
|
256
242
|
// Stable config so the native maintainVisibleContentPosition prop isn't toggled
|
|
257
243
|
// mid-prepend (toggling forces an extra layout recompute). `data` anchoring keeps
|
|
258
244
|
// the viewport pinned to the item being read when older messages are added on top.
|
|
259
245
|
const maintainVisiblePositionConfig = useMemo(() => ({ data: true }), []);
|
|
260
246
|
|
|
247
|
+
// Buckets averaging (`averageSizes[itemType]`, internal to LegendList) per
|
|
248
|
+
// content type, so a batch of images landing early doesn't pollute the
|
|
249
|
+
// estimate used for still-unmeasured text rows and vice versa. Items
|
|
250
|
+
// rendered via `customMessageItemFactory` (host apps can override ANY
|
|
251
|
+
// content type with an arbitrary custom node — see `LegendChatMessage`'s
|
|
252
|
+
// `customNode` short-circuit, checked before its own contentType switch)
|
|
253
|
+
// get their own bucket per content type, so a custom node's real measured
|
|
254
|
+
// height never pollutes the native component's average for that same type.
|
|
255
|
+
const getItemType = useCallback(
|
|
256
|
+
(item: MessageItem) => {
|
|
257
|
+
const isCustom = !!customMessageItemFactory?.(item);
|
|
258
|
+
return `${item?.contentType ?? 'default'}${isCustom ? '-custom' : ''}`;
|
|
259
|
+
},
|
|
260
|
+
[customMessageItemFactory]
|
|
261
|
+
);
|
|
262
|
+
|
|
263
|
+
// Exact size for content types that are knowable ahead of render — see
|
|
264
|
+
// `plans/260728-1400-chatlist-legend-fixed-item-size/plan.md`. Returns
|
|
265
|
+
// `undefined` (defer to dynamic measurement) for anything whose size can't
|
|
266
|
+
// be predicted, AND for any item carrying extra chrome this function
|
|
267
|
+
// doesn't account for (day-divider above it, trailing flow-input-buttons
|
|
268
|
+
// row) — `getFixedItemSize` describes the ENTIRE item LegendList renders,
|
|
269
|
+
// and once it resolves a number that item is never measured again, so
|
|
270
|
+
// guessing wrong here is a permanent regression, not just an approximation.
|
|
271
|
+
const getFixedItemSize = useCallback(
|
|
272
|
+
(item: MessageItem, index: number): number | undefined => {
|
|
273
|
+
const message = item;
|
|
274
|
+
const messageId =
|
|
275
|
+
message.clientMsgID ||
|
|
276
|
+
message.serverMsgID ||
|
|
277
|
+
`temp-${message.sendTime || message.createTime}-${index}`;
|
|
278
|
+
|
|
279
|
+
if (messageDataMap.get(messageId)?.dayStart) return undefined;
|
|
280
|
+
|
|
281
|
+
// Resolve the content-type candidate FIRST — for every type other
|
|
282
|
+
// than these three the result is `undefined` regardless of anything
|
|
283
|
+
// else, so bail before paying for a `customMessageItemFactory` call
|
|
284
|
+
// (text/quote/link/file/merge/revoke are the overwhelming majority of
|
|
285
|
+
// messages in a real chat — skip the extra call for all of them).
|
|
286
|
+
let candidateSize: number;
|
|
287
|
+
switch (message.contentType) {
|
|
288
|
+
case MessageType.PictureMessage:
|
|
289
|
+
candidateSize =
|
|
290
|
+
resolveImageDisplayDims(message, windowWidth).height +
|
|
291
|
+
ROW_MARGIN_BOTTOM;
|
|
292
|
+
break;
|
|
293
|
+
case MessageType.VideoMessage:
|
|
294
|
+
candidateSize =
|
|
295
|
+
ChatImageDimens.getDimensions(
|
|
296
|
+
CHAT_IMAGE_VIEW_SOURCE.MessageListThumbnail
|
|
297
|
+
).height + ROW_MARGIN_BOTTOM;
|
|
298
|
+
break;
|
|
299
|
+
case MessageType.StickerMessage:
|
|
300
|
+
candidateSize = STICKER_SIZE + ROW_MARGIN_BOTTOM;
|
|
301
|
+
break;
|
|
302
|
+
default:
|
|
303
|
+
return undefined;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// `customMessageItemFactory` can override rendering for ANY content
|
|
307
|
+
// type with an arbitrary node (`LegendChatMessage` checks it first,
|
|
308
|
+
// before its own contentType switch) — its real height is unknowable
|
|
309
|
+
// here, so defer to dynamic measurement when it intercepts. Only
|
|
310
|
+
// checked once we know this item would otherwise be fixed-sizeable.
|
|
311
|
+
if (customMessageItemFactory?.(message)) return undefined;
|
|
312
|
+
|
|
313
|
+
const isOutgoing = message.sendID === currentUserId;
|
|
314
|
+
const isLastIncoming = !isOutgoing && messageId === lastMessageId;
|
|
315
|
+
if (
|
|
316
|
+
isLastIncoming &&
|
|
317
|
+
isBotConversation &&
|
|
318
|
+
getFlowInputButtonsNode(conversationFlow?.flowCurrentStep)
|
|
319
|
+
) {
|
|
320
|
+
return undefined;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
return candidateSize;
|
|
324
|
+
},
|
|
325
|
+
[
|
|
326
|
+
messageDataMap,
|
|
327
|
+
customMessageItemFactory,
|
|
328
|
+
currentUserId,
|
|
329
|
+
lastMessageId,
|
|
330
|
+
isBotConversation,
|
|
331
|
+
conversationFlow?.flowCurrentStep,
|
|
332
|
+
windowWidth,
|
|
333
|
+
]
|
|
334
|
+
);
|
|
335
|
+
|
|
261
336
|
const handleStartReached = useCallback(() => {
|
|
262
337
|
if (__DEV__) {
|
|
263
338
|
console.log('[LegendList] onStartReached triggered', {
|
|
@@ -320,15 +395,12 @@ export const ChatListLegend = memo(
|
|
|
320
395
|
pointerEvents: buttonOpacity.value === 0 ? 'none' : 'auto',
|
|
321
396
|
}));
|
|
322
397
|
|
|
323
|
-
// Cleanup debounce
|
|
398
|
+
// Cleanup debounce timeout on unmount
|
|
324
399
|
useEffect(() => {
|
|
325
400
|
return () => {
|
|
326
401
|
if (scrollDebounceRef.current) {
|
|
327
402
|
clearTimeout(scrollDebounceRef.current);
|
|
328
403
|
}
|
|
329
|
-
if (heightDebounceRef.current) {
|
|
330
|
-
clearTimeout(heightDebounceRef.current);
|
|
331
|
-
}
|
|
332
404
|
};
|
|
333
405
|
}, []);
|
|
334
406
|
|
|
@@ -402,13 +474,15 @@ export const ChatListLegend = memo(
|
|
|
402
474
|
ref={listRef}
|
|
403
475
|
data={messages}
|
|
404
476
|
renderItem={renderItem}
|
|
405
|
-
estimatedItemSize={
|
|
477
|
+
estimatedItemSize={100}
|
|
478
|
+
getItemType={getItemType}
|
|
479
|
+
getFixedItemSize={getFixedItemSize}
|
|
406
480
|
keyExtractor={(item) => String(item.clientMsgID || item.serverMsgID)}
|
|
407
481
|
recycleItems={false}
|
|
408
482
|
extraData={`${conversationFlow?.flowCurrentStep?.id ?? ''}-${lastMessageId ?? ''}`}
|
|
409
483
|
alignItemsAtEnd
|
|
410
484
|
maintainVisibleContentPosition={maintainVisiblePositionConfig}
|
|
411
|
-
maintainScrollAtEnd={
|
|
485
|
+
maintainScrollAtEnd={true}
|
|
412
486
|
freeze={freeze}
|
|
413
487
|
keyboardOffset={keyboardOffset}
|
|
414
488
|
scrollEventThrottle={16}
|