150 lines
7.4 KiB
TypeScript
150 lines
7.4 KiB
TypeScript
// Metro module 14069 (f14070).
|
|
import { useCallback } from "react";
|
|
import { Pressable, StyleSheet, View } from "react-native";
|
|
import AccessibilityStore from "../../../a11y/AccessibilityStore";
|
|
import { QuestsExperimentLocations } from "../../QuestConstants";
|
|
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 { useIsBountiesVerticalScrollExperimentEnabled } from "../../experiments/BountiesVerticalScrollExperiment";
|
|
import { getBountyCtaInfo } from "./BountyCtaHelpers";
|
|
import * as _index_native from "../../../../intl/index.native";
|
|
import { intl } from "../../../../intl/index.native";
|
|
import ReanimatedRexport, { useAnimatedStyle } from "../../../reanimated/ReanimatedRexport";
|
|
import Module4611 from "../../../../_bundle/Module4611";
|
|
import BountiesEndCardPressableCta from "./BountiesEndCardPressableCta";
|
|
import BountiesModalEndedCtaButtons from "./BountiesModalEndedCtaButtons";
|
|
import { Text } from "../../../../design/components/Text/native/Text";
|
|
import { RetryIcon } from "../../../../design/components/Icon/native/redesign/generated/RetryIcon";
|
|
import { useIsBountiesModalTransitionsRefactorEnabled } from "../../experiments/BountiesModalTransitionsRefactorExperiment";
|
|
import { useStateFromStores } from "../../../../_bundle/Module589";
|
|
import { useVisibilityTransition } from "./useVisibilityTransition";
|
|
import AnimatedEnterExitItem from "../../../../design/components/AnimatedEnterExitItem/native/AnimatedEnterExitItem";
|
|
let useStyles, t, n, __initData;
|
|
const BountiesScrollEndCardContent = function BountiesScrollEndCardContent(props) {
|
|
const { bounty, visible, onReplay, isActive, isScrollingInBoundsSharedValue, sourceQuestContent, opacityStyle } = props;
|
|
const styles = useStyles();
|
|
const isBountiesVerticalScrollExperimentEnabled = useIsBountiesVerticalScrollExperimentEnabled("BountiesScrollEndCard");
|
|
const bountyCtaInfo = getBountyCtaInfo(bounty);
|
|
const accessibilityLabel = intl.string(_index_native.t["9UtZAY"]);
|
|
const y = function y() {
|
|
const r4 = isScrollingInBoundsSharedValue == null ? void 0 : isScrollingInBoundsSharedValue.get();
|
|
return {
|
|
opacity: _timing.withTiming(isActive ? r4 !== true ? 1 : 0 : 0, _timingPresets.timingStandard)
|
|
};
|
|
};
|
|
y.__closure = {
|
|
isScrollingInBoundsSharedValue,
|
|
withTiming: _timing.withTiming,
|
|
isActive,
|
|
timingStandard: _timingPresets.timingStandard
|
|
};
|
|
y.__workletHash = 4903386092677;
|
|
y.__initData = __initData;
|
|
const animatedStyle = useAnimatedStyle(y);
|
|
return <ReanimatedRexport.View style={[styles.container, opacityStyle]} pointerEvents="box-none">
|
|
<View style={styles.backdropTint} pointerEvents="none" />
|
|
<Module4611 colors={["rgba(0, 0, 0, 0.48)", "rgba(0, 0, 0, 0.8)"]} style={styles.backdropGradient} pointerEvents="none" />
|
|
{isBountiesVerticalScrollExperimentEnabled ? <ReanimatedRexport.View style={[styles.overlayContent, animatedStyle]} pointerEvents="box-none">
|
|
<BountiesEndCardPressableCta bounty={bounty} sourceQuestContent={sourceQuestContent} disabled={!isActive} />
|
|
<View style={styles.endedCtaButtonsContainer} pointerEvents="box-none">
|
|
<BountiesModalEndedCtaButtons bounty={bounty} visible={visible} sourceQuestContent={sourceQuestContent} onClose={() => {}} showCloseButton={false} disabled={!isActive} />
|
|
</View>
|
|
</ReanimatedRexport.View> : <Pressable onPress={isActive ? onReplay : void 0} disabled={!isActive} accessibilityRole="button" accessibilityLabel={accessibilityLabel} style={styles.pressable}>
|
|
<ReanimatedRexport.View style={[styles.overlayContent, animatedStyle]}>
|
|
<View style={styles.textBlock}>
|
|
<Text variant="heading-md/semibold" color="text-strong">{bountyCtaInfo.label}</Text>
|
|
<Text variant="heading-sm/medium" color="text-default">{accessibilityLabel}</Text>
|
|
</View>
|
|
<RetryIcon accessible={false} color={Module712.colors.CONTROL_OVERLAY_SECONDARY_TEXT_DEFAULT} style={styles.replayIcon} />
|
|
</ReanimatedRexport.View>
|
|
</Pressable>}
|
|
</ReanimatedRexport.View>;
|
|
};
|
|
useStyles = createStyles(() => ({
|
|
container: {
|
|
...StyleSheet.absoluteFillObject
|
|
},
|
|
backdropTint: {
|
|
...StyleSheet.absoluteFillObject,
|
|
backgroundColor: "rgba(0, 0, 0, 0.6)"
|
|
},
|
|
backdropGradient: {
|
|
...StyleSheet.absoluteFillObject
|
|
},
|
|
overlayContent: {
|
|
...StyleSheet.absoluteFillObject,
|
|
justifyContent: "center",
|
|
alignItems: "center"
|
|
},
|
|
pressable: {
|
|
...StyleSheet.absoluteFillObject,
|
|
justifyContent: "center",
|
|
alignItems: "center"
|
|
},
|
|
textBlock: {
|
|
alignItems: "center",
|
|
gap: Module712.space.PX_4
|
|
},
|
|
replayIcon: {
|
|
margin: Module712.space.PX_12
|
|
},
|
|
endedCtaButtonsContainer: {
|
|
position: "absolute",
|
|
left: Module712.space.PX_16,
|
|
right: Module712.space.PX_16,
|
|
bottom: Module712.space.PX_16
|
|
}
|
|
}));
|
|
const r36 = function t(a0) {
|
|
return {
|
|
opacity: _timing.withTiming(a0, _timingPresets.timingStandard, "respect-motion-settings")
|
|
};
|
|
};
|
|
r36.__closure = {
|
|
withTiming: _timing.withTiming,
|
|
timingStandard: _timingPresets.timingStandard
|
|
};
|
|
r36.__workletHash = 12127714049951;
|
|
r36.__initData = {
|
|
code: "function BountiesScrollEndCardTsx1(visible){const{withTiming,timingStandard}=this.__closure;return{opacity:withTiming(visible,timingStandard,'respect-motion-settings')};}"
|
|
};
|
|
t = r36;
|
|
const r45 = function n(a0, a1) {
|
|
return {
|
|
opacity: _timing.withTiming(a0, _timingPresets.timingStandard, "respect-motion-settings", a1)
|
|
};
|
|
};
|
|
r45.__closure = {
|
|
withTiming: _timing.withTiming,
|
|
timingStandard: _timingPresets.timingStandard
|
|
};
|
|
r45.__workletHash = 7470211880124;
|
|
r45.__initData = {
|
|
code: "function BountiesScrollEndCardTsx2(visible,cleanUp){const{withTiming,timingStandard}=this.__closure;return{opacity:withTiming(visible,timingStandard,'respect-motion-settings',cleanUp)};}"
|
|
};
|
|
n = r45;
|
|
__initData = {
|
|
code: "function BountiesScrollEndCardTsx3(){const{isScrollingInBoundsSharedValue,withTiming,isActive,timingStandard}=this.__closure;var _isScrollingInBoundsS;const isScrollingInBounds=((_isScrollingInBoundsS=isScrollingInBoundsSharedValue)===null||_isScrollingInBoundsS===void 0?void 0:_isScrollingInBoundsS.get())===true;return{opacity:withTiming(isActive&&!isScrollingInBounds?1:0,timingStandard)};}"
|
|
};
|
|
export default function BountiesScrollEndCard(props) {
|
|
const visible = props.visible;
|
|
const isBountiesModalTransitionsRefactorEnabled = useIsBountiesModalTransitionsRefactorEnabled(QuestsExperimentLocations.VIDEO_MODAL_MOBILE);
|
|
const stateFromStores = useStateFromStores([AccessibilityStore], () => AccessibilityStore.useReducedMotion);
|
|
const callback = useCallback((a0, a1) => <BountiesScrollEndCardContent {...a0} opacityStyle={a1} />, []);
|
|
const visibilityTransition = useVisibilityTransition({
|
|
visible,
|
|
entranceTiming: _timingPresets.timingStandard,
|
|
exitTiming: _timingPresets.timingStandard
|
|
});
|
|
const opacityStyle = visibilityTransition.opacityStyle;
|
|
let shouldRender = visibilityTransition.shouldRender;
|
|
if (isBountiesModalTransitionsRefactorEnabled) {
|
|
shouldRender = <AnimatedEnterExitItem useReducedMotion={stateFromStores} item={visible ? props : void 0} entering={t} exiting={n} renderItem={callback} />;
|
|
} else if (shouldRender) {
|
|
shouldRender = <BountiesScrollEndCardContent {...props} opacityStyle={opacityStyle} />;
|
|
}
|
|
return shouldRender;
|
|
};
|