import React, { useEffect, useState } from 'react'; import { gestureHandlerRootHOC } from 'react-native-gesture-handler'; import Animated from 'react-native-reanimated'; import type { ImageElementType, ViewGestureHandlerRootHOCProps } from './types'; import type { ImageErrorEventData, ImageLoadEventData, NativeSyntheticEvent } from 'react-native'; import ErrorComponent from './ErrorComponent'; const ViewGestureHandlerRootHOC = gestureHandlerRootHOC( ({ imageUri, bgColor, transXYStyle, token, tokenHeader, requestMethod }: ViewGestureHandlerRootHOCProps) => { const [isError, setIsError] = useState(false); const [thisImage, setThisImage] = useState(undefined); useEffect(()=>{ if(imageUri?.uri) { if(token) { setThisImage( { uri : imageUri?.uri?.trim(), headers : { auth : `${tokenHeader?.trim()} ${token?.trim()}`, Authorization : `${tokenHeader?.trim()} ${token?.trim()}` }, method : requestMethod } ) }else{ setThisImage(imageUri); } } },[imageUri]) const onImageLoadedHandler = (e : NativeSyntheticEvent) => { if(isError && ( e?.nativeEvent?.source?.width >= 0) ) { setIsError(false); } } const onImageErrorHandler = (error: NativeSyntheticEvent) => { console.log("[SimpleImageViewer] error : " , error?.nativeEvent?.error); setIsError(true); } return thisImage?.uri ? ( { (isError) ? : } ) : null; } ); export default ViewGestureHandlerRootHOC;