@@ -392,10 +392,26 @@ const CallImagesModal: React.FC<CallImagesModalProps> = ({ isOpen, onClose, call
392392 }
393393 } ;
394394
395- const handleImageError = ( itemId : string , error : any ) => {
395+ const handleImageError = useCallback ( ( itemId : string , error : any ) => {
396396 console . error ( `Image failed to load for ${ itemId } :` , error ) ;
397397 setImageErrors ( ( prev ) => new Set ( [ ...prev , itemId ] ) ) ;
398- } ;
398+ } , [ ] ) ;
399+
400+ const handleImagePress = useCallback ( ( imageSource : { uri : string } , itemName ?: string ) => {
401+ setFullScreenImage ( { source : imageSource , name : itemName } ) ;
402+ } , [ ] ) ;
403+
404+ const handleImageLoadError = useCallback ( ( itemId : string ) => {
405+ handleImageError ( itemId , 'expo-image load error' ) ;
406+ } , [ handleImageError ] ) ;
407+
408+ const handleImageLoadSuccess = useCallback ( ( itemId : string ) => {
409+ setImageErrors ( ( prev ) => {
410+ const newSet = new Set ( prev ) ;
411+ newSet . delete ( itemId ) ;
412+ return newSet ;
413+ } ) ;
414+ } , [ ] ) ;
399415
400416 // Reset active index when valid images change
401417
@@ -438,9 +454,7 @@ const CallImagesModal: React.FC<CallImagesModalProps> = ({ isOpen, onClose, call
438454 return (
439455 < Box className = "w-full items-center justify-center px-4" style = { { width } } >
440456 < TouchableOpacity
441- onPress = { ( ) => {
442- setFullScreenImage ( { source : imageSource , name : item . Name } ) ;
443- } }
457+ onPress = { ( ) => handleImagePress ( imageSource , item . Name ) }
444458 testID = { `image-${ item . Id } -touchable` }
445459 activeOpacity = { 0.7 }
446460 style = { { width : '100%' } }
@@ -456,17 +470,8 @@ const CallImagesModal: React.FC<CallImagesModalProps> = ({ isOpen, onClose, call
456470 pointerEvents = "none"
457471 cachePolicy = "memory-disk"
458472 recyclingKey = { item . Id }
459- onError = { ( ) => {
460- handleImageError ( item . Id , 'expo-image load error' ) ;
461- } }
462- onLoad = { ( ) => {
463- // Remove from error set if it loads successfully
464- setImageErrors ( ( prev ) => {
465- const newSet = new Set ( prev ) ;
466- newSet . delete ( item . Id ) ;
467- return newSet ;
468- } ) ;
469- } }
473+ onError = { ( ) => handleImageLoadError ( item . Id ) }
474+ onLoad = { ( ) => handleImageLoadSuccess ( item . Id ) }
470475 />
471476 </ TouchableOpacity >
472477 < Text className = "mt-2 text-center font-medium" > { item . Name || '' } </ Text >
0 commit comments