708 lines
29 KiB
TypeScript
708 lines
29 KiB
TypeScript
// Metro module 14117 (f14118).
|
|
import * as Module19 from "react";
|
|
import { useMemo, useCallback, useEffect } from "react";
|
|
import { Image as Image2, View, StyleSheet } from "react-native";
|
|
import UserStore from "../../../stores/UserStore";
|
|
import QuestStore from "../QuestStore";
|
|
import { QuestsExperimentLocations } from "../QuestConstants";
|
|
import { NOOP } from "../../../_bundle/Module505";
|
|
import { Fragment } from "react/jsx-runtime";
|
|
import Module712 from "../../../_bundle/Module712";
|
|
import { experimental_createToken, createStyles, createStyleProperties } from "../../../design/components/Styles/native/createStyles";
|
|
import * as _Module4004 from "../../../_bundle/Module4004";
|
|
import { hexOpacityToRgba } from "../../../utils/ColorUtils";
|
|
import { QuestContent } from "../QuestTypes";
|
|
import { getQuestLogger } from "../lib/getQuestLogger";
|
|
import { useTrackQuestContentClickedWithImpression } from "../lib/analytics/AnalyticsHooks";
|
|
import { useQuestTaskDetails, useQuestCompletionDetails, useQuestFormattedDate, useShouldShowBonusOrbsUX } from "../hooks/QuestHooks";
|
|
import useWindowDimensions_native from "../../screen/useWindowDimensions.native";
|
|
import { getQuestAsset, QuestAssetType, getScaledFirstFrameImageUrl, getScaledImageUrl } from "../lib/AssetUtils";
|
|
import { useQuestGameLogotypeAssetUrl, useHasWatchVideoOnMobileTasks, useMobileActivityQuest } from "./QuestHooks.native";
|
|
import { useRecyclingState } from "../../../_bundle/noop_6676";
|
|
import MonitoringAgent from "../../monitoring/MonitoringAgent";
|
|
import { MetricEvents } from "../../../_bundle/Module5872";
|
|
import { getQuestContentName, QuestContentCTA } from "../lib/analytics/AnalyticsTypes";
|
|
import { useStateFromStores, useStateFromStoresObject } from "../../../_bundle/Module589";
|
|
import * as _QuestRewardUtils from "../utils/QuestRewardUtils";
|
|
import { getDefaultRewardNameWithArticle, hasCollectiblesQuestReward, getVirtualCurrencyRewardOrbQuantity, getQuestOrbRewardQuantityForUser, getDefaultRewardName } from "../utils/QuestRewardUtils";
|
|
import * as _QuestTaskUtils from "../utils/QuestTaskUtils";
|
|
import * as _QuestDataUtils from "../utils/QuestDataUtils";
|
|
import { getIsQuestExpiredButWithinThirtyDayLookback } from "../utils/QuestDataUtils";
|
|
import { getDefaultReward, getCtaLink, getExternalCtaLabel } from "../utils/QuestCopyUtils";
|
|
import useTheme from "../../../hooks/useTheme";
|
|
import { useFetchCollectiblesProduct } from "../../collectibles/hooks/useFetchCollectiblesProduct";
|
|
import { useToken } from "../../../design/tokens/native/useToken";
|
|
import { useGetQuestImpressionId } from "../lib/analytics/ContentImpressionTrackerHooks";
|
|
import { shouldMigrateToAdAnalyticsInterface, AdAnalyticsInterfaceExperimentStep } from "../experiments/AdAnalyticsInterfaceExperiment";
|
|
import { captureAdUserAction } from "../../ads/analytics/captureAdUserAction";
|
|
import { AdUserActionType } from "../../ads/analytics/captureAdUserActionTypes";
|
|
import { AdCreativeType } from "../../../_bundle/Module6013";
|
|
import { openGameLinkDirectly } from "../utils/QuestPlatformUtils";
|
|
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
|
|
import { usePrimaryCtaCopy, useQuestDescription } from "../hooks/QuestCopyHooks";
|
|
import tinycolor from "../../../_bundle/tinycolor";
|
|
import { intl, t } from "../../../intl/index.native";
|
|
import { viewReward, handleRewardClaimThenView, getPrimaryCtaIcon, dismissOverlayScreens } from "./QuestUtils.native";
|
|
import { getVideoQuestWatchCtaText, getVideoQuestWatchCtaAccessibilityLabel } from "../utils/MobileQuestVideoWatchCtaCopy";
|
|
import openVideoQuestModal from "./VideoQuestModal/openVideoQuestModal";
|
|
import { enrollInQuest } from "../QuestActionCreators";
|
|
import { useQuestOrbMultiplierEligibility } from "../hooks/QuestOrbMultiplierHooks";
|
|
import { QuestOrbMultiplierEligibilityType } from "../utils/QuestOrbMultiplierUtils";
|
|
import { useFontScale } from "../../screen/native/useFontScale";
|
|
import { useScaledTextLineHeight } from "../../screen/native/useScaledTextLineHeight.android";
|
|
import { GameProfileSources } from "../../game_profile/GameProfileAnalyticUtils";
|
|
import { isFabric } from "../../../utils/native/FabricUtils";
|
|
import { isAndroid } from "../../../utils/PlatformUtils";
|
|
import { OrbsIcon } from "../../../design/components/Icon/native/redesign/generated/OrbsIcon";
|
|
import { Text } from "../../../design/components/Text/native/Text";
|
|
import { VideoQuestModalSteps } from "./VideoQuestModal/VideoQuestModal";
|
|
import { Card } from "../../../design/components/Card/native/Card.native";
|
|
import PremiumRewardGradient from "./PremiumRewardGradient";
|
|
import FastImage from "../../../components_native/common/FastImage";
|
|
import Module4611 from "../../../_bundle/Module4611";
|
|
import { VerticalGradient } from "../../../ConstantsIOS";
|
|
import QuestGameLogotype from "./QuestGameLogotype";
|
|
import { Stack } from "../../../design/components/Stack/native/Stack.native";
|
|
import Module8466 from "../../../_bundle/Module8466";
|
|
import QuestProgressIndicator from "./QuestProgressIndicator";
|
|
import QuestRewardTile from "./QuestRewardTile";
|
|
import { QuestOrbMultiplierPerkPill } from "./QuestOrbMultiplierPerkPill";
|
|
import { Button } from "../../../design/components/Button/native/Button.native";
|
|
import { IconButton } from "../../../design/components/Button/native/IconButton.native";
|
|
import Module9972 from "../../../_bundle/Module9972";
|
|
import QuestContextMenu from "./QuestContextMenu";
|
|
let PX_16, useStyles, styleProperties;
|
|
const BACKGROUND_SURFACE_HIGH = Module712.colors.BACKGROUND_SURFACE_HIGH;
|
|
const BORDER_SUBTLE = Module712.colors.BORDER_SUBTLE;
|
|
const gradientStart = experimental_createToken(({ theme }) => hexOpacityToRgba(Module712.internal.resolveSemanticColor(theme, _Module4004.isThemeDark(theme) ? Module712.colors.BACKGROUND_SURFACE_HIGH : Module712.colors.BLACK), 0));
|
|
const gradientMid = experimental_createToken(({ theme }) => {
|
|
const isThemeDark = _Module4004.isThemeDark(theme);
|
|
return hexOpacityToRgba(Module712.internal.resolveSemanticColor(theme, isThemeDark ? Module712.colors.BACKGROUND_SURFACE_HIGH : Module712.colors.BLACK), isThemeDark ? 0.8 : 0.5);
|
|
});
|
|
const gradientEnd = experimental_createToken((a0) => _Module4004.isThemeDark(a0.theme) ? Module712.colors.BACKGROUND_SURFACE_HIGH : Module712.colors.BLACK);
|
|
PX_16 = Module712.space.PX_16;
|
|
useStyles = createStyles({
|
|
container: {
|
|
position: "relative",
|
|
padding: 0,
|
|
borderRadius: Module712.radii.sm,
|
|
backgroundColor: BACKGROUND_SURFACE_HIGH,
|
|
marginBottom: Module712.space.PX_16,
|
|
overflow: "hidden"
|
|
},
|
|
heroContainer: {
|
|
display: "flex",
|
|
flexDirection: "column",
|
|
justifyContent: "flex-end",
|
|
padding: Module712.space.PX_12
|
|
},
|
|
heroImg: {
|
|
resizeMode: "cover",
|
|
...StyleSheet.absoluteFillObject
|
|
},
|
|
heroLinearGradientOverlay: StyleSheet.absoluteFillObject,
|
|
previewBadge: {
|
|
position: "absolute",
|
|
top: Module712.space.PX_8,
|
|
right: Module712.space.PX_8,
|
|
backgroundColor: Module712.colors.BACKGROUND_BRAND,
|
|
padding: Module712.space.PX_4,
|
|
borderRadius: Module712.radii.sm,
|
|
...Module712.shadows.SHADOW_LOW
|
|
},
|
|
rewardImgContainer: {
|
|
height: 64,
|
|
width: 64,
|
|
marginRight: Module712.space.PX_12
|
|
},
|
|
heroFooterContainer: {
|
|
display: "flex",
|
|
flexDirection: "row",
|
|
flexWrap: "wrap",
|
|
justifyContent: "space-between",
|
|
alignItems: "flex-end"
|
|
},
|
|
heroFooterLeftContainer: {
|
|
display: "flex",
|
|
flexDirection: "column",
|
|
alignItems: "flex-start"
|
|
},
|
|
detailsWrapper: {
|
|
display: "flex",
|
|
padding: Module712.space.PX_12
|
|
},
|
|
detailsContainer: {
|
|
display: "flex",
|
|
flexDirection: "row"
|
|
},
|
|
questName: {
|
|
marginBottom: Module712.space.PX_4
|
|
},
|
|
bodyContainer: {
|
|
display: "flex",
|
|
flexDirection: "column",
|
|
gap: Module712.space.PX_4
|
|
},
|
|
subtitleRow: {
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
rowGap: Module712.space.PX_4,
|
|
columnGap: Module712.space.PX_8,
|
|
flexWrap: "wrap"
|
|
},
|
|
orbWithAmountRow: {
|
|
flexDirection: "row",
|
|
alignItems: "center"
|
|
},
|
|
detailsTextContainer: {
|
|
flex: 1,
|
|
justifyContent: "center"
|
|
},
|
|
buttonContainers: {
|
|
borderTopWidth: 1,
|
|
borderTopColor: BORDER_SUBTLE,
|
|
display: "flex",
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
padding: Module712.space.PX_12
|
|
},
|
|
equalWidthContainer: {
|
|
flexBasis: 0,
|
|
flexGrow: 1,
|
|
flexShrink: 1
|
|
}
|
|
});
|
|
styleProperties = createStyleProperties({
|
|
gradientStart,
|
|
gradientMid,
|
|
gradientEnd
|
|
});
|
|
const r166 = Module19.memo(function(a0) {
|
|
let props, props3;
|
|
let onLayout2, quest, QUEST_HOME_MOBILE, questContentPosition, sourceQuestContent, questLogger, trackQuestContentClickedWithImpression, styles, width, height, c20919_10, c20919_11, defaultRewardNameWithArticle, questEnrollmentBlockedUntil, hasWatchVideoTasks, hasWatchVideoOnMobileTasks, c20919_16, product, stateFromStores, stateFromStores2, isMobileActivityQuest, launchMobileActivity, getQuestImpressionId, showQuestBottomSheet2, c20919_25, hasVirtualCurrencyReward, virtualCurrencyRewardOrbQuantity, questOrbRewardQuantityForUser, defaultRewardName, scaledTextLineHeight, width2, callback;
|
|
const trackClick2 = function trackClick(a0) {
|
|
if (shouldMigrateToAdAnalyticsInterface(AdAnalyticsInterfaceExperimentStep.STEP_2_CLICKED_INTERNAL, "quest_card")) {
|
|
captureAdUserAction({
|
|
type: AdUserActionType.CLICK_INTERNAL,
|
|
adCreativeType: AdCreativeType.QUEST,
|
|
adCreativeId: quest.id,
|
|
questContentCTA: a0,
|
|
surfaceId: QUEST_HOME_MOBILE,
|
|
sourceQuestContent,
|
|
impressionId: getQuestImpressionId()
|
|
});
|
|
} else {
|
|
trackQuestContentClickedWithImpression({
|
|
questId: quest.id,
|
|
questContent: QUEST_HOME_MOBILE,
|
|
questContentCTA: a0,
|
|
sourceQuestContent
|
|
});
|
|
}
|
|
};
|
|
showQuestBottomSheet2 = function showQuestBottomSheet() {
|
|
ActionSheetActionCreators.openLazy(import("./QuestBottomSheet/QuestBottomSheet"), "QuestBottomSheet", {
|
|
questId: quest.id,
|
|
questContentPosition,
|
|
sourceQuestContent
|
|
});
|
|
};
|
|
const containerPadding = a0.containerPadding;
|
|
onLayout2 = a0.onLayout;
|
|
quest = a0.quest;
|
|
let questContent = a0.questContent;
|
|
if (questContent === void 0) {
|
|
questContent = QuestContent.QUEST_HOME_MOBILE;
|
|
}
|
|
QUEST_HOME_MOBILE = questContent;
|
|
questContentPosition = a0.questContentPosition;
|
|
sourceQuestContent = a0.sourceQuestContent;
|
|
questLogger = getQuestLogger({
|
|
quest,
|
|
location: QuestsExperimentLocations.QUEST_HOME_MOBILE
|
|
});
|
|
trackQuestContentClickedWithImpression = useTrackQuestContentClickedWithImpression();
|
|
const questTaskDetails = useQuestTaskDetails(quest);
|
|
const completedRatio = useQuestCompletionDetails(quest).completedRatio;
|
|
const r9 = quest.userStatus?.enrolledAt != null;
|
|
styles = useStyles();
|
|
width = useWindowDimensions_native().width - 2 * PX_16;
|
|
height = 0.2803030303030303 * width;
|
|
const memo = useMemo(() => {
|
|
let r28;
|
|
const questAsset = getQuestAsset(quest, QuestAssetType.HERO);
|
|
const isAnimated = questAsset.isAnimated;
|
|
const r18 = {
|
|
...questAsset
|
|
};
|
|
if (isAnimated) {
|
|
let url = getScaledFirstFrameImageUrl({
|
|
assetUrl: questAsset.url,
|
|
width,
|
|
height
|
|
});
|
|
if (url == null) {
|
|
url = questAsset.url;
|
|
}
|
|
r18.url = url;
|
|
r28 = r18;
|
|
} else {
|
|
r18.url = getScaledImageUrl({
|
|
assetUrl: questAsset.url,
|
|
width,
|
|
height
|
|
});
|
|
r28 = r18;
|
|
}
|
|
return r28;
|
|
}, [quest, width, height]);
|
|
const questGameLogotypeAssetUrl = useQuestGameLogotypeAssetUrl(quest);
|
|
const r103 = styleProperties();
|
|
const { gradientStart, gradientMid, gradientEnd } = r103;
|
|
const [r111, r112] = useRecyclingState(null, [quest.id]);
|
|
c20919_10 = r111;
|
|
c20919_11 = r112;
|
|
const callback2 = useCallback(() => {
|
|
c20919_11(false);
|
|
}, [r112]);
|
|
useEffect(() => {
|
|
if (c20919_10 === false) {
|
|
MonitoringAgent.increment({
|
|
name: MetricEvents.QUEST_CONTENT_RENDERING_FAILURE,
|
|
tags: [`quest_id:${quest.id}`, `quest_content:${getQuestContentName(QUEST_HOME_MOBILE)}`, "reason:asset_loading_error"]
|
|
});
|
|
}
|
|
}, [r111, quest.id, QUEST_HOME_MOBILE]);
|
|
const stateFromStores3 = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
|
|
defaultRewardNameWithArticle = getDefaultRewardNameWithArticle(quest.config, stateFromStores3);
|
|
const stateFromStoresObject = useStateFromStoresObject([QuestStore], () => ({
|
|
reward: QuestStore.getRewards(quest.id),
|
|
isFetchingRewardCode: QuestStore.isFetchingRewardCode(quest.id),
|
|
isClaimingReward: QuestStore.isClaimingReward(quest.id),
|
|
isEnrolling: QuestStore.isEnrolling(quest.id),
|
|
questEnrollmentBlockedUntil: QuestStore.questEnrollmentBlockedUntil
|
|
}));
|
|
const isFetchingRewardCode = stateFromStoresObject.isFetchingRewardCode;
|
|
let isClaimingReward = stateFromStoresObject.isClaimingReward;
|
|
const isEnrolling = stateFromStoresObject.isEnrolling;
|
|
questEnrollmentBlockedUntil = stateFromStoresObject.questEnrollmentBlockedUntil;
|
|
const questFormattedDate = useQuestFormattedDate(quest.userStatus?.completedAt, {
|
|
year: "numeric",
|
|
month: "long",
|
|
day: "numeric"
|
|
});
|
|
hasWatchVideoTasks = _QuestTaskUtils.hasWatchVideoTasks(quest);
|
|
hasWatchVideoOnMobileTasks = useHasWatchVideoOnMobileTasks(quest.config);
|
|
const r7 = quest.userStatus?.enrolledAt != null;
|
|
let r26 = quest.userStatus?.completedAt != null;
|
|
const r161 = quest.userStatus?.claimedAt != null;
|
|
c20919_16 = r161;
|
|
const isQuestExpired = _QuestDataUtils.isQuestExpired(quest);
|
|
const isQuestExpiredButWithinThirtyDayLookback = getIsQuestExpiredButWithinThirtyDayLookback(quest);
|
|
const skuId = getDefaultReward(quest.config).skuId;
|
|
const isThemeDark = _Module4004.isThemeDark(useTheme());
|
|
const fetchCollectiblesProduct = useFetchCollectiblesProduct(hasCollectiblesQuestReward(quest.config) ? r26 ? skuId : null : null);
|
|
product = fetchCollectiblesProduct.product;
|
|
const isFetching = fetchCollectiblesProduct.isFetching;
|
|
stateFromStores = useStateFromStores([UserStore], () => {
|
|
const currentUser = UserStore.getCurrentUser();
|
|
return currentUser == null ? void 0 : currentUser.hasVerifiedEmailOrPhone();
|
|
});
|
|
stateFromStores2 = useStateFromStores([UserStore], () => UserStore.getCurrentUser()?.verified);
|
|
const mobileActivityQuest = useMobileActivityQuest(quest);
|
|
isMobileActivityQuest = mobileActivityQuest.isMobileActivityQuest;
|
|
const questApplication = mobileActivityQuest.questApplication;
|
|
launchMobileActivity = mobileActivityQuest.launchMobileActivity;
|
|
const token = useToken(Module712.colors.BACKGROUND_BASE_LOWER);
|
|
const token2 = useToken(Module712.colors.BACKGROUND_BASE_LOW);
|
|
const token3 = useToken(Module712.colors.BACKGROUND_BASE_LOWEST);
|
|
const r4 = questEnrollmentBlockedUntil != null && !r7 && !r26 && !r161;
|
|
const questFormattedDate2 = useQuestFormattedDate(quest.config.expiresAt, {
|
|
month: "numeric",
|
|
day: "numeric"
|
|
});
|
|
getQuestImpressionId = useGetQuestImpressionId();
|
|
const callback3 = useCallback(() => {
|
|
openGameLinkDirectly(quest, {
|
|
content: QUEST_HOME_MOBILE,
|
|
ctaContent: QuestContentCTA.OPEN_GAME_LINK,
|
|
impressionId: getQuestImpressionId(),
|
|
sourceQuestContent
|
|
});
|
|
}, [quest, QUEST_HOME_MOBILE, getQuestImpressionId, sourceQuestContent]);
|
|
const primaryCtaCopy = usePrimaryCtaCopy({
|
|
quest,
|
|
application: questApplication,
|
|
shortText: true
|
|
});
|
|
if (product != null) {
|
|
let buttonColors = product.styles?.buttonColors;
|
|
if (buttonColors == null) {
|
|
buttonColors = [];
|
|
}
|
|
let confettiColors = product.styles?.confettiColors;
|
|
if (confettiColors == null) {
|
|
confettiColors = [];
|
|
}
|
|
product.styles = {
|
|
buttonColors,
|
|
confettiColors,
|
|
backgroundColors: [tinycolor(token2), tinycolor(token), tinycolor(token3)]
|
|
};
|
|
}
|
|
L67: {
|
|
if (r161) {
|
|
props = {
|
|
text: intl.string(t.vTgCWx),
|
|
loading: isFetching,
|
|
onPress: () => {
|
|
trackClick2(QuestContentCTA.SHOW_REWARD);
|
|
viewReward({
|
|
product,
|
|
quest,
|
|
questContent: QUEST_HOME_MOBILE,
|
|
questContentPosition,
|
|
sourceQuestContent
|
|
});
|
|
}
|
|
};
|
|
} else {
|
|
L35: {
|
|
if (r26) {
|
|
if (isQuestExpired && !isQuestExpiredButWithinThirtyDayLookback) {
|
|
break L35;
|
|
}
|
|
const r326 = {
|
|
text: intl.string(t.cfY4PE),
|
|
loading: null,
|
|
onPress: null
|
|
};
|
|
if (!isClaimingReward) {
|
|
isClaimingReward = isFetchingRewardCode;
|
|
}
|
|
if (!isClaimingReward) {
|
|
isClaimingReward = isFetching;
|
|
}
|
|
r326.loading = isClaimingReward;
|
|
r326.onPress = () => {
|
|
trackClick2(QuestContentCTA.CLAIM_REWARD);
|
|
handleRewardClaimThenView({
|
|
product,
|
|
quest,
|
|
questContent: QUEST_HOME_MOBILE,
|
|
questContentPosition,
|
|
currentUserHasVerifiedEmailOrPhone: stateFromStores,
|
|
currentUserHasVerifiedEmail: stateFromStores2,
|
|
sourceQuestContent
|
|
});
|
|
};
|
|
props = r326;
|
|
break L67;
|
|
}
|
|
}
|
|
if (isQuestExpired) {
|
|
props = {
|
|
text: intl.formatToPlainString(t["6p8BZx"], {
|
|
expiryDate: questFormattedDate2
|
|
}),
|
|
loading: (isClaimingReward ? isClaimingReward : isFetchingRewardCode) || isFetching,
|
|
disabled: true,
|
|
variant: "secondary",
|
|
onPress: NOOP
|
|
};
|
|
} else {
|
|
if (r7 && hasWatchVideoTasks) {
|
|
props = {
|
|
text: getVideoQuestWatchCtaText(questTaskDetails),
|
|
accessibilityLabel: getVideoQuestWatchCtaAccessibilityLabel(questTaskDetails),
|
|
disabled: false,
|
|
onPress: () => {
|
|
questLogger.log("Navigating to video quest bottom sheet");
|
|
trackClick2(QuestContentCTA.WATCH_VIDEO);
|
|
if (hasWatchVideoOnMobileTasks) {
|
|
openVideoQuestModal({
|
|
questId: quest.id,
|
|
sourceQuestContent
|
|
});
|
|
} else {
|
|
ActionSheetActionCreators.openLazy(import("./QuestBottomSheet/QuestBottomSheet"), "QuestBottomSheet", {
|
|
questId: quest.id,
|
|
questContentPosition,
|
|
sourceQuestContent
|
|
});
|
|
}
|
|
}
|
|
};
|
|
break L67;
|
|
}
|
|
if (r7 && isMobileActivityQuest) {
|
|
props = {
|
|
text: primaryCtaCopy,
|
|
icon: getPrimaryCtaIcon(quest),
|
|
disabled: false,
|
|
onPress: () => {
|
|
trackClick2(QuestContentCTA.LAUNCH_MOBILE_ACTIVITY);
|
|
callback();
|
|
}
|
|
};
|
|
break L67;
|
|
}
|
|
if (r7 && !hasWatchVideoTasks && !isMobileActivityQuest) {
|
|
props = {
|
|
text: intl.string(t.JiosAn),
|
|
variant: "secondary",
|
|
disabled: false,
|
|
onPress: () => {
|
|
questLogger.log("Navigating to console connection action sheet");
|
|
trackClick2(QuestContentCTA.VIEW_REQUIREMENTS);
|
|
ActionSheetActionCreators.openLazy(import("./QuestBottomSheet/QuestBottomSheet"), "QuestBottomSheet", {
|
|
questId: quest.id,
|
|
questContentPosition,
|
|
sourceQuestContent
|
|
});
|
|
}
|
|
};
|
|
break L67;
|
|
}
|
|
const accessibilityLabel = hasWatchVideoTasks ? getVideoQuestWatchCtaAccessibilityLabel(questTaskDetails) : void 0;
|
|
const icon = isMobileActivityQuest ? getPrimaryCtaIcon(quest) : void 0;
|
|
c20919_25 = async () => {
|
|
let c27638_0;
|
|
L17: {
|
|
c27638_0 = void 0;
|
|
questLogger.log("Enrolling in quest");
|
|
await enrollInQuest(quest.id, {
|
|
questContent: QUEST_HOME_MOBILE,
|
|
questContentCTA: !isMobileActivityQuest && !hasWatchVideoTasks ? QuestContentCTA.ACCEPT_QUEST : QuestContentCTA.START_QUEST,
|
|
sourceQuestContent
|
|
});
|
|
if (hasWatchVideoTasks && hasWatchVideoOnMobileTasks) {
|
|
openVideoQuestModal({
|
|
questId: quest.id,
|
|
sourceQuestContent
|
|
});
|
|
break L17;
|
|
}
|
|
if (isMobileActivityQuest) {
|
|
(0, callback)();
|
|
} else {
|
|
(0, showQuestBottomSheet2)();
|
|
}
|
|
}
|
|
};
|
|
props = {
|
|
text: primaryCtaCopy,
|
|
disabled: false,
|
|
loading: isEnrolling,
|
|
accessibilityLabel,
|
|
icon,
|
|
onPress: function() {
|
|
return c20919_25.apply(this, arguments);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
const r351 = intl.formatToPlainString(t.EAYZAr, {
|
|
questName: quest.config.messages.questName
|
|
});
|
|
hasVirtualCurrencyReward = _QuestRewardUtils.hasVirtualCurrencyReward(quest.config);
|
|
const questOrbMultiplierEligibility = useQuestOrbMultiplierEligibility();
|
|
let r364 = useShouldShowBonusOrbsUX(quest, questOrbMultiplierEligibility);
|
|
const visible = r364 ? questOrbMultiplierEligibility === QuestOrbMultiplierEligibilityType.NITRO : r364;
|
|
let r372 = quest.userStatus?.orbQuantityClaimed;
|
|
if (r372 == null) {
|
|
r372 = getVirtualCurrencyRewardOrbQuantity(quest.config);
|
|
}
|
|
virtualCurrencyRewardOrbQuantity = r372;
|
|
questOrbRewardQuantityForUser = getQuestOrbRewardQuantityForUser(quest.config, stateFromStores3);
|
|
defaultRewardName = getDefaultRewardName(quest.config, stateFromStores3);
|
|
const fontScale = useFontScale();
|
|
scaledTextLineHeight = useScaledTextLineHeight("text-md/semibold");
|
|
const questDescription = useQuestDescription(quest, sourceQuestContent, QuestsExperimentLocations.QUEST_HOME_MOBILE, GameProfileSources.QuestHome);
|
|
width2 = 16 * Math.min(fontScale, 1.3);
|
|
const memo2 = useMemo(() => {
|
|
let r54;
|
|
let r10 = isFabric();
|
|
const translateY = r10 ? isAndroid() ? 16 / scaledTextLineHeight : 0 : 0;
|
|
const marginRight = width2 / 8;
|
|
const transform = r10 ? [{
|
|
translateY
|
|
}] : void 0;
|
|
const props = {
|
|
variant: "text-md/semibold",
|
|
color: "mobile-text-heading-primary"
|
|
};
|
|
const style = {
|
|
width: width2,
|
|
height: width2,
|
|
marginRight,
|
|
marginTop: 0,
|
|
transform
|
|
};
|
|
if (c20919_16 && hasVirtualCurrencyReward) {
|
|
const r126 = [<OrbsIcon size="custom" color="mobile-text-heading-primary" style={style} />, , ,];
|
|
if (r10) {
|
|
r10 = <View style={{
|
|
width: marginRight
|
|
}} />;
|
|
}
|
|
r126[1] = r10;
|
|
const r143 = t["nLXlh+"];
|
|
let orbAmount2 = virtualCurrencyRewardOrbQuantity;
|
|
if (virtualCurrencyRewardOrbQuantity == null) {
|
|
orbAmount2 = 0;
|
|
}
|
|
r126[2] = <Text {...props}>
|
|
{intl.format(r143, {
|
|
orbAmount: orbAmount2
|
|
})}
|
|
</Text>;
|
|
r54 = <View style={styles.orbWithAmountRow}>{r126}</View>;
|
|
} else if (c20919_16) {
|
|
r54 = <Text {...props}>{defaultRewardName}</Text>;
|
|
} else if (hasVirtualCurrencyReward) {
|
|
const r75 = [<Text {...props}>
|
|
{intl.format(t["0IUT4Y"], {
|
|
rewardWithArticleHook: () => null
|
|
})}
|
|
</Text>, ,];
|
|
const r83 = [<OrbsIcon size="custom" color="mobile-text-heading-primary" style={style} />, r10 ? <View style={{
|
|
width: marginRight
|
|
}} /> : r10, ,];
|
|
const r100 = t["nLXlh+"];
|
|
let orbAmount = questOrbRewardQuantityForUser;
|
|
if (questOrbRewardQuantityForUser == null) {
|
|
orbAmount = 0;
|
|
}
|
|
r83[2] = <Text {...props}>
|
|
{intl.format(r100, {
|
|
orbAmount
|
|
})}
|
|
</Text>;
|
|
r75[1] = <View style={styles.orbWithAmountRow}>{r83}</View>;
|
|
r54 = <View style={styles.orbWithAmountRow}>{r75}</View>;
|
|
} else {
|
|
r54 = <Text {...props}>
|
|
{intl.format(t["0IUT4Y"], {
|
|
rewardWithArticleHook: () => defaultRewardNameWithArticle
|
|
})}
|
|
</Text>;
|
|
}
|
|
return r54;
|
|
}, [r161, hasVirtualCurrencyReward, questOrbRewardQuantityForUser, virtualCurrencyRewardOrbQuantity, defaultRewardName, defaultRewardNameWithArticle, width2, scaledTextLineHeight, styles.orbWithAmountRow]);
|
|
const r416 = isQuestExpired && r26 && !r161 ? intl.formatToPlainString(t["l1jCM/"], {
|
|
date: questFormattedDate
|
|
}) : questDescription;
|
|
const ctaLink = getCtaLink(quest.config);
|
|
const callback4 = useCallback(() => {
|
|
openVideoQuestModal({
|
|
questId: quest.id,
|
|
initialStep: VideoQuestModalSteps.WATCH_VIDEO,
|
|
sourceQuestContent
|
|
});
|
|
}, [quest.id, sourceQuestContent]);
|
|
callback = useCallback(async () => {
|
|
dismissOverlayScreens();
|
|
await launchMobileActivity();
|
|
}, [launchMobileActivity]);
|
|
const props2 = {
|
|
style: [styles.container, {
|
|
marginHorizontal: PX_16 - containerPadding
|
|
}],
|
|
onLayout: (a0) => {
|
|
if (onLayout2 != null) {
|
|
onLayout2(a0, quest.id);
|
|
}
|
|
},
|
|
children: null
|
|
};
|
|
const r471 = [<FastImage source={{
|
|
uri: memo.url
|
|
}} style={styles.heroImg} onError={callback2} accessible accessibilityRole="image" accessibilityLabel={quest.config.messages.questName} />, <Module4611 style={styles.heroLinearGradientOverlay} start={VerticalGradient.START} end={VerticalGradient.END} colors={[gradientStart, gradientMid, gradientEnd]} />, quest.preview && <View style={styles.previewBadge}>
|
|
<Text variant="eyebrow" color="text-overlay-light">
|
|
{intl.string(t.SKNnqq)}
|
|
</Text>
|
|
</View>, ,];
|
|
const r511 = [<QuestGameLogotype assetUrl={questGameLogotypeAssetUrl} onError={callback2} />, ,];
|
|
let color = "text-overlay-light";
|
|
r511[1] = <Stack direction="horizontal" align="center" spacing={4}>
|
|
<Text variant="text-xs/medium" color={isThemeDark ? "text-muted" : "text-overlay-light"}>
|
|
{intl.string(t.VAbKhK)}
|
|
</Text>
|
|
<Image2 source={Module8466} style={{
|
|
height: 16,
|
|
width: 16
|
|
}} accessible accessibilityRole="image" accessibilityLabel={intl.string(t.OfMjx9)} />
|
|
<Text variant="text-xs/medium" color="text-overlay-light">{quest.config.messages.gamePublisher}</Text>
|
|
</Stack>;
|
|
const r555 = [<View style={styles.heroFooterLeftContainer}>{r511}</View>, ,];
|
|
let r556 = isQuestExpired ? !isQuestExpired : !r161;
|
|
if (r556) {
|
|
if (isThemeDark) {
|
|
color = "text-default";
|
|
}
|
|
r556 = <Text variant="text-xs/medium" color={color}>
|
|
{intl.format(t["7D8r4F"], {
|
|
expiryDate: questFormattedDate2
|
|
})}
|
|
</Text>;
|
|
}
|
|
r555[1] = r556;
|
|
r471[3] = <View style={styles.heroFooterContainer}>{r555}</View>;
|
|
const r573 = [<View style={[styles.heroContainer, {
|
|
height
|
|
}]}>{r471}</View>, , ,];
|
|
const r588 = [<View style={styles.rewardImgContainer}>
|
|
{r9 ? <QuestProgressIndicator quest={quest} progress={completedRatio} size="sm" /> : <QuestRewardTile quest={quest} height={64} width={64} />}
|
|
</View>, ,];
|
|
const r597 = [<Text variant="eyebrow" color="text-brand" style={styles.questName} accessibilityRole="header">{r351}</Text>, ,];
|
|
const r602 = [memo2, ,];
|
|
if (r364) {
|
|
r364 = <QuestOrbMultiplierPerkPill questId={quest.config.id} orbMultiplierEligibility={questOrbMultiplierEligibility} />;
|
|
}
|
|
r602[1] = r364;
|
|
r597[1] = <View style={styles.bodyContainer}>
|
|
<View style={styles.subtitleRow}>{r602}</View>
|
|
{r416 != null && <Text variant="text-sm/medium" color="text-muted">{r416}</Text>}
|
|
</View>;
|
|
r588[1] = <View style={styles.detailsTextContainer}>{r597}</View>;
|
|
r573[1] = <View style={styles.detailsWrapper}>
|
|
<View style={styles.detailsContainer}>{r588}</View>
|
|
</View>;
|
|
const r630 = {
|
|
children: null
|
|
};
|
|
if (r4) {
|
|
r630.children = [<Button grow onPress={NOOP} variant="secondary" disabled text={intl.string(t.V293qn)} />, <Button onPress={function onPress() {
|
|
ActionSheetActionCreators.openLazy(import("./QuestEnrollmentBlockedBottomSheet/QuestEnrollmentBlockedBottomSheet"), "QuestEnrollmentBlockedBottomSheet", {
|
|
questId: quest.id,
|
|
questEnrollmentBlockedUntil,
|
|
sourceQuestContent
|
|
});
|
|
}} variant="tertiary" text={intl.string(t.vY9GgG)} />];
|
|
props3 = r630;
|
|
} else {
|
|
r630.children = [ctaLink !== "" && !r4 && !isQuestExpired && !r161 && !r26 && <View style={styles.equalWidthContainer}>
|
|
<Button grow variant="secondary" text={getExternalCtaLabel(quest)} onPress={callback3} />
|
|
</View>, <View style={styles.equalWidthContainer}>
|
|
<Button grow {...props} />
|
|
</View>];
|
|
props3 = r630;
|
|
}
|
|
const r689 = [<Fragment {...props3} />, (r26 ? hasWatchVideoTasks : r26) && hasWatchVideoOnMobileTasks && <IconButton accessibilityLabel={intl.string(t.YsCuyF)} icon={Module9972} onPress={callback4} variant="secondary" />, , ,];
|
|
if (r26) {
|
|
r26 = isMobileActivityQuest;
|
|
}
|
|
if (r26) {
|
|
r26 = <IconButton accessibilityLabel={intl.string(t.CkUzLd)} icon={Module9972} onPress={callback} variant="secondary" />;
|
|
}
|
|
r689[2] = r26;
|
|
r689[3] = <QuestContextMenu quest={quest} showShareLink={!isQuestExpired} location={QuestsExperimentLocations.QUESTS_CARD} sourceQuestContent={sourceQuestContent} />;
|
|
r573[2] = <Stack direction="horizontal" align="center" spacing={Module712.space.PX_8} style={styles.buttonContainers}>{r689}</Stack>;
|
|
props2.children = <PremiumRewardGradient visible={visible} glow>{r573}</PremiumRewardGradient>;
|
|
return <Card {...props2} />;
|
|
});
|
|
export const ESTIMATED_CARD_HEIGHT = 348;
|
|
export { r166 as QuestCard };
|