192 lines
8.5 KiB
TypeScript
192 lines
8.5 KiB
TypeScript
// Metro module 14066 (f14067).
|
|
import { useCallback } from "react";
|
|
import { StyleSheet, View, Pressable } from "react-native";
|
|
import AccessibilityStore from "../../../a11y/AccessibilityStore";
|
|
import { QuestsExperimentLocations } from "../../QuestConstants";
|
|
import * as _ReanimatedRexport from "../../../reanimated/ReanimatedRexport";
|
|
import ReanimatedRexport, { useSharedValue, useAnimatedStyle } from "../../../reanimated/ReanimatedRexport";
|
|
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
|
|
import Module712 from "../../../../_bundle/Module712";
|
|
import * as _timing from "../../../../design/animation/reanimated/timing/timing";
|
|
import * as _timingPresets from "../../../../design/animation/reanimated/timing/timingPresets";
|
|
import { getBountyCtaInfo } from "./BountyCtaHelpers";
|
|
import { getScaledImageUrl } from "../../lib/AssetUtils";
|
|
import { useButtonPressAnimationProps } from "../../../../design/components/Button/native/ButtonHooks.native";
|
|
import { useGetQuestImpressionId } from "../../lib/analytics/ContentImpressionTrackerHooks";
|
|
import { openAdGameLinkDirectly } from "../../utils/QuestPlatformUtils";
|
|
import { AdCreativeType } from "../../../../_bundle/Module6013";
|
|
import { QuestContentCTA } from "../../lib/analytics/AnalyticsTypes";
|
|
import { QuestContent } from "../../../../_bundle/Module5038";
|
|
import { BackgroundBlurView } from "../../../../design/components/experimental/BackgroundBlurView/native/BackgroundBlurView.native";
|
|
import FastImage from "../../../../components_native/common/FastImage";
|
|
import { Text } from "../../../../design/components/Text/native/Text";
|
|
import { Button } from "../../../../design/components/Button/native/Button.native";
|
|
import { useIsBountiesModalTransitionsRefactorEnabled } from "../../experiments/BountiesModalTransitionsRefactorExperiment";
|
|
import { useStateFromStores } from "../../../../_bundle/Module589";
|
|
import { useVisibilityTransition } from "./useVisibilityTransition";
|
|
import AnimatedEnterExitItem from "../../../../design/components/AnimatedEnterExitItem/native/AnimatedEnterExitItem";
|
|
let _excluded, AnimatedComponent, useStyles, n, s2, __initData;
|
|
const BountiesModalAdvertiserCtaContent = function BountiesModalAdvertiserCtaContent(props) {
|
|
const { bounty, sourceQuestContent, opacityStyle, transformStyle } = props;
|
|
const styles = useStyles();
|
|
const bountyCtaInfo = getBountyCtaInfo(bounty);
|
|
const uri = bountyCtaInfo.iconImageUri != null ? getScaledImageUrl({
|
|
assetUrl: bountyCtaInfo.iconImageUri,
|
|
width: 40,
|
|
height: 40
|
|
}) : void 0;
|
|
const sharedValue = useSharedValue(0);
|
|
const buttonPressAnimationProps = useButtonPressAnimationProps(sharedValue);
|
|
const { style, ...rest } = buttonPressAnimationProps;
|
|
const getQuestImpressionId = useGetQuestImpressionId();
|
|
const callback = useCallback((a0) => {
|
|
openAdGameLinkDirectly({
|
|
adContentId: bounty.id,
|
|
adCreativeType: AdCreativeType.BOUNTY,
|
|
cta: bounty.cta
|
|
}, {
|
|
content: a0,
|
|
ctaContent: QuestContentCTA.OPEN_GAME_LINK,
|
|
impressionId: getQuestImpressionId(),
|
|
sourceQuestContent
|
|
});
|
|
}, [bounty.id, bounty.cta, sourceQuestContent, getQuestImpressionId]);
|
|
return <ReanimatedRexport.View style={[styles.outerContainer, opacityStyle, transformStyle]}>
|
|
<AnimatedComponent {...rest} onPress={useCallback(() => {
|
|
callback(QuestContent.VIDEO_MODAL_MOBILE);
|
|
}, [callback])} accessibilityRole="button" accessibilityLabel={bountyCtaInfo.label} style={[styles.ctaPressable, style]}>
|
|
<BackgroundBlurView blurTheme="dark" style={styles.cta} pressed={sharedValue}>
|
|
<View style={styles.ctaLogoContainer}>
|
|
<FastImage source={{
|
|
uri
|
|
}} style={styles.ctaLogo} resizeMode="cover" />
|
|
</View>
|
|
<View style={styles.ctaInfo}>
|
|
<Text lineClamp={2} variant="text-sm/semibold" color="text-default">{bountyCtaInfo.label}</Text>
|
|
<Text variant="text-xs/medium" color="text-default">{bountyCtaInfo.subtext}</Text>
|
|
</View>
|
|
<View accessible={false} importantForAccessibility="no-hide-descendants">
|
|
<Button variant="primary-overlay" text={bountyCtaInfo.buttonLabel} size="sm" onPress={useCallback(() => {
|
|
callback(QuestContent.VIDEO_MODAL_MOBILE_FOOTER);
|
|
}, [callback])} />
|
|
</View>
|
|
</BackgroundBlurView>
|
|
</AnimatedComponent>
|
|
</ReanimatedRexport.View>;
|
|
};
|
|
_excluded = ["style"];
|
|
AnimatedComponent = ReanimatedRexport.createAnimatedComponent(Pressable);
|
|
useStyles = createStyles(() => ({
|
|
outerContainer: {
|
|
position: "absolute",
|
|
bottom: 0,
|
|
left: 0,
|
|
right: 0,
|
|
paddingHorizontal: Module712.space.PX_16,
|
|
paddingBottom: Module712.space.PX_16,
|
|
alignItems: "center"
|
|
},
|
|
ctaPressable: {
|
|
...Module712.shadows.SHADOW_TOP_HIGH,
|
|
alignSelf: "stretch",
|
|
borderWidth: 1,
|
|
borderColor: "transparent",
|
|
borderRadius: Module712.radii.lg,
|
|
overflow: "hidden"
|
|
},
|
|
cta: {
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
paddingLeft: Module712.space.PX_12,
|
|
paddingRight: Module712.space.PX_16,
|
|
paddingVertical: Module712.space.PX_12,
|
|
gap: Module712.space.PX_12
|
|
},
|
|
ctaLogoContainer: {
|
|
width: 40,
|
|
height: 40,
|
|
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH,
|
|
borderRadius: Module712.radii.md,
|
|
overflow: "hidden"
|
|
},
|
|
ctaLogo: {
|
|
...StyleSheet.absoluteFillObject
|
|
},
|
|
ctaInfo: {
|
|
flex: 1,
|
|
justifyContent: "center",
|
|
gap: 2
|
|
}
|
|
}));
|
|
const r43 = function n(a0) {
|
|
return {
|
|
opacity: _timing.withTiming(a0, _timingPresets.timingStandard, "respect-motion-settings")
|
|
};
|
|
};
|
|
r43.__closure = {
|
|
withTiming: _timing.withTiming,
|
|
timingStandard: _timingPresets.timingStandard
|
|
};
|
|
r43.__workletHash = 2981824910249;
|
|
r43.__initData = {
|
|
code: "function BountiesModalAdvertiserCtaTsx1(visible){const{withTiming,timingStandard}=this.__closure;return{opacity:withTiming(visible,timingStandard,'respect-motion-settings')};}"
|
|
};
|
|
n = r43;
|
|
const r52 = function(a0, a1) {
|
|
return {
|
|
opacity: _timing.withTiming(a0, _timingPresets.timingFast, "respect-motion-settings", a1)
|
|
};
|
|
};
|
|
r52.__closure = {
|
|
withTiming: _timing.withTiming,
|
|
timingFast: _timingPresets.timingFast
|
|
};
|
|
r52.__workletHash = 15850601331978;
|
|
r52.__initData = {
|
|
code: "function BountiesModalAdvertiserCtaTsx2(visible,cleanUp){const{withTiming,timingFast}=this.__closure;return{opacity:withTiming(visible,timingFast,'respect-motion-settings',cleanUp)};}"
|
|
};
|
|
s2 = r52;
|
|
__initData = {
|
|
code: "function BountiesModalAdvertiserCtaTsx3(){const{withTiming,interpolate,visibility,visible,timingStandard,timingFast}=this.__closure;return{transform:[{translateY:withTiming(interpolate(visibility,[0,1],[8,0]),visible?timingStandard:timingFast)}]};}"
|
|
};
|
|
export default function BountiesModalAdvertiserCta(props) {
|
|
let c20882_1, animatedStyle;
|
|
const { visible, ...props2 } = props;
|
|
c20882_1 = void 0;
|
|
animatedStyle = void 0;
|
|
const isBountiesModalTransitionsRefactorEnabled = useIsBountiesModalTransitionsRefactorEnabled(QuestsExperimentLocations.VIDEO_MODAL_MOBILE);
|
|
const stateFromStores = useStateFromStores([AccessibilityStore], () => AccessibilityStore.useReducedMotion);
|
|
const visibility = visible ? 1 : 0;
|
|
c20882_1 = visibility;
|
|
const r32 = () => ({
|
|
transform: [{
|
|
translateY: _timing.withTiming(_ReanimatedRexport.interpolate(c20882_1, [0, 1], [8, 0]), visible ? _timingPresets.timingStandard : _timingPresets.timingFast)
|
|
}]
|
|
});
|
|
r32.__closure = {
|
|
withTiming: _timing.withTiming,
|
|
interpolate: _ReanimatedRexport.interpolate,
|
|
visibility,
|
|
visible,
|
|
timingStandard: _timingPresets.timingStandard,
|
|
timingFast: _timingPresets.timingFast
|
|
};
|
|
r32.__workletHash = 252868467367;
|
|
r32.__initData = __initData;
|
|
animatedStyle = useAnimatedStyle(r32);
|
|
const callback2 = useCallback((a0, a1) => <BountiesModalAdvertiserCtaContent {...a0} opacityStyle={a1} transformStyle={animatedStyle} />, [animatedStyle]);
|
|
const visibilityTransition = useVisibilityTransition({
|
|
visible,
|
|
entranceTiming: _timingPresets.timingStandard,
|
|
exitTiming: _timingPresets.timingFast
|
|
});
|
|
const opacityStyle = visibilityTransition.opacityStyle;
|
|
let shouldRender = visibilityTransition.shouldRender;
|
|
if (isBountiesModalTransitionsRefactorEnabled) {
|
|
shouldRender = <AnimatedEnterExitItem useReducedMotion={stateFromStores} item={visible ? props2 : void 0} entering={n} exiting={s2} renderItem={callback2} />;
|
|
} else if (shouldRender) {
|
|
shouldRender = <BountiesModalAdvertiserCtaContent {...props2} opacityStyle={opacityStyle} transformStyle={animatedStyle} />;
|
|
}
|
|
return shouldRender;
|
|
};
|