Files
super-app/components/StyledImage.tsx

47 lines
1.3 KiB
TypeScript
Raw Permalink Normal View History

import React from "react";
import { ImageFieldData } from "../App/common/interface/widgets/widgetData/TitleWidgetData";
2024-10-24 11:52:11 +05:30
import { Image, TouchableOpacity } from "react-native";
import { CtaData } from "../App/common/interface";
import { GenericActionPayload } from "../App/common/actions/GenericAction";
export const StyledImage = ({
imageFieldData,
handleClick,
handleActions,
}: {
imageFieldData: ImageFieldData;
handleClick?: (ctaData: CtaData) => void;
handleActions?: (
value: any | undefined | null,
actionPayloadList: GenericActionPayload | undefined,
) => void;
}) => {
2024-05-07 12:21:20 +05:30
if (!imageFieldData?.url) return <></>;
const { cta, actions } = imageFieldData;
const isInteractive = (cta && handleClick) || (actions && handleActions);
const handleImageClick = () => {
if (actions && handleActions) {
handleActions(null, actions);
} else if (cta && handleClick) {
handleClick(cta);
}
};
return isInteractive ? (
<TouchableOpacity activeOpacity={1} onPress={handleImageClick}>
<Image
source={{ uri: imageFieldData?.url }}
style={imageFieldData?.imageStyle}
/>
</TouchableOpacity>
) : (
<Image
source={{ uri: imageFieldData?.url }}
style={imageFieldData?.imageStyle}
/>
);
};