@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.
Files changed (23) hide show
  1. package/lib/module/components/messages/imageMessage/index.js +31 -14
  2. package/lib/module/components/messages/imageMessage/index.js.map +1 -1
  3. package/lib/module/components/messages/stickerMessage/index.js +1 -1
  4. package/lib/module/components/messages/stickerMessage/index.js.map +1 -1
  5. package/lib/module/screens/MediaView/VideoPlayer.js +13 -1
  6. package/lib/module/screens/MediaView/VideoPlayer.js.map +1 -1
  7. package/lib/module/screens/MediaView/index.js +18 -9
  8. package/lib/module/screens/MediaView/index.js.map +1 -1
  9. package/lib/module/screens/chat-detail/ChatListLegend.js +91 -36
  10. package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
  11. package/lib/typescript/src/components/messages/imageMessage/index.d.ts +12 -0
  12. package/lib/typescript/src/components/messages/imageMessage/index.d.ts.map +1 -1
  13. package/lib/typescript/src/components/messages/stickerMessage/index.d.ts +1 -0
  14. package/lib/typescript/src/components/messages/stickerMessage/index.d.ts.map +1 -1
  15. package/lib/typescript/src/screens/MediaView/VideoPlayer.d.ts.map +1 -1
  16. package/lib/typescript/src/screens/MediaView/index.d.ts.map +1 -1
  17. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
  18. package/package.json +1 -1
  19. package/src/components/messages/imageMessage/index.tsx +48 -19
  20. package/src/components/messages/stickerMessage/index.tsx +1 -1
  21. package/src/screens/MediaView/VideoPlayer.tsx +13 -2
  22. package/src/screens/MediaView/index.tsx +15 -7
  23. 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
- // Fallback dims from onLoad when metadata is missing (zero extra request)
52
- const cachedDims = rawImageUrl ? dimsCache.get(rawImageUrl) ?? null : null;
53
- const [loadedDims, setLoadedDims] = useState(cachedDims);
54
- const imageDimensions = useMemo(() => {
55
- if (!rawImageUrl) return DEFAULT_DIMS;
56
- const srcWidth = metaWidth || loadedDims?.width;
57
- const srcHeight = metaHeight || loadedDims?.height;
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
- const dims = {
87
+ if (rawImageUrl) cacheDims(rawImageUrl, {
70
88
  width,
71
89
  height
72
- };
73
- if (rawImageUrl) cacheDims(rawImageUrl, dims);
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","ImageMessage","message","onMediaPress","isLoading","setIsLoading","pictureElem","rawImageUrl","snapshotPicture","bigPicture","sourcePicture","metaWidth","metaHeight","cachedDims","get","loadedDims","setLoadedDims","imageDimensions","srcWidth","srcHeight","handleLoad","e","nativeEvent","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":[]}
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;AACxB,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":[]}
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":"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","ignoreList":[]}
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":";;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;IAC1BC,QAAQ;IACRC;EACF,CAAC,GAAGP,KAAK;EAET,MAAMQ,QAAQ,GAAGrC,MAAM,CAAW,IAAI,CAAC;EACvC,MAAMsC,cAAc,GAAGrB,cAAc,CAAC,CAAC,CAAC;EACxC,MAAMsB,eAAe,GAAGtB,cAAc,CAAC,CAAC,CAAC;EAEzC,MAAM,CAACuB,KAAK,EAAEC,QAAQ,CAAC,GAAGxC,QAAQ,CAAC,IAAI,CAAC;EACxC,MAAM,CAACyC,MAAM,EAAEC,SAAS,CAAC,GAAG1C,QAAQ,CAAC,KAAK,CAAC;EAC3C,MAAM,CAAC2C,WAAW,EAAEC,cAAc,CAAC,GAAG5C,QAAQ,CAAC,IAAI,CAAC;EACpD,MAAM,CAAC6C,SAAS,EAAEC,YAAY,CAAC,GAAG9C,QAAQ,CAAC,KAAK,CAAC;;EAEjD;EACA,MAAM+C,iBAAiB,GAAGnD,WAAW,CAAC,MAAM;IAC1CkD,YAAY,CAAC,KAAK,CAAC;IACnBF,cAAc,CAAC,KAAK,CAAC;EACvB,CAAC,EAAE,EAAE,CAAC;EACN,MAAMI,QAAQ,GAAGpD,WAAW,CAAEqD,CAAM,IAAKH,YAAY,CAAC,CAAC,CAACG,CAAC,EAAEC,WAAW,CAAC,EAAE,EAAE,CAAC;EAC5E,MAAMC,WAAW,GAAGvD,WAAW,CAAC,MAAMkD,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;EAC7D,MAAMM,MAAM,GAAGxD,WAAW,CAAC,MAAMkD,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;;EAEzD;EACA,MAAMO,WAAW,GAAGzD,WAAW,CAAC,MAAM;IACpCwC,QAAQ,CAACkB,OAAO,EAAEC,MAAM,GAAG,CAAC;IAC5Bb,SAAS,CAAC,KAAK,CAAC;EAClB,CAAC,EAAE,EAAE,CAAC;EACN,MAAMc,UAAU,GAAG5D,WAAW,CAAC,MAAM;IACnCwC,QAAQ,CAACkB,OAAO,EAAEG,KAAK,GAAG,CAAC;IAC3Bf,SAAS,CAAC,IAAI,CAAC;EACjB,CAAC,EAAE,EAAE,CAAC;EACN,MAAMgB,iBAAiB,GAAG9D,WAAW,CAAC,MAAM;IAC1C,IAAI6C,MAAM,EAAEY,WAAW,CAAC,CAAC,CAAC,KACrB;MACHG,UAAU,CAAC,CAAC;MACZ1B,OAAO,GAAG,CAAC;IACb;EACF,CAAC,EAAE,CAACW,MAAM,EAAEY,WAAW,EAAEG,UAAU,EAAE1B,OAAO,CAAC,CAAC;;EAE9C;EACA;EACA;EACAjC,SAAS,CAAC,MAAM;IACd,IAAIqC,QAAQ,EAAE;MACZmB,WAAW,CAAC,CAAC;IACf,CAAC,MAAM;MACLG,UAAU,CAAC,CAAC;IACd;EACF,CAAC,EAAE,CAACtB,QAAQ,EAAEmB,WAAW,EAAEG,UAAU,CAAC,CAAC;;EAEvC;EACA,MAAMG,SAAS,GAAG7D,OAAO,CACvB,MACEe,OAAO,CAAC+C,GAAG,CAAC,CAAC,CACVC,WAAW,CAAC,GAAG,CAAC,CAChBC,YAAY,CAAC,CAAC,CAAC,CACfC,KAAK,CAAC,CAACC,EAAE,EAAEC,OAAO,KAAK;IACtB,SAAS;;IACT,IAAI,CAACA,OAAO,EAAE;IACdlD,OAAO,CAAC2C,iBAAiB,CAAC,CAAC,CAAC;EAC9B,CAAC,CAAC,EACN,CAACA,iBAAiB,CACpB,CAAC;EAED7D,SAAS,CAAC,MAAM;IACd,IAAI,CAACoC,kBAAkB,EAAEO,QAAQ,CAAC,KAAK,CAAC;EAC1C,CAAC,EAAE,CAACP,kBAAkB,CAAC,CAAC;;EAExB;EACA,MAAMiC,qBAAqB,GAAGtE,WAAW,CACtCqD,CAAM,IAAK;IACVZ,cAAc,CAAC8B,KAAK,GAAGlB,CAAC,CAACmB,WAAW,CAACC,MAAM,CAACC,KAAK;IACjDhC,eAAe,CAAC6B,KAAK,GAAGlB,CAAC,CAACmB,WAAW,CAACC,MAAM,CAAClC,MAAM;EACrD,CAAC,EACD,CAACE,cAAc,EAAEC,eAAe,CAClC,CAAC;;EAED;EACA,MAAMiC,eAAe,GAAG3E,WAAW,CAAC,MAAM;IACxC,oBACEsB,IAAA,CAACb,UAAU,CAACmE,WAAW;MAACC,OAAO,EAAE,CAAC9B,WAAW,IAAIE,SAAS,KAAK,CAACJ,MAAO;MAAAiC,QAAA,eACrExD,IAAA,CAAChB,iBAAiB;QAChByE,SAAS;QACTC,IAAI,EAAC,OAAO;QACZC,KAAK,EAAEC,MAAM,CAACC,MAAO;QACrBC,KAAK,EAAE5E,OAAO,CAAC6E,OAAO,CAACC;MAAO,CAC/B;IAAC,CACoB,CAAC;EAE7B,CAAC,EAAE,CAACvC,WAAW,EAAEE,SAAS,EAAEJ,MAAM,CAAC,CAAC;EAEpC,MAAM0C,aAAa,GAAGvF,WAAW,CAAC,MAAM;IACtC,oBACEsB,IAAA,CAACb,UAAU,CAACmE,WAAW;MAACC,OAAO,EAAEhC,MAAM,IAAIR,kBAAmB;MAAAyC,QAAA,eAC5DxD,IAAA,CAACb,UAAU,CAAC+E,IAAI;QAACP,KAAK,EAAEC,MAAM,CAACO,OAAQ;QAAAX,QAAA,eACrCxD,IAAA,CAACb,UAAU,CAACiF,SAAS;UAACT,KAAK,EAAEC,MAAM,CAACS,UAAW;UAACzD,OAAO,EAAEuB,WAAY;UAAAqB,QAAA,eACnExD,IAAA,CAACZ,MAAM,CAACkF,WAAW;YAACC,IAAI,EAAC,QAAQ;YAACb,IAAI,EAAE,EAAG;YAACI,KAAK,EAAE5E,OAAO,CAACsF;UAAM,CAAE;QAAC,CAChD;MAAC,CACR;IAAC,CACI,CAAC;EAE7B,CAAC,EAAE,CAACjD,MAAM,EAAER,kBAAkB,EAAEoB,WAAW,CAAC,CAAC;EAE7C,MAAMsC,UAAU,GAAG7F,OAAO,CACxB,OAAO;IACLqC,MAAM,EAAGA,MAAM,IAAe;EAChC,CAAC,CAAC,EACF,CAACA,MAAM,CACT,CAAC;;EAED;EACA,MAAMyD,YAAY,gBAChBxE,KAAA,CAACf,UAAU,CAAC+E,IAAI;IACdP,KAAK,EAAE,CAACC,MAAM,CAACe,cAAc,EAAEF,UAAU,CAAE;IAC3CG,WAAW,EAAE,KAAM;IACnBC,KAAK,EAAE,CAAC,QAAQ,CAAE;IAClBC,QAAQ,EAAE9B,qBAAsB;IAAAQ,QAAA,GAE/BH,eAAe,CAAC,CAAC,eAElBrD,IAAA,CAACR,KAAK;MACJuF,GAAG,EAAE7D,QAAS;MACd8D,MAAM,EAAE;QAAEC,GAAG,EAAEtE,GAAG;QAAER;MAAa,CAAE;MACnC2B,QAAQ,EAAEA,QAAS;MACnBG,WAAW,EAAEA,WAAY;MACzBC,MAAM,EAAEA,MAAO;MACfL,iBAAiB,EAAEA,iBAAkB;MACrC8B,KAAK,EAAEC,MAAM,CAACsB,KAAM;MACpB7D,KAAK,EAAEA,KAAM;MACbE,MAAM,EAAEA,MAAO;MACf4D,MAAM;MACNtE,UAAU,EAAEA,UAAW;MACvBuE,QAAQ,EAAE,CAACrE,kBAAmB;MAC9BsE,kBAAkB,EAAE5F,sBAAsB,CAAC6F;IAAO,CACnD,CAAC,EAEDrB,aAAa,CAAC,CAAC;EAAA,CACD,CAClB;;EAED;EACA,IAAIlD,kBAAkB,EAAE;IACtB,oBACEf,IAAA,CAACJ,eAAe;MAAC2F,OAAO,EAAE9C,SAAU;MAAAe,QAAA,EAAEkB;IAAY,CAAkB,CAAC;EAEzE;EAEA,OAAOA,YAAY;AACrB,CAAC,CAAC;AAEFjE,WAAW,CAAC+E,WAAW,GAAG,2BAA2B;AACrD,eAAe/E,WAAW;AAC1B,MAAMmD,MAAM,GAAG3E,UAAU,CAACwG,MAAM,CAAC;EAC/Bd,cAAc,EAAE;IACde,IAAI,EAAE,CAAC;IACPtC,KAAK,EAAE/D,KAAK,CAAC+D,KAAK;IAClBuC,eAAe,EAAEzG,OAAO,CAAC0G,KAAK;IAC9BC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDZ,KAAK,EAAE;IACL,GAAGjG,UAAU,CAAC8G,YAAY;IAC1B3C,KAAK,EAAE,MAAM;IACbnC,MAAM,EAAE;EACV,CAAC;EACD4C,MAAM,EAAE;IACNmC,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE;EACV,CAAC;EACD9B,OAAO,EAAE;IACP6B,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC;IACTJ,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDzB,UAAU,EAAE;IACVsB,eAAe,EAAE,oBAAoB;IACrCE,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBI,YAAY,EAAE5G,YAAY,CAAC,IAAI,CAAC;IAChC6G,OAAO,EAAE5G,aAAa,CAAC,MAAM,CAAC;IAC9B6D,KAAK,EAAE,EAAE;IACTnC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","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
- const sub = BackHandler.addEventListener('hardwareBackPress', () => {
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.url}-${i}`, []);
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 !== false,
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":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,OAAO,QAAQ,OAAO;AAEzE,SACEC,iBAAiB,EACjBC,WAAW,EACXC,QAAQ,EACRC,UAAU,EAEVC,SAAS,EACTC,mBAAmB,QACd,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,GAAG,KAAK;IAClBC;EACF,CAAC,GAAGL,KAAK;EAET,MAAMM,MAAM,GAAGxB,iBAAiB,CAAC,CAAC;EAClC,MAAMyB,OAAO,GAAG5C,MAAM,CAAgB,IAAI,CAAC;EAC3C,MAAM,CAAC6C,KAAK,EAAEC,QAAQ,CAAC,GAAG7C,QAAQ,CAACsC,SAAS,CAAC;EAC7C,MAAM,CAACQ,WAAW,EAAEC,cAAc,CAAC,GAAG/C,QAAQ,CAAC,KAAK,CAAC;EACrD,MAAM,CAACgD,aAAa,EAAEC,gBAAgB,CAAC,GAAGjD,QAAQ,CAAC,KAAK,CAAC;EAEzD,MAAM;IAAEkD;EAAO,CAAC,GAAG3C,mBAAmB,CAAC,CAAC;EAExC,MAAM4C,OAAO,GAAGtD,WAAW,CAAC,MAAM;IAChC4C,SAAS,GAAG,CAAC;EACf,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;;EAEf;EACA;EACA;EACA,MAAMW,UAAU,GAAGvD,WAAW,CAAC,YAAY;IACzC,MAAMwD,IAAI,GAAGhB,MAAM,CAACO,KAAK,CAAC;IAC1B,IAAI,CAACS,IAAI,EAAEC,GAAG,IAAIN,aAAa,EAAE;IAEjCC,gBAAgB,CAAC,IAAI,CAAC;IACtB,IAAI;MACF,MAAMM,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,IAAId,KAAK,IAAIa,WAAW,EAAE;MAC/D,MAAMI,QAAQ,GAAG,GAAG5C,IAAI,CAAC6C,mBAAmB,IAAIH,QAAQ,EAAE;MAE1D,MAAMI,MAAM,GAAG,MAAM9C,IAAI,CAAC8C,MAAM,CAACF,QAAQ,CAAC;MAC1C,IAAI,CAACE,MAAM,EAAE;QACX,MAAMC,MAAM,GAAG,MAAM/C,IAAI,CAACgD,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,MAAMlD,aAAa,CAAC;QAClBoD,UAAU,EAAE,CAAC,UAAUV,QAAQ,EAAE,CAAC;QAClCW,QAAQ,EAAE1C,WAAW,CAAC6B,QAAQ,CAAC;QAC/BA,QAAQ;QACRc,IAAI,EAAE;MACR,CAAC,CAAC;MACF7C,OAAO,CAAC8C,KAAK,CAACC,IAAI,CAAC;QACjBC,KAAK,EAAE/C,KAAK,CAAC,8BAA8B,EAAE;UAAE8B;QAAS,CAAC,CAAC;QAC1DkB,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,MAAM;MACNjD,OAAO,CAAC8C,KAAK,CAACC,IAAI,CAAC;QACjBC,KAAK,EAAE/C,KAAK,CAAC,2BAA2B,CAAC;QACzCgD,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,SAAS;MACR5B,gBAAgB,CAAC,KAAK,CAAC;IACzB;EACF,CAAC,EAAE,CAACZ,MAAM,EAAEO,KAAK,EAAEI,aAAa,CAAC,CAAC;EAElClD,SAAS,CAAC,MAAM;IACdQ,SAAS,CAACwE,SAAS,CAAC,IAAI,CAAC;IACzB,OAAO,MAAM;MACXxE,SAAS,CAACwE,SAAS,CAAC,KAAK,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAENhF,SAAS,CAAC,MAAM;IACd,IAAIiF,GAAG,GAAG,IAAI;IACd,IAAI3E,QAAQ,CAAC4E,EAAE,KAAK,SAAS,EAAE;MAC7BD,GAAG,GAAG5E,WAAW,CAAC8E,gBAAgB,CAAC,mBAAmB,EAAE,MAAM;QAC5D9B,OAAO,CAAC,CAAC;QACT,OAAO,IAAI;MACb,CAAC,CAAC;IACJ;IACA,OAAO,MAAM4B,GAAG,EAAEG,MAAM,CAAC,CAAC;EAC5B,CAAC,EAAE,CAAC/B,OAAO,CAAC,CAAC;EAEb,MAAMgC,qBAAqB,GAAGtF,WAAW,CAAC,MAAMkD,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;EACzE,MAAMqC,mBAAmB,GAAGvF,WAAW,CAAC,MAAMkD,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;EAExE,MAAMsC,sBAAsB,GAAGtF,MAAM,CACnC,CAAC;IAAEuF;EAA8C,CAAC,KAAK;IACrD,MAAMC,CAAC,GAAGD,aAAa,CAAC,CAAC,CAAC,EAAE1C,KAAK;IACjCC,QAAQ,CAAC0C,CAAC,IAAI,CAAC,CAAC;EAClB,CACF,CAAC,CAACC,OAAO;EAET,MAAMC,KAAK,GAAG5F,WAAW,CAAC,CAACwD,IAAS,EAAEkC,CAAS,KAAK,GAAGlC,IAAI,EAAEC,GAAG,IAAIiC,CAAC,EAAE,EAAE,EAAE,CAAC;EAE5E,MAAMG,UAAU,GAAG7F,WAAW,CAC5B,CAAC;IAAEwD,IAAI;IAAET,KAAK,EAAE+C;EAA0C,CAAC,kBACzDzD,KAAA,CAACb,UAAU,CAACuE,SAAS;IAACC,MAAM;IAACC,aAAa,EAAE,CAAE;IAAAC,QAAA,gBAC5C/D,IAAA,CAACX,UAAU,CAAC2E,WAAW;MAACC,OAAO,EAAE,CAAC,CAAC5C,IAAI,CAACK,OAAQ;MAAAqC,QAAA,eAC9C/D,IAAA,CAACL,WAAW;QACV2B,GAAG,EAAED,IAAI,EAAEC,GAAG,IAAI,EAAG;QACrB4C,QAAQ,EAAEP,SAAS,KAAK/C,KAAK,IAAI,CAACE,WAAY;QAC9CqD,kBAAkB,EAAE,KAAM;QAC1BjD,MAAM,EAAEA;MAAO,CAChB;IAAC,CACoB,CAAC,eACzBlB,IAAA,CAACX,UAAU,CAAC2E,WAAW;MAACC,OAAO,EAAE,CAAC5C,IAAI,CAACK,OAAQ;MAAAqC,QAAA,eAC7C/D,IAAA,CAAChB,SAAS;QACRoF,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,CAAChE,KAAK,EAAEE,WAAW,EAAEI,MAAM,CAC7B,CAAC;EAED,MAAM2D,YAAY,GAAG5G,OAAO,CAAC,MAAM;IACjC;IACA;IACA;IACA;IACA;IACA,IAAIoC,MAAM,CAACyE,MAAM,IAAI,CAAC,EAAE,OAAO,IAAI;IACnC,oBACE5E,KAAA,CAACb,UAAU,CAAC0F,IAAI;MACdL,KAAK,EAAE,CACLC,MAAM,CAACK,MAAM,EACb;QACEC,MAAM,EACJvE,MAAM,CAACuE,MAAM,GAAG,CAAC,GACbvE,MAAM,CAACuE,MAAM,GAAGvF,aAAa,CAAC,QAAQ,CAAC,GACvCA,aAAa,CAAC,MAAM;MAC5B,CAAC,CACD;MAAAqE,QAAA,gBAEF7D,KAAA,CAACV,MAAM,CAAC0F,IAAI;QACVC,IAAI,EAAC,cAAc;QACnBC,KAAK,EAAEhG,OAAO,CAACiG,KAAM;QACrBX,KAAK,EAAEC,MAAM,CAACW,WAAY;QAAAvB,QAAA,GAEzBnD,KAAK,GAAG,CAAC,EAAC,GAAC,EAACP,MAAM,CAACyE,MAAM;MAAA,CACf,CAAC,eACd9E,IAAA,CAACX,UAAU,CAAC2E,WAAW;QAACC,OAAO,EAAEzD,UAAU,KAAK,IAAK;QAAAuD,QAAA,eACnD/D,IAAA,CAACjB,UAAU;UACTwG,iBAAiB,EAAEZ,MAAM,CAACY,iBAAkB;UAC5CC,QAAQ,EAAEb,MAAM,CAACc,GAAI;UACrBC,gBAAgB,EAAEf,MAAM,CAACgB,WAAY;UACrCC,gBAAgB,EAAE,GAAI;UACtBC,UAAU,EAAExF,MAAM,CAACyE,MAAO;UAC1BgB,cAAc,EAAElF,KAAM;UACtBmF,kBAAkB,EAAE;QAAI,CACzB;MAAC,CACoB,CAAC;IAAA,CACV,CAAC;EAEtB,CAAC,EAAE,CAACvF,UAAU,EAAEH,MAAM,CAACyE,MAAM,EAAElE,KAAK,EAAEF,MAAM,CAACuE,MAAM,CAAC,CAAC;EACrD,oBACEjF,IAAA,CAACtB,QAAQ,CAACqG,IAAI;IACZL,KAAK,EAAEC,MAAM,CAACqB,OAAQ;IACtBC,QAAQ,EAAEpH,WAAY;IACtBqH,OAAO,EAAEpH,YAAa;IAAAiF,QAAA,eAEtB7D,KAAA,CAACxB,QAAQ,CAACqG,IAAI;MACZkB,QAAQ,EAAEtH,MAAM,CAACwH,SAAS,CAAC,GAAG,CAAE;MAChCD,OAAO,EAAEtH,OAAO,CAACuH,SAAS,CAAC,GAAG,CAAE;MAChCzB,KAAK,EAAEC,MAAM,CAACyB,IAAK;MAAArC,QAAA,gBAGnB/D,IAAA,CAACvB,cAAc;QACb4H,MAAM,EAAE,CAAC,iBAAiB,EAAE,eAAe,CAAE;QAC7C3B,KAAK,EAAE,CAACC,MAAM,CAAC2B,UAAU,EAAE;UAAEC,UAAU,EAAE7F,MAAM,CAAC8F;QAAI,CAAC,CAAE;QACvDC,aAAa,EAAC,UAAU;QAAA1C,QAAA,eAGxB7D,KAAA,CAACb,UAAU,CAAC0F,IAAI;UAACL,KAAK,EAAEC,MAAM,CAAC+B,SAAU;UAAA3C,QAAA,gBAEvC/D,IAAA,CAACX,UAAU,CAACuE,SAAS;YAACc,KAAK,EAAEC,MAAM,CAACgC,SAAU;YAACC,OAAO,EAAEzF,OAAQ;YAAA4C,QAAA,eAC9D/D,IAAA,CAACT,MAAM,CAACsH,WAAW;cACjBC,IAAI,EAAC,SAAS;cACdC,IAAI,EAAE,EAAG;cACT3B,KAAK,EAAEhG,OAAO,CAACiG;YAAM,CACtB;UAAC,CACkB,CAAC,eAGvBrF,IAAA,CAACX,UAAU,CAAC0F,IAAI;YAACqB,IAAI;UAAA,CAAE,CAAC,eAGxBpG,IAAA,CAACX,UAAU,CAAC2E,WAAW;YAACC,OAAO,EAAE,CAAC,CAAC1D,QAAS;YAAAwD,QAAA,eAC1C7D,KAAA,CAACb,UAAU,CAACuE,SAAS;cACnBc,KAAK,EAAEC,MAAM,CAACgC,SAAU;cACxBC,OAAO,EAAE5F,aAAa,GAAGgG,SAAS,GAAG5F,UAAW;cAChD6F,QAAQ,EAAEjG,aAAc;cAAA+C,QAAA,gBAExB/D,IAAA,CAACX,UAAU,CAAC2E,WAAW;gBAACC,OAAO,EAAEjD,aAAc;gBAAA+C,QAAA,eAC7C/D,IAAA,CAAC9B,iBAAiB;kBAAC6I,IAAI,EAAC,OAAO;kBAAC3B,KAAK,EAAEhG,OAAO,CAACiG;gBAAM,CAAE;cAAC,CAClC,CAAC,eACzBrF,IAAA,CAACX,UAAU,CAAC2E,WAAW;gBAACC,OAAO,EAAE,CAACjD,aAAc;gBAAA+C,QAAA,eAC9C/D,IAAA,CAACT,MAAM,CAACsH,WAAW;kBACjBC,IAAI,EAAC,YAAY;kBACjBC,IAAI,EAAE,EAAG;kBACT3B,KAAK,EAAEhG,OAAO,CAACiG;gBAAM,CACtB;cAAC,CACoB,CAAC;YAAA,CACL;UAAC,CACD,CAAC;QAAA,CACV;MAAC,CACJ,CAAC,eAOjBrF,IAAA,CAACxB,UAAU;QACT0I,GAAG,EAAEvG,OAAQ;QACbwG,kBAAkB,EAChB7G,SAAS,IAAID,MAAM,EAAEyE,MAAM,GAAGzE,MAAM,EAAEyE,MAAM,GAAG,CAAC,GAAGxE,SACpD;QACD8G,IAAI,EAAE/G,MAAO;QACbqD,UAAU,EAAEA,UAAW;QACvB2D,YAAY,EAAE5D,KAAM;QACpB6D,iBAAiB,EAAEhI,KAAK,CAACiI,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,IAAK;QACnByB,SAAS,EAAE,CAACjH,KAAK,EAAEE,WAAW;MAAE,CACjC,CAAC,EAED+D,YAAY;IAAA,CACA;EAAC,CACH,CAAC;AAEpB,CAAC;AAEA1E,iBAAiB,CAAwB2H,WAAW,GAAG,oBAAoB;AAE5E,eAAe3H,iBAAiB;AAEhC,MAAMwE,MAAM,GAAGtG,UAAU,CAAC0J,MAAM,CAAC;EAC/B/B,OAAO,EAAE;IACPI,IAAI,EAAE,CAAC;IACP4B,eAAe,EAAE5I,OAAO,CAAC6I;EAC3B,CAAC;EACD7B,IAAI,EAAE;IACJA,IAAI,EAAE;EACR,CAAC;EACDxB,GAAG,EAAE;IACH2C,KAAK,EAAEjI,KAAK,CAACiI,KAAK;IAClBrG,MAAM,EAAE5B,KAAK,CAAC4B;EAChB,CAAC;EACDoF,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,EAAEhG,OAAO,CAACiG;EACjB,CAAC;EACD4D,uBAAuB,EAAE;IACvBT,UAAU,EAAE,QAAQ;IACpBU,SAAS,EAAExJ,aAAa,CAAC,QAAQ;EACnC,CAAC;EACDyJ,mBAAmB,EAAE;IACnBZ,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBtH,MAAM,EAAE,EAAE;IACVkI,iBAAiB,EAAE1J,aAAa,CAAC,SAAS,CAAC;IAC3CgJ,YAAY,EAAEjJ,YAAY,CAAC,IAAI,CAAC;IAChC4J,WAAW,EAAE,CAAC;IACdC,WAAW,EAAElK,OAAO,CAACiG,KAAK;IAC1BwD,GAAG,EAAEnJ,aAAa,CAAC,SAAS;EAC9B,CAAC;EACD6J,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;IACHuC,eAAe,EAAE5I,OAAO,CAACiG,KAAK;IAC9BkC,KAAK,EAAE,CAAC;IACRrG,MAAM,EAAE,CAAC;IACTwH,YAAY,EAAE,CAAC;IACfe,gBAAgB,EAAE;EACpB,CAAC;EACD9D,WAAW,EAAE;IACXqC,eAAe,EAAE5I,OAAO,CAACsK,IAAI,CAACC;EAChC;AACF,CAAC,CAAC","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, handleItemLayout, retryMessage]);
163
- const maintainScrollConfig = useMemo(() => ({
164
- animated: false,
165
- on: {
166
- dataChange: !moreOldLoading,
167
- layout: !moreOldLoading,
168
- // Must be disabled while prepending older history; otherwise re-measuring
169
- // the freshly prepended items snaps the list back to the bottom.
170
- itemLayout: !moreOldLoading
171
- }
172
- }), [moreOldLoading]);
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 timeouts on unmount
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: avgItemHeightRef.current,
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: maintainScrollConfig,
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":";;AAAA,SACEA,IAAI,EACJC,WAAW,EACXC,OAAO,EACPC,SAAS,EACTC,MAAM,EACNC,QAAQ,QAEH,OAAO;AACd,SACEC,kBAAkB,EAClBC,UAAU,EACVC,mBAAmB,QAEd,cAAc;AACrB,OAAOC,QAAQ,IACbC,cAAc,EACdC,gBAAgB,EAChBC,UAAU,QAEL,yBAAyB;AAChC,SAASC,uBAAuB,QAAQ,0BAA0B;AAElE,SAASC,UAAU,EAAEC,OAAO,EAAEC,aAAa,EAAEC,MAAM,QAAQ,eAAe;AAC1E,SAASC,wBAAwB,QAAQ,kCAA+B;AAExE,SAASC,iBAAiB,QAAQ,+BAA4B;AAC9D,SAASC,aAAa,QAAQ,2BAAwB;AACtD,SAASC,qBAAqB,QAAQ,mCAAgC;AACtE,SAASC,oBAAoB,QAAQ,oCAAiC;AACtE,SAASC,uBAAuB,QAAQ,sBAAmB;AAC3D,SAASC,eAAe,QAAQ,8CAAqC;AACrE,SAASC,YAAY,EAAEC,UAAU,QAAQ,8BAA2B;AAEpE,SAASC,cAAc,QAAQ,uCAAoC;AACnE,SAASC,SAAS,QAAqC,uBAAoB;AAC3E,SAASC,eAAe,QAAQ,wBAAqB;AACrD,SAASC,cAAc,QAAQ,wBAAe;AAC9C,SAASC,aAAa,QAAQ,0BAAuB;AACrD,SAASC,WAAW,QAAQ,+BAA+B;AAE3D,SAASC,YAAY,QAAQ,sBAAa;AAC1C,SAASC,cAAc,QAAQ,yBAAgB;AAC/C,SAASC,uBAAuB,QAAQ,iDAAwC;AAChF,SAASC,YAAY,QAAQ,mDAA0C;AACvE,OAAOC,eAAe,IACpBC,sBAAsB,QACjB,gCAA6B;;AAEpC;AACA;AACA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AACA,MAAMC,iBAAiB,GAAG7B,aAAa,CAAC,SAAS,CAAC;AAYlD,OAAO,MAAM8B,cAAc,gBAAG9C,IAAI,CAChC,CAAC;EACC+C,QAAQ,GAAG,EAAE;EACbC,cAAc;EACdC,wBAAwB;EACxBC,aAAa;EACbC,cAAc;EACdC,UAAU;EACVC,aAAa;EACbC,cAAc;EACdC,UAAU;EACVC,YAAY;EACZC,UAAU;EACVC,WAAW;EACXC,OAAO;EACPC,MAAM;EACNC,kBAAkB;EAClBC;AAC2B,CAAC,KAAK;EACjC,MAAMC,aAAa,GAAG9B,YAAY,CAAE+B,CAAC,IAAKA,CAAC,CAACC,IAAI,EAAEC,MAAM,CAAC;EACzD,MAAMC,WAAW,GAAG3D,mBAAmB,CAAC,CAAC,CAAC4D,KAAK;EAC/C;EACA,MAAMC,cAAc,GAAGnE,OAAO,CAC5B,MAAMgB,wBAAwB,CAAC6B,QAAQ,CAAC,EACxC,CAACA,QAAQ,CACX,CAAC;EAED,MAAM;IAAEuB,iBAAiB;IAAEC;EAAiB,CAAC,GAAGjD,oBAAoB,CAAC,CAAC;EACtE,MAAM;IAAEkD;EAAa,CAAC,GAAG7C,cAAc,CAAC,CAAC;EAEzC,MAAM8C,aAAa,GAAGvE,OAAO,CAAC,MAAM;IAClC,MAAMwE,IAAI,GAAG3B,QAAQ,CAACA,QAAQ,CAAC4B,MAAM,GAAG,CAAC,CAAC;IAC1C,OAAOD,IAAI,EAAEE,WAAW,IAAIF,IAAI,EAAEG,WAAW,IAAI,IAAI;EACvD,CAAC,EAAE,CAAC9B,QAAQ,CAAC,CAAC;EACd,MAAM;IAAE+B,MAAM,EAAEC;EAAQ,CAAC,GAAGrD,UAAU,CAAC,CAAC;EACxC,MAAM;IAAEoD,MAAM,EAAEE;EAAU,CAAC,GAAGvD,YAAY,CAAC,CAAC;EAE5C,MAAMwD,aAAa,GAAGvE,cAAc,CAAC,CAAC,CAAC;EACvC,MAAMwE,aAAa,GAAG9E,MAAM,CAAC,IAAI,CAAC;EAClC,MAAM+E,iBAAiB,GAAG/E,MAAM,CAA6BgF,SAAS,CAAC;EACvE,MAAMC,UAAU,GAAGjF,MAAM,CAA2B,IAAIkF,GAAG,CAAC,CAAC,CAAC;EAC9D,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGnF,QAAQ,CAAC,KAAK,CAAC;EAEjD,MAAM;IAAEoF;EAAgB,CAAC,GAAG3D,cAAc,CAAC,CAAC;EAC5C,MAAM4D,cAAc,GAAG7D,eAAe,CAAEmC,CAAC,IAAKA,CAAC,CAAC0B,cAAc,CAAC;EAE/D,MAAMC,sBAAsB,GAAG1F,WAAW,CACxC,CAAC2F,SAAiB,EAAEC,OAAoB,KAAK;IAC3C,MAAMC,IAAI,GAAGT,UAAU,CAACU,OAAO,CAACC,GAAG,CAACJ,SAAS,CAAC;IAC9CE,IAAI,EAAEG,eAAe,CAAC,CAACC,CAAC,EAAEC,CAAC,EAAE/B,KAAK,EAAEgC,MAAM,KAAK;MAC7C1C,WAAW,GAAGmC,OAAO,EAAE;QAAEK,CAAC;QAAEC,CAAC;QAAE/B,KAAK;QAAEgC;MAAO,CAAC,CAAC;IACjD,CAAC,CAAC;EACJ,CAAC,EACD,CAAC1C,WAAW,CACd,CAAC;EAED,MAAM2C,SAAS,GAAGpG,WAAW,CAC1BqG,OAAoC,IAAK;IACxCvB,OAAO,CAACuB,OAAO,CAAC;EAClB,CAAC,EACD,CAACvB,OAAO,CACV,CAAC;EAED,MAAMwB,WAAW,GAAGtG,WAAW,CAAC,MAAM;IACpC+E,SAAS,CAAC,CAAC;EACb,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAMwB,UAAU,GAAGvG,WAAW,CAC5B,CAAC;IAAEwG,IAAI;IAAEC;EAAW,CAAC,KAAK;IACxB,IAAI;MACF,IAAI,CAACD,IAAI,EAAE,OAAO,IAAI;MAEtB,MAAMZ,OAAO,GAAGY,IAAmB;MACnC,MAAME,UAAU,GAAGd,OAAO,CAACe,MAAM,KAAK7C,aAAa;MACnD,MAAM8C,cAAc,GAClB,CAACF,UAAU,IACX,CAACd,OAAO,CAACjB,WAAW,IAAIiB,OAAO,CAAChB,WAAW,MAAMJ,aAAa;MAChE,MAAMmB,SAAS,GACbC,OAAO,CAACjB,WAAW,IACnBiB,OAAO,CAAChB,WAAW,IACnB,QAAQgB,OAAO,CAACiB,QAAQ,IAAIjB,OAAO,CAACkB,UAAU,IAAIL,KAAK,EAAE;MAE3D,MAAMM,WAAW,GAAG3C,cAAc,CAAC2B,GAAG,CAACJ,SAAS,CAAC;MACjD,IAAI,CAACoB,WAAW,EAAE;QAChB,OAAO,IAAI;MACb;MAEA,MAAM;QAAEC,QAAQ;QAAEC;MAAU,CAAC,GAAGF,WAAW;MAE3C,IAAIG,oBAAoB,GAAG,IAAI;MAC/B,IAAIN,cAAc,IAAIvC,iBAAiB,EAAE;QACvC6C,oBAAoB,GAAG5F,uBAAuB,CAC5CgD,gBAAgB,EAAE6C,eACpB,CAAC;MACH;MAEA,oBACE1E,KAAA,CAAAE,SAAA;QAAAyE,QAAA,GACGJ,QAAQ,iBAAIzE,IAAA,CAACpB,aAAa;UAAC8F,SAAS,EAAEA;QAAU,CAAE,CAAC,eACpDxE,KAAA,CAAC5B,UAAU,CAACwG,IAAI;UACdC,GAAG,EAAGzB,IAAiB,IAAK;YAC1B,IAAIA,IAAI,EAAET,UAAU,CAACU,OAAO,CAACyB,GAAG,CAAC5B,SAAS,EAAEE,IAAI,CAAC,CAAC,KAC7CT,UAAU,CAACU,OAAO,CAAC0B,MAAM,CAAC7B,SAAS,CAAC;UAC3C,CAAE;UACF8B,KAAK,EACHf,UAAU,GACN5E,aAAa,CAAC4F,eAAe,GAC7B5F,aAAa,CAAC6F,cACnB;UAAAP,QAAA,gBAED7E,IAAA,CAACrB,iBAAiB;YAChB0E,OAAO,EAAEA,OAAQ;YACjBc,UAAU,EAAEA,UAAW;YACvBkB,aAAa,EAAEX,SAAU;YACzB1D,YAAY,EAAEA,YAAa;YAC3BC,UAAU,EAAEA,UAAW;YACvBqE,OAAO,EAAEtD,YAAa;YACtBd,WAAW,EACTA,WAAW,GACP,MAAMiC,sBAAsB,CAACC,SAAS,EAAEC,OAAO,CAAC,GAChDT,SACL;YACDnC,wBAAwB,EAAEA;UAAyB,CACpD,CAAC,EACD,CAAC,CAACkE,oBAAoB,iBACrB3E,IAAA,CAAChB,eAAe;YACduG,QAAQ,EAAEZ,oBAAqB;YAC/BZ,WAAW,EAAEA,WAAY;YACzBF,SAAS,EAAEA;UAAU,CACtB,CACF;QAAA,CACc,CAAC;MAAA,CAClB,CAAC;IAEP,CAAC,CAAC,OAAO2B,KAAK,EAAE;MACd,IAAIC,OAAO,EACTC,OAAO,CAACF,KAAK,CAAC,oCAAoC,EAAEA,KAAK,CAAC;MAC5D,oBACExF,IAAA,CAAC1B,UAAU,CAACwG,IAAI;QAACI,KAAK,EAAES,MAAM,CAACC,QAAS;QAAAf,QAAA,eACtC7E,IAAA,CAACvB,MAAM,CAACoH,IAAI;UAACC,IAAI,EAAC,cAAc;UAAAjB,QAAA,EAAC;QAEjC,CAAa;MAAC,CACC,CAAC;IAEtB;EACF,CAAC,EACD,CACEtD,aAAa,EACbU,aAAa,EACbJ,cAAc,EACdC,iBAAiB,EACjBd,YAAY,EACZC,UAAU,EACVC,WAAW,EACXiC,sBAAsB,EACtB1C,wBAAwB,EACxBsD,WAAW,EACXF,SAAS,EACT9B,gBAAgB,EAAE6C,eAAe,EACjC5C,YAAY,CAEhB,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA,MAAM+D,6BAA6B,GAAGrI,OAAO,CAAC,OAAO;IAAEsI,IAAI,EAAE;EAAK,CAAC,CAAC,EAAE,EAAE,CAAC;;EAEzE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,WAAW,GAAGxI,WAAW,CAC5BwG,IAAiB,IAAK;IACrB,MAAMiC,QAAQ,GAAG,CAAC,CAACzF,wBAAwB,GAAGwD,IAAI,CAAC;IACnD,OAAO,GAAGA,IAAI,EAAEkC,WAAW,IAAI,SAAS,GAAGD,QAAQ,GAAG,SAAS,GAAG,EAAE,EAAE;EACxE,CAAC,EACD,CAACzF,wBAAwB,CAC3B,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM2F,gBAAgB,GAAG3I,WAAW,CAClC,CAACwG,IAAiB,EAAEC,KAAa,KAAyB;IACxD,MAAMb,OAAO,GAAGY,IAAI;IACpB,MAAMb,SAAS,GACbC,OAAO,CAACjB,WAAW,IACnBiB,OAAO,CAAChB,WAAW,IACnB,QAAQgB,OAAO,CAACiB,QAAQ,IAAIjB,OAAO,CAACkB,UAAU,IAAIL,KAAK,EAAE;IAE3D,IAAIrC,cAAc,CAAC2B,GAAG,CAACJ,SAAS,CAAC,EAAEqB,QAAQ,EAAE,OAAO7B,SAAS;;IAE7D;IACA;IACA;IACA;IACA;IACA,IAAIyD,aAAqB;IACzB,QAAQhD,OAAO,CAAC8C,WAAW;MACzB,KAAK3G,WAAW,CAAC8G,cAAc;QAC7BD,aAAa,GACX1G,uBAAuB,CAAC0D,OAAO,EAAE1B,WAAW,CAAC,CAACiC,MAAM,GACpDvD,iBAAiB;QACnB;MACF,KAAKb,WAAW,CAAC+G,YAAY;QAC3BF,aAAa,GACXxG,eAAe,CAAC2G,aAAa,CAC3B1G,sBAAsB,CAAC2G,oBACzB,CAAC,CAAC7C,MAAM,GAAGvD,iBAAiB;QAC9B;MACF,KAAKb,WAAW,CAACkH,cAAc;QAC7BL,aAAa,GAAGzG,YAAY,GAAGS,iBAAiB;QAChD;MACF;QACE,OAAOuC,SAAS;IACpB;;IAEA;IACA;IACA;IACA;IACA;IACA,IAAInC,wBAAwB,GAAG4C,OAAO,CAAC,EAAE,OAAOT,SAAS;IAEzD,MAAMuB,UAAU,GAAGd,OAAO,CAACe,MAAM,KAAK7C,aAAa;IACnD,MAAM8C,cAAc,GAAG,CAACF,UAAU,IAAIf,SAAS,KAAKnB,aAAa;IACjE,IACEoC,cAAc,IACdvC,iBAAiB,IACjB/C,uBAAuB,CAACgD,gBAAgB,EAAE6C,eAAe,CAAC,EAC1D;MACA,OAAOhC,SAAS;IAClB;IAEA,OAAOyD,aAAa;EACtB,CAAC,EACD,CACExE,cAAc,EACdpB,wBAAwB,EACxBc,aAAa,EACbU,aAAa,EACbH,iBAAiB,EACjBC,gBAAgB,EAAE6C,eAAe,EACjCjD,WAAW,CAEf,CAAC;EAED,MAAMgF,kBAAkB,GAAGlJ,WAAW,CAAC,MAAM;IAC3C,IAAIgI,OAAO,EAAE;MACXC,OAAO,CAACkB,GAAG,CAAC,uCAAuC,EAAE;QACnDhG,UAAU;QACVD,cAAc;QACdkG,QAAQ,EAAEjG,UAAU,IAAI,CAACD;MAC3B,CAAC,CAAC;IACJ;IACA,IAAIC,UAAU,IAAI,CAACD,cAAc,EAAE;MACjCD,aAAa,GAAG,IAAI,CAAC;IACvB;EACF,CAAC,EAAE,CAACE,UAAU,EAAED,cAAc,EAAED,aAAa,CAAC,CAAC;EAE/C,MAAMoG,gBAAgB,GAAGrJ,WAAW,CAAC,MAAM;IACzC,IAAIsD,UAAU,IAAI,CAACD,cAAc,EAAE;MACjCD,aAAa,GAAG,IAAI,CAAC;IACvB;EACF,CAAC,EAAE,CAACE,UAAU,EAAED,cAAc,EAAED,aAAa,CAAC,CAAC;EAE/C,MAAMkG,YAAY,GAAGtJ,WAAW,CAC7BuJ,CAAM,IAAK;IACV,MAAM;MAAEC,aAAa;MAAEC,WAAW;MAAEC;IAAkB,CAAC,GAAGH,CAAC,CAACI,WAAW;IACvE,MAAMC,UAAU,GACdJ,aAAa,CAACtD,CAAC,GAAGwD,iBAAiB,CAACvD,MAAM,IAC1CsD,WAAW,CAACtD,MAAM,GAAG,GAAG;;IAE1B;IACA,IAAIjB,iBAAiB,CAACY,OAAO,EAAE;MAC7B+D,YAAY,CAAC3E,iBAAiB,CAACY,OAAO,CAAC;IACzC;IAEAZ,iBAAiB,CAACY,OAAO,GAAGgE,UAAU,CAAC,MAAM;MAC3C,IAAI7E,aAAa,CAACa,OAAO,KAAK8D,UAAU,EAAE;QACxC3E,aAAa,CAACa,OAAO,GAAG8D,UAAU;QAClC5E,aAAa,CAAC+E,KAAK,GAAGpJ,UAAU,CAACiJ,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE;UACnDI,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MACA,IAAIJ,UAAU,EAAE;QACd3H,cAAc,CAACgI,sBAAsB,CAAClH,cAAc,IAAI,EAAE,CAAC;MAC7D;IACF,CAAC,EAAE,EAAE,CAAC;EACR,CAAC,EACD,CAACiC,aAAa,EAAEjC,cAAc,CAChC,CAAC;EAED,MAAMmH,oBAAoB,GAAGlK,WAAW,CAAC,MAAM;IAC7C,IAAIsD,UAAU,EAAE;MACdL,aAAa,GAAG,KAAK,CAAC;IACxB,CAAC,MAAM;MACLW,kBAAkB,CAAC;QAAEuG,QAAQ,EAAE,IAAI;QAAEC,aAAa,EAAE;MAAM,CAAC,CAAC;MAC5DpF,aAAa,CAAC+E,KAAK,GAAGpJ,UAAU,CAAC,CAAC,EAAE;QAAEqJ,QAAQ,EAAE;MAAI,CAAC,CAAC;MACtD/E,aAAa,CAACa,OAAO,GAAG,IAAI;MAC5BP,YAAY,CAAC,KAAK,CAAC;IACrB;EACF,CAAC,EAAE,CAACjC,UAAU,EAAEL,aAAa,EAAEW,kBAAkB,EAAEoB,aAAa,CAAC,CAAC;EAElE,MAAMqF,mBAAmB,GAAG3J,gBAAgB,CAAC,OAAO;IAClD4J,OAAO,EAAEtF,aAAa,CAAC+E,KAAK;IAC5BQ,aAAa,EAAEvF,aAAa,CAAC+E,KAAK,KAAK,CAAC,GAAG,MAAM,GAAG;EACtD,CAAC,CAAC,CAAC;;EAEH;EACA7J,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACX,IAAIgF,iBAAiB,CAACY,OAAO,EAAE;QAC7B+D,YAAY,CAAC3E,iBAAiB,CAACY,OAAO,CAAC;MACzC;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN5F,SAAS,CAAC,MAAM;IACd,MAAMsK,kBAAkB,GAAGnK,kBAAkB,CAACoK,WAAW,CACvD9I,SAAS,CAAC+I,cAAc,EACxBR,oBACF,CAAC;IAED,MAAMS,YAAY,GAAGtK,kBAAkB,CAACoK,WAAW,CACjD9I,SAAS,CAACiJ,eAAe,EACzB,CAAC;MAAEC;IAAwC,CAAC,KAAK;MAC/C,MAAMpE,KAAK,GAAG3D,QAAQ,CAACgI,SAAS,CAC7BC,CAAC,IAAKA,CAAC,CAACpG,WAAW,KAAKkG,eAC3B,CAAC;MAED,IAAIpE,KAAK,IAAI,CAAC,EAAE;QACd,IAAI;UACF/C,OAAO,CAACoC,OAAO,EAAEkF,aAAa,CAAC;YAC7BvE,KAAK;YACL0D,QAAQ,EAAE,IAAI;YACdc,YAAY,EAAE;UAChB,CAAC,CAAC;QACJ,CAAC,CAAC,MAAM;UACN;UACAxF,cAAc,CAAC;YACbD,eAAe;YACfzC,cAAc;YACdmI,gBAAgB,EAAEL;UACpB,CAAC,CAAC;QACJ;QACA;MACF;MAEApF,cAAc,CAAC;QACbD,eAAe;QACfzC,cAAc;QACdmI,gBAAgB,EAAEL;MACpB,CAAC,CAAC;IACJ,CACF,CAAC;IAED,OAAO,MAAM;MACXL,kBAAkB,CAACW,MAAM,CAAC,CAAC;MAC3BR,YAAY,CAACQ,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CACDrI,QAAQ,EACR0C,eAAe,EACfC,cAAc,EACd1C,cAAc,EACdiC,aAAa,EACbkF,oBAAoB,EACpBxG,OAAO,CACR,CAAC;;EAEF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,oBACEjB,KAAA,CAAC5B,UAAU,CAACwG,IAAI;IAAC+D,IAAI;IAACC,UAAU,EAAEvK,OAAO,CAACwK,KAAM;IAAC7D,KAAK,EAAES,MAAM,CAACqD,SAAU;IAAAnE,QAAA,gBACvE7E,IAAA,CAAC3B,uBAAuB;MACtB0G,GAAG,EAAE5D,OAAQ;MACb6E,IAAI,EAAEzF,QAAS;MACfyD,UAAU,EAAEA,UAAW;MACvBiF,iBAAiB,EAAE,GAAI;MACvBhD,WAAW,EAAEA,WAAY;MACzBG,gBAAgB,EAAEA,gBAAiB;MACnC8C,YAAY,EAAGjF,IAAI,IAAKkF,MAAM,CAAClF,IAAI,CAAC7B,WAAW,IAAI6B,IAAI,CAAC5B,WAAW,CAAE;MACrE+G,YAAY,EAAE,KAAM;MACpBC,SAAS,EAAE,GAAGtH,gBAAgB,EAAE6C,eAAe,EAAE0E,EAAE,IAAI,EAAE,IAAIrH,aAAa,IAAI,EAAE,EAAG;MACnFsH,eAAe;MACfC,8BAA8B,EAAEzD,6BAA8B;MAC9D0D,mBAAmB,EAAE,IAAK;MAC1BrI,MAAM,EAAEA,MAAO;MACfE,cAAc,EAAEA,cAAe;MAC/BoI,mBAAmB,EAAE,EAAG;MACxBC,QAAQ,EAAE5C,YAAa;MACvB6C,qBAAqB,EAAEjE,MAAM,CAACkE,OAAQ;MACtCC,qBAAqB,EAAE;QAAEC,KAAK,EAAE;MAAE,CAAE;MACpCC,mBAAmB,eACjBhK,IAAA,CAACnB,qBAAqB;QAACoL,SAAS,EAAEtJ;MAAe,CAAE,CACpD;MACDuJ,cAAc,EAAEvD,kBAAmB;MACnCwD,uBAAuB,EAAE,GAAI;MAC7BC,YAAY,EAAEtD,gBAAiB;MAC/BuD,qBAAqB,EAAE,GAAI;MAC3BC,4BAA4B,EAAE,KAAM;MACpCC,kBAAkB;IAAA,CACnB,CAAC,eACFvK,IAAA,CAAC/B,QAAQ,CAAC6G,IAAI;MACZI,KAAK,EAAE,CAACS,MAAM,CAAC6E,oBAAoB,EAAE1C,mBAAmB,CAAE;MAAAjD,QAAA,eAE1D3E,KAAA,CAAC5B,UAAU,CAACmM,SAAS;QACnBC,OAAO,EAAE/C,oBAAqB;QAC9BgD,aAAa,EAAE,GAAI;QACnBzF,KAAK,EAAES,MAAM,CAACiF,WAAY;QAC1BC,UAAU;QACVC,kBAAkB,EAAC,2BAA2B;QAC9CC,iBAAiB,EAAC,QAAQ;QAAAlG,QAAA,gBAE1B7E,IAAA,CAACvB,MAAM,CAACoH,IAAI;UACVX,KAAK,EAAES,MAAM,CAACqF,kBAAmB;UACjCF,kBAAkB,EAAC,EAAE;UAAAjG,QAAA,EACtB;QAED,CAAa,CAAC,EACb9B,SAAS,iBAAI/C,IAAA,CAAC1B,UAAU,CAACwG,IAAI;UAACI,KAAK,EAAES,MAAM,CAACsF;QAAM,CAAE,CAAC;MAAA,CAClC;IAAC,CACV,CAAC;EAAA,CACD,CAAC;AAEtB,CACF,CAAC;AAED3K,cAAc,CAAC4K,WAAW,GAAG,gBAAgB;AAE7C,MAAMvF,MAAM,GAAG5H,UAAU,CAACoN,MAAM,CAAC;EAC/BnC,SAAS,EAAE;IACToC,QAAQ,EAAE;EACZ,CAAC;EACDvB,OAAO,EAAE;IACPwB,eAAe,EAAE7M,aAAa,CAAC,SAAS,CAAC;IACzC8M,QAAQ,EAAE;EACZ,CAAC;EACDd,oBAAoB,EAAE;IACpBY,QAAQ,EAAE,UAAU;IACpBG,MAAM,EAAE,EAAE;IACVxB,KAAK,EAAE,EAAE;IACTyB,MAAM,EAAE;EACV,CAAC;EACDZ,WAAW,EAAE;IACXQ,QAAQ,EAAE,UAAU;IACpBxJ,KAAK,EAAE,EAAE;IACTgC,MAAM,EAAE,EAAE;IACV6H,YAAY,EAAE,EAAE;IAChBC,eAAe,EAAEnN,OAAO,CAACwK,KAAK;IAC9B4C,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,WAAW,EAAEtN,OAAO,CAACuN,KAAK;IAC1BC,YAAY,EAAE;MAAEnK,KAAK,EAAE,CAAC;MAAEgC,MAAM,EAAE;IAAE,CAAC;IACrCoI,aAAa,EAAE,IAAI;IACnBC,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE;EACb,CAAC;EACDlB,kBAAkB,EAAE;IAClBmB,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,KAAK,EAAE9N,OAAO,CAAC+N,OAAO,CAACC,OAAO,CAACC;EACjC,CAAC;EACD5G,QAAQ,EAAE;IACR6G,OAAO,EAAE,EAAE;IACXd,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDX,KAAK,EAAE;IACLG,QAAQ,EAAE,UAAU;IACpBsB,GAAG,EAAE,CAAC,CAAC;IACP3C,KAAK,EAAE,CAAC,CAAC;IACTnI,KAAK,EAAE,EAAE;IACTgC,MAAM,EAAE,EAAE;IACV6H,YAAY,EAAE,CAAC;IACfC,eAAe,EAAEnN,OAAO,CAAC+N,OAAO,CAACC,OAAO,CAACC,IAAI;IAC7CG,WAAW,EAAE,CAAC;IACdC,WAAW,EAAErO,OAAO,CAACwK;EACvB;AACF,CAAC,CAAC","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,iCAyFnD,CAAC"}
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;AAKvD,eAAO,MAAM,cAAc,oDAAsB,sBAAsB,iCAUrE,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,iCA+IpC,CAAC;AAGH,eAAe,WAAW,CAAC"}
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":"AA0CA,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,gCA+OlD,CAAC;AAIF,eAAe,iBAAiB,CAAC"}
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;AAEf,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;AAkB7C,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,iCAgY/B,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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@droppii-org/chat-mobile",
3
- "version": "0.2.55",
3
+ "version": "0.2.57",
4
4
  "description": "Droppii chat mobile",
5
5
  "keywords": [
6
6
  "react-native",
@@ -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
- // Fallback dims from onLoad when metadata is missing (zero extra request)
58
- const cachedDims = rawImageUrl
59
- ? (dimsCache.get(rawImageUrl) ?? null)
60
- : null;
61
- const [loadedDims, setLoadedDims] = useState<{
62
- width: number;
63
- height: number;
64
- } | null>(cachedDims);
65
-
66
- const imageDimensions = useMemo(() => {
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
- const dims = { width, height };
81
- if (rawImageUrl) cacheDims(rawImageUrl, dims);
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
- const sub = BackHandler.addEventListener('hardwareBackPress', () => {
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.url}-${i}`, []);
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 !== false}>
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 { DeviceEventEmitter, StyleSheet, type View } from 'react-native';
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
- animated: false,
245
- on: {
246
- dataChange: !moreOldLoading,
247
- layout: !moreOldLoading,
248
- // Must be disabled while prepending older history; otherwise re-measuring
249
- // the freshly prepended items snaps the list back to the bottom.
250
- itemLayout: !moreOldLoading,
251
- },
252
- }),
253
- [moreOldLoading]
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 timeouts on unmount
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={avgItemHeightRef.current}
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={maintainScrollConfig}
485
+ maintainScrollAtEnd={true}
412
486
  freeze={freeze}
413
487
  keyboardOffset={keyboardOffset}
414
488
  scrollEventThrottle={16}