Files
discord-decomp/modules/quests/native/BountiesModal/BountiesEndCardPressableCta.tsx
T
2026-11-01 12:12:55 +02:00

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>;
};