/* Metro module 13567; source: modules/quests/native/QuestCard.tsx; dependencies: [5, 57, 31, 27, 1878, 7093, 6528, 482, 33, 697, 4501, 3967, 4000, 6531, 7099, 9949, 9483, 1478, 9495, 13568, 4826, 4831, 7120, 566, 9500, 7116, 7091, 9505, 4048, 8461, 3860, 9513, 9519, 9517, 9518, 7121, 9520, 4080, 13591, 1962, 9950, 5132, 1244, 9480, 9523, 13595, 9484, 9502, 9503, 9963, 4020, 10076, 13596, 6239, 13634, 5475, 4589, 676, 4573, 13622, 4572, 6919, 13620, 9542, 13635, 4578, 13638, 8341, 10235, 13623, 2] */ function _fun103070(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#103070, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13757:6, offset: 0x022561b7, size: 1218 bytes, params: 8, frame: 30 var object3; const env0_0 = require; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); const env0_3 = importDefault(5) /* metro dependency 5 */; const env0_4 = importDefault(57) /* metro dependency 57 */; let value = importAll(31) /* metro dependency 31 */; const value2 = require(27) /* metro dependency 27 */; const env0_6 = value2.Image; const StyleSheet = value2.StyleSheet; const env0_7 = value2.View; const userStore = importDefault(1878) /* metro dependency 1878: UserStore */; const questStore = importDefault(7093) /* metro dependency 7093: QuestStore */; const env0_10 = (require(6528) /* metro dependency 6528: QuestConstants */).QuestsExperimentLocations; const env0_11 = (require(482) /* metro dependency 482: Constants */).NOOP; const value3 = require(33) /* metro dependency 33 */; const env0_12 = value3.jsx; const env0_13 = value3.jsxs; const env0_14 = value3.Fragment; const BACKGROUND_SURFACE_HIGH = (importDefault(697) /* metro dependency 697: native */).colors.BACKGROUND_SURFACE_HIGH; const BORDER_SUBTLE = (importDefault(697) /* metro dependency 697: native */).colors.BORDER_SUBTLE; const value5 = (require(4501) /* metro dependency 4501: createStyles */).experimental_createToken(_fun103071); const value7 = (require(4501) /* metro dependency 4501: createStyles */).experimental_createToken(_fun103072); const value9 = (require(4501) /* metro dependency 4501: createStyles */).experimental_createToken(function({theme}) { var isThemeDark = require(dependencyMap[11]).isThemeDark(theme); theme = importDefault(dependencyMap[9]).colors; return isThemeDark ? theme.BACKGROUND_SURFACE_HIGH : theme.BLACK; }); let PX_16 = (importDefault(697) /* metro dependency 697: native */).space.PX_16; const createStylesModule = require(4501) /* metro dependency 4501: createStyles */; const createStyles = createStylesModule.createStyles; object3 = {}; const object6 = {'position': 'relative', 'padding': 0}; object6.borderRadius = (importDefault(697) /* metro dependency 697: native */).radii.sm; object6.backgroundColor = BACKGROUND_SURFACE_HIGH; PX_16 = (importDefault(697) /* metro dependency 697: native */).space.PX_16; object6.marginBottom = PX_16; object6.overflow = 'hidden'; object3.container = object6; let PX_12 = (importDefault(697) /* metro dependency 697: native */).space.PX_12; object3.heroContainer = {'display': 'flex', 'flexDirection': 'column', 'justifyContent': 'flex-end', padding: PX_12}; const object7 = {resizeMode: 'cover'}; copyDataProperties(object7, StyleSheet.absoluteFillObject, undefined); object3.heroImg = object7; object3.heroLinearGradientOverlay = StyleSheet.absoluteFillObject; const object8 = {position: 'absolute'}; let PX_8 = (importDefault(697) /* metro dependency 697: native */).space.PX_8; object8.top = PX_8; PX_8 = (importDefault(697) /* metro dependency 697: native */).space.PX_8; object8.right = PX_8; const BACKGROUND_BRAND = (importDefault(697) /* metro dependency 697: native */).colors.BACKGROUND_BRAND; object8.backgroundColor = BACKGROUND_BRAND; let PX_4 = (importDefault(697) /* metro dependency 697: native */).space.PX_4; object8.padding = PX_4; object8.borderRadius = (importDefault(697) /* metro dependency 697: native */).radii.sm; const SHADOW_LOW = (importDefault(697) /* metro dependency 697: native */).shadows.SHADOW_LOW; copyDataProperties(object8, SHADOW_LOW, undefined); object3.previewBadge = object8; PX_12 = (importDefault(697) /* metro dependency 697: native */).space.PX_12; object3.rewardImgContainer = {'height': 64, 'width': 64, marginRight: PX_12}; object3.heroFooterContainer = {'display': 'flex', 'flexDirection': 'row', 'flexWrap': 'wrap', 'justifyContent': 'space-between', 'alignItems': 'flex-end'}; object3.heroFooterLeftContainer = {'display': 'flex', 'flexDirection': 'column', 'alignItems': 'flex-start'}; PX_12 = (importDefault(697) /* metro dependency 697: native */).space.PX_12; object3.detailsWrapper = {display: 'flex', padding: PX_12}; object3.detailsContainer = {'display': 'flex', 'flexDirection': 'row'}; PX_4 = (importDefault(697) /* metro dependency 697: native */).space.PX_4; object3.questName = {marginBottom: PX_4}; PX_4 = (importDefault(697) /* metro dependency 697: native */).space.PX_4; object3.bodyContainer = {'display': 'flex', 'flexDirection': 'column', gap: PX_4}; const object9 = {'flexDirection': 'row', 'alignItems': 'center', 'rowGap': null, 'columnGap': null, 'flexWrap': 'wrap'}; PX_4 = (importDefault(697) /* metro dependency 697: native */).space.PX_4; object9.rowGap = PX_4; PX_8 = (importDefault(697) /* metro dependency 697: native */).space.PX_8; object9.columnGap = PX_8; object3.subtitleRow = object9; object3.detailsTextContainer = {'flex': 1, 'justifyContent': 'center'}; const object12 = {'borderTopWidth': 1, 'borderTopColor': null, 'display': 'flex', 'flexDirection': 'row', 'alignItems': 'center'}; object12.borderTopColor = BORDER_SUBTLE; PX_12 = (importDefault(697) /* metro dependency 697: native */).space.PX_12; object12.padding = PX_12; object3.buttonContainers = object12; const env0_16 = Reflect.apply(createStyles, createStylesModule, [object3]); const value11 = createStylesModule; const env0_17 = value11.createStyleProperties({gradientStart: value5, gradientMid: value7, gradientEnd: value9}); value = value.memo(_fun103074); (require(2) /* metro dependency 2 */).fileFinishedImporting('modules/quests/native/QuestCard.tsx'); exports.ESTIMATED_CARD_HEIGHT = 348; exports.QuestCard = value; } function _fun103071({theme}) { // fn#103071, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13757:392, offset: 0x02256679, size: 154 bytes, params: 2, frame: 18 const isThemeDark2 = (require(3967) /* metro dependency 3967: shared */).isThemeDark(theme); const internal = (importDefault(697) /* metro dependency 697: native */).internal; const resolveSemanticColor = internal.resolveSemanticColor; const colors = (importDefault(697) /* metro dependency 697: native */).colors; return (require(4000) /* metro dependency 4000: ColorUtils */).hexOpacityToRgba(Reflect.apply(resolveSemanticColor, internal, [theme, isThemeDark2 ? colors.BACKGROUND_SURFACE_HIGH : colors.BLACK]), 0); } function _fun103072({theme}) { // fn#103072, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13757:619, offset: 0x02256713, size: 175 bytes, params: 2, frame: 18 const isThemeDark2 = (require(3967) /* metro dependency 3967: shared */).isThemeDark(theme); const internal = (importDefault(697) /* metro dependency 697: native */).internal; const resolveSemanticColor = internal.resolveSemanticColor; const colors = (importDefault(697) /* metro dependency 697: native */).colors; const semanticColor = Reflect.apply(resolveSemanticColor, internal, [theme, isThemeDark2 ? colors.BACKGROUND_SURFACE_HIGH : colors.BLACK]); const colorUtilsModule = require(4000) /* metro dependency 4000: ColorUtils */; return colorUtilsModule.hexOpacityToRgba(semanticColor, isThemeDark2 ? 0.8 : 0.5); } function _fun103074({containerPadding, onLayout, quest, questContent, questContentPosition, sourceQuestContent}) { // fn#103074, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13757:2493, offset: 0x0225681b, size: 4744 bytes, params: 2, frame: 72 var r20; var moduleValue30; const Text = (require(4573) /* metro dependency 4573: Text */).Text; const Button = (require(4578) /* metro dependency 4578: ButtonNative */).Button; var items13; var items14; var object37; const IconButton = (require(8341) /* metro dependency 8341: IconButtonNative */).IconButton; let r25 = questContent !== undefined ? questContent : (require(6531) /* metro dependency 6531: QuestTypes */).QuestContent.QUEST_HOME_MOBILE; const env0_4 = sourceQuestContent; const getQuestLoggerModule = require(7099) /* metro dependency 7099: getQuestLogger */; const getQuestLogger = getQuestLoggerModule.getQuestLogger; let QUEST_HOME_MOBILE = QuestsExperimentLocations.QUEST_HOME_MOBILE; const env0_5 = Reflect.apply(getQuestLogger, getQuestLoggerModule, [{quest: quest, location: QUEST_HOME_MOBILE}]); const env0_6 = (require(9949) /* metro dependency 9949: AnalyticsHooks */).useTrackQuestContentClickedWithImpression(); const env0_7 = (require(9483) /* metro dependency 9483: QuestHooks */).useQuestTaskDetails(quest); const questHooksModule = require(9483) /* metro dependency 9483: QuestHooks */; const useQuestCompletionDetails = questHooksModule.useQuestCompletionDetails; const completedRatio = Reflect.apply(useQuestCompletionDetails, questHooksModule, [quest]).completedRatio; let userStatus = quest.userStatus; const value5 = userStatus?.enrolledAt != null; const styles = useStyles(); const value6 = (importDefault(1478) /* metro dependency 1478: useWindowDimensionsNative */)().width - 2 * PX_16; const value7 = 0.2803030303030303 * value6; let binding = env0_5; const value8 = binding.useMemo(_fun103075, [quest, value6, value7]); const value9 = (require(13568) /* metro dependency 13568: QuestHooksNative */).useQuestGameLogotypeAssetUrl(quest); const {gradientStart, gradientMid, gradientEnd} = env0_17(); const [property, env0_11] = env0_4(binding.useState(null), 2); const value13 = binding.useCallback(_fun103076, []); binding.useEffect(_fun103077, [property, quest.id, r25]); const currentUser = (require(566) /* metro dependency 566: flux */).useStateFromStores([UserStore], function() { return UserStore.getCurrentUser(); }); const defaultRewardNameWithArticle = (require(9500) /* metro dependency 9500: QuestRewardUtils */).getDefaultRewardNameWithArticle(quest.config, currentUser); const value15 = (require(566) /* metro dependency 566: flux */).useStateFromStoresObject([QuestStore], function() { var object = {}; var questBinding = quest; object.reward = QuestStore.getRewards(questBinding.id); object.isFetchingRewardCode = QuestStore.isFetchingRewardCode(questBinding.id); object.isClaimingReward = QuestStore.isClaimingReward(questBinding.id); object.isEnrolling = QuestStore.isEnrolling(questBinding.id); object.questEnrollmentBlockedUntil = QuestStore.questEnrollmentBlockedUntil; return object; }); const env0_13 = value15.isFetchingRewardCode; const env0_14 = value15.isClaimingReward; const env0_15 = value15.isEnrolling; const questEnrollmentBlockedUntil = value15.questEnrollmentBlockedUntil; const moduleValue9 = questHooksModule; const useQuestFormattedDate = moduleValue9.useQuestFormattedDate; userStatus = quest.userStatus; const value16 = Reflect.apply(useQuestFormattedDate, moduleValue9, [userStatus?.completedAt, {'year': 'numeric', 'month': 'long', 'day': 'numeric'}]); const hasWatchVideoTasks2 = (require(7116) /* metro dependency 7116: QuestTaskUtils */).hasWatchVideoTasks(quest); const value17 = (require(13568) /* metro dependency 13568: QuestHooksNative */).useHasWatchVideoOnMobileTasks(quest.config); userStatus = quest.userStatus; const value18 = userStatus?.enrolledAt != null; userStatus = quest.userStatus; const value19 = userStatus?.completedAt != null; userStatus = quest.userStatus; const value20 = userStatus?.claimedAt != null; const isQuestExpired2 = (require(7091) /* metro dependency 7091: QuestDataUtils */).isQuestExpired(quest); const env0_23 = (require(7091) /* metro dependency 7091: QuestDataUtils */).getIsQuestExpiredButWithinThirtyDayLookback(quest); const questCopyUtilsModule = require(9505) /* metro dependency 9505: QuestCopyUtils */; const getDefaultReward = questCopyUtilsModule.getDefaultReward; const skuId = Reflect.apply(getDefaultReward, questCopyUtilsModule, [quest.config]).skuId; const isThemeDark2 = (require(3967) /* metro dependency 3967: shared */).isThemeDark((importDefault(4048) /* metro dependency 4048: useTheme */)()); const questRewardUtilsModule = require(9500) /* metro dependency 9500: QuestRewardUtils */; const hasCollectiblesQuestReward2 = questRewardUtilsModule.hasCollectiblesQuestReward(quest.config); const useFetchCollectiblesProductModule = require(8461) /* metro dependency 8461: useFetchCollectiblesProduct */; const useFetchCollectiblesProduct = useFetchCollectiblesProductModule.useFetchCollectiblesProduct; let r8 = hasCollectiblesQuestReward2 && value19 ? skuId : null; const value22 = Reflect.apply(useFetchCollectiblesProduct, useFetchCollectiblesProductModule, [r8]); const env0_24 = value22.product; const env0_25 = value22.isFetching; const env0_26 = (require(566) /* metro dependency 566: flux */).useStateFromStores([UserStore], _fun103080); const env0_27 = (require(566) /* metro dependency 566: flux */).useStateFromStores([UserStore], _fun103081); const {isMobileActivityQuest, questApplication, launchMobileActivity} = (require(13568) /* metro dependency 13568: QuestHooksNative */).useMobileActivityQuest(quest); const useTokenModule = require(3860) /* metro dependency 3860: useToken */; let useToken = useTokenModule.useToken; const BACKGROUND_BASE_LOWER = (importDefault(697) /* metro dependency 697: native */).colors.BACKGROUND_BASE_LOWER; const env0_30 = Reflect.apply(useToken, useTokenModule, [BACKGROUND_BASE_LOWER]); const moduleValue22 = useTokenModule; useToken = moduleValue22.useToken; const BACKGROUND_BASE_LOW = (importDefault(697) /* metro dependency 697: native */).colors.BACKGROUND_BASE_LOW; const env0_31 = Reflect.apply(useToken, moduleValue22, [BACKGROUND_BASE_LOW]); const moduleValue23 = useTokenModule; useToken = moduleValue23.useToken; const BACKGROUND_BASE_LOWEST = (importDefault(697) /* metro dependency 697: native */).colors.BACKGROUND_BASE_LOWEST; const env0_32 = Reflect.apply(useToken, moduleValue23, [BACKGROUND_BASE_LOWEST]); const r26 = questEnrollmentBlockedUntil != null && !value18 && !value19 && !value20; const value28 = questHooksModule.useQuestFormattedDate(quest.config.expiresAt, {'month': 'numeric', 'day': 'numeric'}); const value30 = env0_5.useCallback(_fun103083, [quest, r25, (require(9513) /* metro dependency 9513: ContentImpressionTrackerHooks */).useQuestImpressionId(), sourceQuestContent]); const env0_37 = (require(9950) /* metro dependency 9950: QuestCopyHooks */).usePrimaryCtaCopy({quest: quest, application: questApplication, shortText: true}); const value31 = _fun103085(); const intl = (require(1244) /* metro dependency 1244: indexNative */).intl; const formatToPlainString = intl.formatToPlainString; const t = (require(1244) /* metro dependency 1244: indexNative */).t; const EAYZAr = t.EAYZAr; const value32 = Reflect.apply(formatToPlainString, intl, [EAYZAr, {questName: quest.config.messages.questName}]); const moduleValue27 = questRewardUtilsModule; const hasVirtualCurrencyReward2 = moduleValue27.hasVirtualCurrencyReward(quest.config); const value33 = (require(9502) /* metro dependency 9502: QuestOrbMultiplierHooks */).useQuestOrbMultiplierEligibility(); const value34 = questHooksModule.useShouldShowBonusOrbsUX(quest, value33); r8 = value34 && value33 === (require(9503) /* metro dependency 9503: QuestOrbMultiplierUtils */).QuestOrbMultiplierEligibilityType.NITRO; userStatus = quest.userStatus; const orbQuantityClaimed = userStatus?.orbQuantityClaimed; if (orbQuantityClaimed != null) { r20 = orbQuantityClaimed; } else { moduleValue30 = questRewardUtilsModule; r20 = moduleValue30.getVirtualCurrencyRewardOrbQuantity(quest.config); } const questOrbRewardQuantityForUser = questRewardUtilsModule.getQuestOrbRewardQuantityForUser(quest.config, currentUser); const defaultRewardName = questRewardUtilsModule.getDefaultRewardName(quest.config, currentUser); const questCopyHooksModule = require(9950) /* metro dependency 9950: QuestCopyHooks */; const useQuestDescription = questCopyHooksModule.useQuestDescription; QUEST_HOME_MOBILE = QuestsExperimentLocations.QUEST_HOME_MOBILE; const GameProfileSources = (require(9963) /* metro dependency 9963: GameProfileAnalyticUtils */).GameProfileSources; const QuestHome = GameProfileSources.QuestHome; const value39 = Reflect.apply(useQuestDescription, questCopyHooksModule, [quest, sourceQuestContent, QUEST_HOME_MOBILE, QuestHome]); const value40 = env0_5.useMemo(_fun103094, [value20, hasVirtualCurrencyReward2, questOrbRewardQuantityForUser, r20, defaultRewardName, defaultRewardNameWithArticle]); const r46 = isQuestExpired2 && value19 && !value20 ? intl.formatToPlainString((require(1244) /* metro dependency 1244: indexNative */).t['l1jCM/'], {date: value16}) : value39; const moduleValue34 = questCopyUtilsModule; const getCtaLink = moduleValue34.getCtaLink; const value44 = Reflect.apply(getCtaLink, moduleValue34, [quest.config]) !== ''; binding = env0_5; const value45 = binding.useCallback(function() { var defaultImport = importDefault(dependencyMap[45]); var object = {}; object.questId = quest.id; object.initialStep = require(dependencyMap[52]).VideoQuestModalSteps.WATCH_VIDEO; object.sourceQuestContent = sourceQuestContent; defaultImport(object); }, [quest.id, sourceQuestContent]); const value47 = binding.useCallback(questContentPosition(_fun103099), [launchMobileActivity]); const Card = (require(6239) /* metro dependency 6239: CardNative */).Card; const items4 = [styles.container]; items4[1] = {marginHorizontal: PX_16 - containerPadding}; const PremiumRewardGradient = importDefault(13634) /* metro dependency 13634: PremiumRewardGradient */; const items2 = [styles.heroContainer]; items2[1] = {height: value7}; const items3 = [((Component) => )(importDefault(5475) /* metro dependency 5475: FastImage */)]; const defaultImport3 = importDefault(4589) /* metro dependency 4589 */; const {START, END} = (require(676) /* metro dependency 676: ConstantsIOS */).VerticalGradient; items3[1] = ((Component) => )(defaultImport3); items3[2] = quest.preview && {intl.string((require(1244) /* metro dependency 1244: indexNative */).t.SKNnqq)}; const value50 = ((Component) => )(importDefault(13622) /* metro dependency 13622: QuestGameLogotype */); const Stack = (require(4572) /* metro dependency 4572: StackNative */).Stack; const value51 = 'always-white'; const r52 = isThemeDark2 ? 'text-muted' : value51; let string = intl.string; const VAbKhK = (require(1244) /* metro dependency 1244: indexNative */).t.VAbKhK; const items6 = [{Reflect.apply(string, intl, [VAbKhK])}]; const imageBindingProps = {source: importDefault(6919) /* metro dependency 6919 */, style: {'height': 16, 'width': 16}, accessible: true, accessibilityRole: 'image'}; string = intl.string; const OfMjx9 = (require(1244) /* metro dependency 1244: indexNative */).t.OfMjx9; imageBindingProps.accessibilityLabel = Reflect.apply(string, intl, [OfMjx9]); items6[1] = ; items6[2] = {quest.config.messages.gamePublisher}; const view = {value50}{items6}; const value55 = !isQuestExpired2; items3[3] = {view}{(isQuestExpired2 ? value55 : !value20) && {intl.format((require(1244) /* metro dependency 1244: indexNative */).t['7D8r4F'], {expiryDate: value28})}}; const items8 = [{items3}]; items8[1] = {value5 ? ((Component) => )(importDefault(13620) /* metro dependency 13620: QuestProgressIndicator */) : ((Component) => )(importDefault(9542) /* metro dependency 9542: QuestRewardTile */)}{value32}{value40}{value34 && ((QuestOrbMultiplierPerkPill) => )((require(13635) /* metro dependency 13635: QuestOrbMultiplierPerkPill */).QuestOrbMultiplierPerkPill)}{r46 != null && {r46}}; const PX_8 = (importDefault(697) /* metro dependency 697: native */).space.PX_8; const jsxRuntimeEnv0_14Binding = jsxRuntimeEnv0_14; let object = {}; if (r26) { items14 = [