66 lines
2.7 KiB
TypeScript
66 lines
2.7 KiB
TypeScript
// Metro module 14070 (f14071).
|
|
import { useCallback } from "react";
|
|
import { Pressable, View } from "react-native";
|
|
import { END_CARD_IMAGE_SIZE } from "./BountyConstants";
|
|
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
|
|
import Module712 from "../../../../_bundle/Module712";
|
|
import { useGetQuestImpressionId } from "../../lib/analytics/ContentImpressionTrackerHooks";
|
|
import { getBountyCtaInfo } from "./BountyCtaHelpers";
|
|
import { getScaledImageUrl } from "../../lib/AssetUtils";
|
|
import { openAdGameLinkDirectly } from "../../utils/QuestPlatformUtils";
|
|
import { AdCreativeType } from "../../../../_bundle/Module6013";
|
|
import { QuestContent } from "../../../../_bundle/Module5038";
|
|
import { QuestContentCTA } from "../../lib/analytics/AnalyticsTypes";
|
|
import FastImage from "../../../../components_native/common/FastImage";
|
|
import { Text } from "../../../../design/components/Text/native/Text";
|
|
const useStyles = createStyles(() => ({
|
|
image: {
|
|
width: END_CARD_IMAGE_SIZE,
|
|
height: END_CARD_IMAGE_SIZE,
|
|
borderRadius: Module712.radii.xl,
|
|
borderWidth: 1,
|
|
borderColor: Module712.colors.BORDER_MUTED
|
|
},
|
|
info: {
|
|
gap: Module712.space.PX_4,
|
|
alignItems: "center",
|
|
marginTop: Module712.space.PX_12
|
|
},
|
|
ctaContainer: {
|
|
position: "relative",
|
|
alignItems: "center"
|
|
}
|
|
}));
|
|
export default function BountiesEndCardPressableCta(props) {
|
|
const { bounty, sourceQuestContent, disabled = false } = props;
|
|
const styles = useStyles();
|
|
const getQuestImpressionId = useGetQuestImpressionId();
|
|
const bountyCtaInfo = getBountyCtaInfo(bounty);
|
|
const uri = bountyCtaInfo.iconImageUri != null ? getScaledImageUrl({
|
|
assetUrl: bountyCtaInfo.iconImageUri,
|
|
width: END_CARD_IMAGE_SIZE,
|
|
height: END_CARD_IMAGE_SIZE
|
|
}) : void 0;
|
|
const callback = useCallback(() => {
|
|
openAdGameLinkDirectly({
|
|
adContentId: bounty.id,
|
|
adCreativeType: AdCreativeType.BOUNTY,
|
|
cta: bounty.cta
|
|
}, {
|
|
content: QuestContent.VIDEO_MODAL_ICON_END_CARD,
|
|
ctaContent: QuestContentCTA.OPEN_GAME_LINK,
|
|
impressionId: getQuestImpressionId(),
|
|
sourceQuestContent
|
|
});
|
|
}, [bounty.id, bounty.cta, getQuestImpressionId, sourceQuestContent]);
|
|
return <Pressable onPress={disabled ? void 0 : callback} disabled={disabled} hitSlop={16} accessibilityRole="button" accessibilityLabel={bountyCtaInfo.label} style={styles.ctaContainer}>
|
|
<FastImage source={{
|
|
uri
|
|
}} style={styles.image} />
|
|
<View style={styles.info}>
|
|
<Text variant="text-md/semibold" color="text-strong">{bountyCtaInfo.label}</Text>
|
|
<Text variant="text-sm/medium" color="text-default">{bountyCtaInfo.subtext}</Text>
|
|
</View>
|
|
</Pressable>;
|
|
};
|