// Metro module 10492 (f10493). import _slicedToArray from "../../../_bundle/_slicedToArray"; import { useState, useEffect, useMemo, useRef, useCallback } from "react"; import LocaleStore from "../../user_settings/LocaleStore"; import ChannelStore from "../../../stores/ChannelStore"; import ConnectedAccountsStore from "../../../stores/ConnectedAccountsStore"; import UserStore from "../../../stores/UserStore"; import BountyStore from "../BountyStore"; import { useConsoleQuestUIStore } from "../ConsoleQuestUIStore"; import QuestStore from "../QuestStore"; import { MOBILE_ORBS_INTRO_QUEST_ID, TaskFilterTypes, RewardFilterTypes, QuestHomeSortMethods, QuestTaskPlatform, ORBS_INTRO_QUEST_ID, MEMBER_LIST_SOCIAL_ENTRY_POINT_ALLOWED_TASK_TYPES, SORTED_QUEST_HOME_FILTER_GROUPS, QuestsExperimentLocations } from "../QuestConstants"; import { HelpdeskArticles, ThemeTypes, AnalyticEvents } from "../../../Constants"; import { PremiumTypes } from "../../premium/PremiumConstants"; import { useStateFromStoresArray, useStateFromStoresObject, useStateFromStores } from "../../../_bundle/Module589"; import { getIsEligibleForQuests } from "../lib/QuestsEligibility"; import { fetchCurrentQuests, fetchQuestToDeliver, fetchClaimedQuests, completeQuestPreview, resetQuestPreviewStatus, resetQuestDismissibilityStatus, overrideQuestForPlacement, markAdContentUnseen, manuallyStartConsoleQuest } from "../QuestActionCreators"; import { isMac, isWeb } from "../../../utils/PlatformUtils"; import DiscordAppState_native from "../../app_state/DiscordAppState.native"; import NewAdRequestBehaviorExperiment from "../experiments/NewAdRequestBehaviorExperiment"; import { AdPlacement, TaskPlatformScreen, QuestContent } from "../QuestTypes"; import * as _QuestDataUtils from "../utils/QuestDataUtils"; import { hasUnclaimedReward, captureQuestsException, isDismissed } from "../utils/QuestDataUtils"; import Durations from "../../../utils/Durations"; import * as _QuestUtils from "../utils/QuestUtils"; import { getQuestType, filterQuestsForSocialEntrypoints } from "../utils/QuestUtils"; import * as _QuestTaskUtils from "../utils/QuestTaskUtils"; import { hasWatchVideoTasks, hasPlayOnDesktopTask, hasStreamOnDesktopTask, hasPlayActivityTask, isConsoleQuest, isInGameQuest, getActivityApplicationId } from "../utils/QuestTaskUtils"; import { QuestType } from "../../../_bundle/Module6011"; import * as _QuestRewardUtils from "../utils/QuestRewardUtils"; import { hasInGameQuestReward, hasQuestRewardCode, getQuestOrbMultiplier, getDefaultRewardName, getCollectibleQuestRewardDuration, getCollectibleQuestRewardExtendableExpirationDate } from "../utils/QuestRewardUtils"; import { groupBy } from "../../../_bundle/Module12"; import { useShouldRemoveQuestHomeHero, BountyStaleRefreshQuestHomeExperiment } from "../experiments/index"; import { QuestOrbMultiplierEligibilityType } from "../utils/QuestOrbMultiplierUtils"; import { useGetQuestImpressionId } from "../lib/analytics/ContentImpressionTrackerHooks"; import HelpdeskUtils from "../../../utils/HelpdeskUtils"; import { supportedTaskPlatforms, openGameLinkDirectly, openAddConsoleConnectionModal, openConsoleConnectionSettings, isQuestSupportedOnWeb } from "../utils/QuestPlatformUtils"; import { FirstPartyQuestTaskTypes, FirstPartyQuestTaskTypesSets } from "../../../_bundle/Module5040"; import { QuestContentCTA } from "../lib/analytics/AnalyticsTypes"; import useGetOrFetchApplications from "../../applications/useGetOrFetchApplications"; import { getQuestsFromActivities } from "../utils/QuestMatchingUtils"; import { getDefaultReward, getFilterGroupHeadingText, getSortMethodText } from "../utils/QuestCopyUtils"; import { useFetchCollectiblesProduct } from "../../collectibles/hooks/useFetchCollectiblesProduct"; import { AdCreativeType } from "../../../_bundle/Module6013"; import { QuestConsoleStartError } from "../../../_bundle/Module10503"; import { intl, t } from "../../../intl/index.native"; import { formatPercent } from "../../../utils/NumberUtils"; import { match } from "../../../_bundle/Module4389"; import { trackQuestBarOrDockModeChange } from "../lib/analytics/AnalyticsActions"; import useTheme from "../../../hooks/useTheme"; import { isThemeDark } from "../../../design/shared"; import { getQuestAsset, QuestAssetType } from "../lib/AssetUtils"; import * as _PremiumUtils from "../../../utils/PremiumUtils"; import useRefocusOrLaunchActivity from "../../activities/utils/useRefocusOrLaunchActivity"; import AnalyticsUtils from "../../../utils/AnalyticsUtils"; import { useBountiesExperience } from "../experiments/useBountiesExperience"; import { fetchBountyPreview, fetchQuestHomeBounties } from "../BountyActionCreators"; import { DropsOptedOut } from "../../user_settings/UserSettings"; import { SurveyActionTypes } from "../../../_bundle/Module9280"; import { fireSurveyAction } from "../../qualtrics/QualtricsActionCreators"; function $mk84863($env) { return () => { const r2 = $env[0]; return r2 != null && $env.$parent[12].isQuestExpired(r2.id); }; } function $mk84864($env) { return () => $env.$parent[12].isProgressingOnDesktop($env[0].id); } function $mk84865($env) { return () => { const r1 = $env.$parent; return (0, r1[0])(r1[2][23]).isQuestProgressingOnConsole($env[0]); }; } function $mk84866($env) { return () => { const r1 = $env.$parent; return r1[12].getOptimisticProgress($env[0].id, (0, r1[0])(r1[2][32]).FirstPartyQuestTaskTypes.WATCH_VIDEO); }; } function $mk84867($env) { return () => { const r1 = $env.$parent; return (0, r1[0])(r1[2][33]).isVideoQuestProgressing($env[0]); }; } function $mk84868($env) { return () => { const r1 = $env.$parent; return (0, r1[0])(r1[2][23]).getThirdPartyTaskDetails($env[0]); }; } function $mk84869($env) { return () => { let r21; const set = new Set(); let r3 = $env[0][Symbol.iterator](); const next = r3.next; const r4 = $env.$parent; while (true) { const r10 = r3 === void 0 ? void 0 : (r21 = next.call(r3)).done ? r3 = void 0 : r21.value; if (r3 === void 0) { return Array.from(set); } try { const consoleApplicationId = (0, r4[0])(r4[2][23]).getConsoleApplicationId(r10); if (consoleApplicationId != null) { set.add(consoleApplicationId); } } catch (r38) { if (r3 !== void 0 && typeof r3.return === "function") { try { r3.return(); } catch {} } throw r38; } } }; } function $mk84871($env) { return () => { const r6 = $env[0].filter((item) => item.revoked === false); const r7 = $env.$parent; const xboxAccounts = r6.filter($mk107190(r7)); const playstationAccounts = r6.filter($mk107191(r7)); return { xboxAccounts, playstationAccounts, xboxAndPlaystationAccounts: xboxAccounts.concat(playstationAccounts) }; }; } function $mk84872($env) { return () => $env.$parent[12].selectedTaskPlatform($env[0]); } function $mk84873($env) { return (a0) => { const r1 = $env.$parent; return (0, r1[0])(r1[2][15]).selectTaskPlatform($env[0], a0); }; } function $mk84878() { return (a0) => a0.preview; } function $mk84880($env) { return () => { const r2 = $env; const r4 = r2[1]; if (r4 == null) { return { shelfQuests: [], isShelfEnabled: false }; } const r5 = r4.map($mk107209(r2)); const r9 = $env.$parent; const shelfQuests = r5.filter((0, r9[0])(r9[2][51]).isNotNullish).filter($mk107210(r9)); return shelfQuests.length <= 1 ? { shelfQuests: [], isShelfEnabled: false } : { shelfQuests, isShelfEnabled: true }; }; } function $mk84881($env) { return () => { const r1 = $env.$parent; return (0, r1[0])(r1[2][23]).getQuestTaskDetails($env[0]); }; } function $mk84882($env) { return () => { const r1 = $env; return (0, r1[2])((0, r1[1])()); }; } function $mk84883($env) { return () => { const r5 = $env; const r4 = r5[0]; if (r4.userStatus?.enrolledAt != null) { if (r4.userStatus?.completedAt == null) { if (r4.userStatus?.claimedAt == null && r5[4]) { let env26693 = { $parent: $env }; const r21 = window; const r8 = $env.$parent; const r28 = 1 * (0, r8[1])(r8[2][21]).Millis.SECOND; env26693[0] = r21.setInterval($mk107211(r5), r28); return () => { clearInterval(env26693[0]); (0, env26693.$parent[3])(); }; } } } (0, r5[3])(); }; } function $mk107190($env) { return (a0) => a0.type === $env[23].XBOX; } function $mk107191($env) { return (a0) => a0.type === $env[23].PLAYSTATION; } function $mk107209($env) { return (a0) => $env[0].get(a0); } function $mk107210($env) { return (a0) => { const r1 = $env; return !(0, r1[0])(r1[2][20]).isQuestExpired(a0); }; } function $mk107211($env) { return () => { (0, $env[3])(); }; } let defaultSortFn, recentSortFn, recentlyEnrolledSortFn, expiringSoonSortFn, doesQuestPassTaskFilter, doesQuestPassRewardFilter, sortQuests, useAllQuests, isQuestHiddenFromQuestHome, useIsQuestProgressing, useTaskPlatformScreen, c7038_27, c7038_35, c7038_36, c7038_38, c7038_40, useQuestTaskDetails, c7038_44, c7038_46, MINUTE; let $mk84870 = function() { return () => ({ fetching: ConnectedAccountsStore.isFetching(), accounts: ConnectedAccountsStore.getAccounts() }); }, $mk84877 = function() { return () => [...QuestStore.quests.values()]; }, $mk84879 = function() { return () => QuestStore.quests; }; let env7038 = {}; export function useQuests(r11 = { fetchPolicy: "cache-only", callerSource: "unknown" }) { let isFetchingCurrentQuests, lastFetchedCurrentQuests, isEligibleForQuests; let c18015_0 = r11; isFetchingCurrentQuests = void 0; lastFetchedCurrentQuests = void 0; isEligibleForQuests = void 0; const [state, setState] = useState(false); const stateFromStoresArray2 = useStateFromStoresArray([QuestStore], () => [...QuestStore.quests.values()]); const stateFromStoresArray3 = useStateFromStoresArray([QuestStore], () => [...QuestStore.excludedQuests.values()]); const stateFromStoresObject = useStateFromStoresObject([QuestStore], () => ({ isFetchingCurrentQuests: QuestStore.isFetchingCurrentQuests, lastFetchedCurrentQuests: QuestStore.lastFetchedCurrentQuests })); isFetchingCurrentQuests = stateFromStoresObject.isFetchingCurrentQuests; lastFetchedCurrentQuests = stateFromStoresObject.lastFetchedCurrentQuests; isEligibleForQuests = getIsEligibleForQuests(); useEffect(() => { let r1; const fetchPolicy = c18015_0.fetchPolicy; if (fetchPolicy === "cache-only") { return void 0; } if (fetchPolicy === "cache-or-network") { r1 = lastFetchedCurrentQuests === 0; } else { r1 = true; if (fetchPolicy !== "cache-and-network") { c18015_0.fetchPolicy; return void 0; } } if (r1 && isEligibleForQuests && !state && !isFetchingCurrentQuests) { setState(true); fetchCurrentQuests(); if (isMac() && DiscordAppState_native.getState() !== "focused") { return void 0; } if (NewAdRequestBehaviorExperiment.getConfig({ location: "QuestHookUseQuests" }).enableNewRequestBehavior) { return void 0; } fetchQuestToDeliver(AdPlacement.MOBILE_HOME_DOCK_AREA, `use_quests_${c18015_0.callerSource}`); } }, [r11.fetchPolicy, isEligibleForQuests, state, isFetchingCurrentQuests, lastFetchedCurrentQuests, r11.callerSource]); return { quests: stateFromStoresArray2, excludedQuests: stateFromStoresArray3, isFetchingCurrentQuests, hasFetched: state }; } defaultSortFn = function defaultSortFn(a0, a1, a2) { let r141, r152, r167, questType, questType2; let r7 = a0.id === MOBILE_ORBS_INTRO_QUEST_ID; const id = a1.id; if (r7) { r7 = a0.userStatus?.completedAt == null; } if (r7 !== (id === MOBILE_ORBS_INTRO_QUEST_ID && a1.userStatus?.completedAt == null)) { return r7 ? c7038_27 : 1; } const isQuestExpired = _QuestDataUtils.isQuestExpired(a0); const r38 = a0.userStatus?.claimedAt != null; const r42 = a1.userStatus?.claimedAt != null; const r10 = a0.userStatus?.enrolledAt != null; const r49 = a1.userStatus?.enrolledAt != null; const r55 = 30 * Durations.Millis.MINUTE; const r58 = a0.userStatus?.completedAt != null; const r61 = a0.userStatus?.enrolledAt != null && !r58 && Date.now() - new Date(a0.userStatus?.enrolledAt).getTime() > r55; const r8 = a1.userStatus?.completedAt != null; const r80 = a1.userStatus?.enrolledAt != null && !r8 && Date.now() - new Date(a1.userStatus?.enrolledAt).getTime() > r55; if (isQuestExpired) { if (r38 !== r42) { r167 = r38 ? c7038_27 : 1; } else if (r10 !== r49) { r167 = r10 ? c7038_27 : 1; } else { const expiresAt3 = a0.config.expiresAt; const expiresAt4 = a1.config.expiresAt; const r164 = c7038_38.DESC === c7038_38.DESC ? c7038_27 : 1; r167 = expiresAt3.localeCompare(expiresAt4) * r164; } return r167; } L45: { const { questHomeHero, isQuestHomeHeroShelfEnabled } = a2; if (questHomeHero != null && !isQuestHomeHeroShelfEnabled) { const isQuestFeaturedByHero = _QuestUtils.isQuestFeaturedByHero(questHomeHero, a0.id); const isQuestFeaturedByHero2 = _QuestUtils.isQuestFeaturedByHero(questHomeHero, a1.id); if (!isQuestFeaturedByHero && !isQuestFeaturedByHero2) { break L45; } return isQuestFeaturedByHero ? c7038_27 : 1; } } L78: { L48: { questType = getQuestType(a0.config); questType2 = getQuestType(a1.config); const hasWatchVideoOnMobileTasks = _QuestTaskUtils.hasWatchVideoOnMobileTasks(a0); const hasWatchVideoOnMobileTasks2 = _QuestTaskUtils.hasWatchVideoOnMobileTasks(a1); if (hasWatchVideoOnMobileTasks !== hasWatchVideoOnMobileTasks2) { if (!hasWatchVideoOnMobileTasks && !hasWatchVideoOnMobileTasks2) { break L48; } r141 = hasWatchVideoOnMobileTasks ? c7038_27 : 1; break L78; } } L54: { if (questType !== questType2) { if (questType !== QuestType.VIDEO && questType2 !== QuestType.VIDEO) { break L54; } const VIDEO = QuestType.VIDEO; r141 = 1; if (questType !== VIDEO) { break L78; } r141 = c7038_27; break L78; } } L73: { L57: { if (r61 !== r80) { if (!r61 && !r80) { break L57; } r152 = r61 ? 1 : c7038_27; break L73; } } if (r38 !== r42) { r152 = r38 ? 1 : c7038_27; } else if (r10 !== r49) { r152 = r10 ? c7038_27 : 1; } else { const expiresAt = a0.config.expiresAt; const expiresAt2 = a1.config.expiresAt; const r149 = c7038_38.ASC === c7038_38.DESC ? c7038_27 : 1; r152 = expiresAt.localeCompare(expiresAt2) * r149; } } r141 = r152; } return r141; }; recentSortFn = function recentSortFn(a0, a1) { const startsAt = a0.config.startsAt; const startsAt2 = a1.config.startsAt; const r1 = c7038_38.DESC === c7038_38.DESC ? c7038_27 : 1; return startsAt.localeCompare(startsAt2) * r1; }; recentlyEnrolledSortFn = function recentlyEnrolledSortFn(a0, a1) { let r15; const enrolledAt = a0.userStatus?.enrolledAt; const enrolledAt2 = a1.userStatus?.enrolledAt; L19: { if (enrolledAt == null && enrolledAt2 == null) { const expiresAt = a0.config.expiresAt; const expiresAt2 = a1.config.expiresAt; const r27 = c7038_38.DESC === c7038_38.DESC ? c7038_27 : 1; r15 = expiresAt.localeCompare(expiresAt2) * r27; } else if (enrolledAt != null && enrolledAt2 == null) { r15 = c7038_27; } else { if (enrolledAt == null) { const r14 = enrolledAt2 != null; r15 = 1; if (r14) { break L19; } } const r17 = c7038_38.DESC === c7038_38.DESC ? c7038_27 : 1; r15 = enrolledAt.localeCompare(enrolledAt2) * r17; } } return r15; }; expiringSoonSortFn = function expiringSoonSortFn(a0, a1) { const expiresAt = a0.config.expiresAt; const expiresAt2 = a1.config.expiresAt; const r1 = c7038_38.ASC === c7038_38.DESC ? c7038_27 : 1; return expiresAt.localeCompare(expiresAt2) * r1; }; doesQuestPassTaskFilter = function doesQuestPassTaskFilter(a0, a1) { if (TaskFilterTypes.VIDEO === a1) { return hasWatchVideoTasks(a0); } if (TaskFilterTypes.PLAY === a1) { return hasPlayOnDesktopTask({ quest: a0 }) || hasStreamOnDesktopTask({ quest: a0 }) || hasPlayActivityTask(a0) || isConsoleQuest(a0) || isInGameQuest(a0); } return false; }; doesQuestPassRewardFilter = function doesQuestPassRewardFilter(a0, a1) { if (RewardFilterTypes.VIRTUAL_CURRENCY === a1) { return _QuestRewardUtils.hasVirtualCurrencyReward(a0.config); } if (RewardFilterTypes.COLLECTIBLE === a1) { return _QuestRewardUtils.hasCollectiblesQuestReward(a0.config); } if (RewardFilterTypes.IN_GAME === a1) { return hasInGameQuestReward(a0.config) || hasQuestRewardCode(a0.config); } return false; }; sortQuests = function sortQuests(a0, r5 = c7038_35, r4 = c7038_36) { let r28; const { sortMethod, filters } = r5; let r14 = a0; if (filters != null) { const length = filters.length; r14 = a0; if (length !== 0) { const length2 = filters.length; let r15 = a0; if (length2 !== 0) { let c18016_0 = groupBy(filters, "group"); r15 = a0.filter((c30232_0) => Object.entries(c18016_0).every((item) => { const [r8, r23] = item; let c31532_0 = c30232_0; let c31532_1 = r8 === "task" ? doesQuestPassTaskFilter : r8 === "reward" ? doesQuestPassRewardFilter : void 0; return r23.length === 0 || r23.some((item) => c31532_1(c31532_0, item.filter)); })); } r14 = r15; } } if (QuestHomeSortMethods.MOST_RECENT === sortMethod) { r28 = recentSortFn; } else if (QuestHomeSortMethods.RECENTLY_ENROLLED === sortMethod) { r28 = recentlyEnrolledSortFn; } else if (QuestHomeSortMethods.EXPIRING_SOON === sortMethod) { r28 = expiringSoonSortFn; } else { QuestHomeSortMethods.SUGGESTED; r28 = defaultSortFn; } let c18017_0 = r28; let c18017_1 = r4; return r14.sort(function(a, b) { const isQuestExpired = _QuestDataUtils.isQuestExpired(a); return !isQuestExpired !== !_QuestDataUtils.isQuestExpired(b) ? isQuestExpired ? 1 : c7038_27 : c18017_0(a, b, c18017_1); }); }; useAllQuests = function useAllQuests(a0, a1) { let memo, ref, ref2, ref3, ref4, ref5; let isShelfEnabled; let env18020; const stateFromStores = useStateFromStores([QuestStore], () => null, [useShouldRemoveQuestHomeHero()]); const r22 = env18020 = { $parent: env7038 }; env18020[0] = void 0; env18020[1] = void 0; const stateFromStores6 = useStateFromStores([QuestStore], $mk84879()); env18020[0] = stateFromStores6; const questIds = stateFromStores?.questIds; env18020[1] = questIds; isShelfEnabled = useMemo($mk84880(r22), [stateFromStores6, questIds]).isShelfEnabled; memo = useMemo(() => ({ questHomeHero: stateFromStores, isQuestHomeHeroShelfEnabled: isShelfEnabled }), [stateFromStores, isShelfEnabled]); ref = useRef([]); ref2 = useRef(a1.sortMethod); ref3 = useRef(a1.filters); ref4 = useRef(0); ref5 = useRef(memo); return useMemo(() => { if (a0.length === 0) { return []; } if (ref.current.length > 0 && ref4.current === a0.length) { const current = ref2.current; if (current === a1.sortMethod && ref3.current === a1.filters && ref5.current === memo) { return ref.current; } } const current2 = sortQuests(a0, a1, memo).map((item) => item.id); ref.current = current2; ref2.current = a1.sortMethod; ref3.current = a1.filters; ref4.current = a0.length; ref5.current = memo; return current2; }, [a0, a1, memo]); }; isQuestHiddenFromQuestHome = function isQuestHiddenFromQuestHome(a0) { return _QuestDataUtils.isQuestExpired(a0) && !hasUnclaimedReward(a0.userStatus); }; useIsQuestProgressing = function useIsQuestProgressing(a0) { let env18025; let env18026; let env18027; const r1 = env18025 = { $parent: env7038 }; env18025[0] = a0; let r12 = useStateFromStores([QuestStore], $mk84864(r1)); const r13 = env18026 = { $parent: env7038 }; env18026[0] = a0; const memo4 = useMemo($mk84865(r13), [a0]); const r19 = env18027 = { $parent: env7038 }; env18027[0] = a0; const stateFromStores6 = useStateFromStores([QuestStore], $mk84866(r19)); const memo5 = useMemo($mk84867(r19), [a0, stateFromStores6]); if (!r12) { r12 = memo4; } if (!r12) { r12 = memo5; } return r12; }; useTaskPlatformScreen = function useTaskPlatformScreen(a0, a1) { let c18033_3, c18033_4, memo2, DESKTOP; let env18034; let env18035; let env18036; const id = a0.id; const r3 = env18034 = { $parent: env7038 }; env18034[0] = id; const [selectedPlatform, r28] = [useStateFromStores([QuestStore], $mk84872(r3)), useCallback($mk84873(r3), [id])]; const memo4 = useMemo(() => supportedTaskPlatforms(a0), [a0]); const r36 = memo4.includes(QuestTaskPlatform.DESKTOP); c18033_3 = r36; const r38 = memo4.includes(QuestTaskPlatform.CONSOLE); c18033_4 = r38; const r39 = env18035 = { $parent: env7038 }; env18035[0] = a0; const stateFromStores6 = useStateFromStores([QuestStore], $mk84864(r39)); const r45 = env18036 = { $parent: env7038 }; env18036[0] = a0; const memo5 = useMemo($mk84865(r45), [a0]); memo2 = useMemo(() => match(a1).with({ percentComplete: 0 }, () => null).with({ taskType: FirstPartyQuestTaskTypes.PLAY_ON_DESKTOP }, () => QuestTaskPlatform.DESKTOP).with({ taskType: FirstPartyQuestTaskTypes.PLAY_ACTIVITY }, () => QuestTaskPlatform.DESKTOP).with({ taskType: FirstPartyQuestTaskTypes.WATCH_VIDEO }, () => QuestTaskPlatform.DESKTOP).with({ taskType: FirstPartyQuestTaskTypes.WATCH_VIDEO_ON_MOBILE }, () => QuestTaskPlatform.DESKTOP).with({ taskType: FirstPartyQuestTaskTypes.STREAM_ON_DESKTOP }, () => QuestTaskPlatform.DESKTOP).with({ taskType: FirstPartyQuestTaskTypes.PLAY_ON_XBOX }, () => QuestTaskPlatform.CONSOLE).with({ taskType: FirstPartyQuestTaskTypes.PLAY_ON_PLAYSTATION }, () => QuestTaskPlatform.CONSOLE).with({ taskType: FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_GAME }, () => QuestTaskPlatform.DESKTOP).with({ taskType: FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_ACTIVITY }, () => QuestTaskPlatform.DESKTOP).exhaustive(), [a1]); DESKTOP = stateFromStores6 ? QuestTaskPlatform.DESKTOP : memo5 ? QuestTaskPlatform.CONSOLE : null; return [useMemo(() => match({ lastPlatformProgress: memo2, currentProgressingPlatform: DESKTOP, selectedPlatform }).with({ currentProgressingPlatform: QuestTaskPlatform.CONSOLE }, () => TaskPlatformScreen.CONSOLE).with({ currentProgressingPlatform: QuestTaskPlatform.DESKTOP }, () => TaskPlatformScreen.DESKTOP).with({ currentProgressingPlatform: null, lastPlatformProgress: QuestTaskPlatform.CONSOLE }, () => TaskPlatformScreen.CONSOLE).with({ currentProgressingPlatform: null, lastPlatformProgress: QuestTaskPlatform.DESKTOP }, () => TaskPlatformScreen.DESKTOP).with({ currentProgressingPlatform: null, lastPlatformProgress: null, selectedPlatform: QuestTaskPlatform.CONSOLE }, () => TaskPlatformScreen.CONSOLE).with({ currentProgressingPlatform: null, lastPlatformProgress: null, selectedPlatform: QuestTaskPlatform.DESKTOP }, () => TaskPlatformScreen.DESKTOP).with({ currentProgressingPlatform: null, lastPlatformProgress: null, selectedPlatform: null }, () => c18033_4 && c18033_3 ? TaskPlatformScreen.SELECT : c18033_4 ? TaskPlatformScreen.CONSOLE : TaskPlatformScreen.DESKTOP).exhaustive(), [r38, r36, memo2, DESKTOP, selectedPlatform]), memo4, r28]; }; c7038_27 = -1; c7038_35 = {}; c7038_36 = { questHomeHero: null, isQuestHomeHeroShelfEnabled: false }; c7038_38 = { DESC: 0, 0: "DESC", ASC: 1, 1: "ASC" }; c7038_40 = { ALL: "all", CLAIMED: "claimed", PREVIEW_TOOL: "preview_tool" }; const r79 = { TAB: "tab", QUEST_ID: "quest_id", SORT: "sort", FILTER: "filter", AD_CREATIVE_IDS: "ad_creative_ids" }; useQuestTaskDetails = (a0) => { let env18038; const r3 = env18038 = { $parent: env7038 }; env18038[0] = a0; const callback2 = useCallback($mk84881(r3), [a0]); env18038[1] = callback2; const r15 = _slicedToArray(useState(callback2()), 2); const r16 = r15[0]; env18038[2] = r15[1]; const callback3 = useCallback($mk84882(r3), [callback2]); env18038[3] = callback3; const isQuestProgressing = useIsQuestProgressing(a0); env18038[4] = isQuestProgressing; useEffect($mk84883(r3), [a0, isQuestProgressing, callback3]); return r16; }; c7038_44 = { UNACCEPTED: 0, 0: "UNACCEPTED", ACCEPTED: 1, 1: "ACCEPTED", IN_PROGRESS: 2, 2: "IN_PROGRESS", COMPLETED: 3, 3: "COMPLETED", CLAIMED: 4, 4: "CLAIMED" }; c7038_46 = 6 * Durations.Millis.HOUR; MINUTE = Durations.Millis.MINUTE; export { sortQuests }; export { c7038_40 as QuestTabs }; export { r79 as QuestQueryParams }; export function useFilteredQuests(a0, r6 = c7038_35) { const quests2 = useQuests({ fetchPolicy: "cache-and-network", callerSource: "use_filtered_quests" }); const { quests, excludedQuests, isFetchingCurrentQuests: isFetchingCurrentQuests2, hasFetched } = quests2; const map = new Map(quests.map((quest) => [quest.id, quest])); const allQuests = useAllQuests(quests, r6); let r39 = (function useCompletedAndClaimedQuests(a0) { let ref10; const memo3 = useMemo(() => a0.filter((item) => { let r7 = item.userStatus?.completedAt != null; const r9 = item.userStatus?.claimedAt != null; if (r7) { r7 = r9; } return r7; }), [a0]); ref10 = useRef([]); return useMemo(() => { if (memo3.length === 0) { return []; } if (ref10.current.length > 0 && ref10.current.length === memo3.length) { return ref10.current; } const current = memo3.sort((a, b) => { let r24; const r2 = a.userStatus?.claimedAt == null; if (r2 !== (b.userStatus?.claimedAt == null)) { r24 = r2 ? c7038_27 : 1; } else { const rewardsExpireAt = a.config.rewardsConfig.rewardsExpireAt; const rewardsExpireAt2 = b.config.rewardsConfig.rewardsExpireAt; const r21 = c7038_38.DESC === c7038_38.DESC ? c7038_27 : 1; r24 = rewardsExpireAt.localeCompare(rewardsExpireAt2) * r21; } return r24; }).map((item) => item.id); ref10.current = current; return current; }, [memo3]); })(quests); const ALL = c7038_40.ALL; const r42 = r6; if (a0 === ALL) { r39 = allQuests; } const quests3 = []; for (const item of r39) { const r50 = map.get(item); const r56 = r50 != null && a0 === c7038_40.ALL && r42.removeExpiredQuests && isQuestHiddenFromQuestHome(r50); if (!(r50 == null || r56)) { quests3.push(r50); } } return { quests: quests3, excludedQuests, isFetchingCurrentQuests: isFetchingCurrentQuests2, hasFetched }; } export function useClaimedQuests() { let stateFromStores2; const ref6 = useRef(false); const stateFromStoresArray2 = useStateFromStoresArray([QuestStore], () => Array.from(QuestStore.claimedQuests.values())); stateFromStores2 = useStateFromStores([QuestStore], () => QuestStore.isFetchingClaimedQuests); useEffect(() => { let r2 = stateFromStores2; if (!stateFromStores2) { r2 = ref6.current; } if (!r2) { ref6.current = true; fetchClaimedQuests(); } }, [stateFromStores2]); return { claimedQuests: stateFromStoresArray2, isFetchingClaimedQuests: stateFromStores2 }; } export function useExpiredQuestsMap() { return useStateFromStores([QuestStore], () => QuestStore.getExpiredQuestsMap()); } export function useShouldShowBonusOrbsUX(a0, a1) { let env18040; const r4 = env18040 = { $parent: env7038 }; env18040[0] = a0; const stateFromStores6 = useStateFromStores([QuestStore], $mk84863(r4), [a0]); const hasVirtualCurrencyReward = _QuestRewardUtils.hasVirtualCurrencyReward(a0.config); const hasPremiumOrbQuantity = _QuestRewardUtils.hasPremiumOrbQuantity(a0.config); const INELIGIBLE = QuestOrbMultiplierEligibilityType.INELIGIBLE; return (stateFromStores6 ? !stateFromStores6 : hasVirtualCurrencyReward) && hasPremiumOrbQuantity && a1 !== INELIGIBLE; } export function useQuestOrbRewardMultiplier(a0) { return useStateFromStores([QuestStore], () => { const quest3 = QuestStore.getQuest(a0); return quest3 != null ? getQuestOrbMultiplier(quest3.config) : null; }, [a0]); } export function useIsQuestExpired(a0) { let env18021; const r1 = env18021 = { $parent: env7038 }; env18021[0] = a0; return useStateFromStores([QuestStore], $mk84863(r1), [a0]); } export function useIsQuestEligibleForMembersListPopout(a0, a1, a2) { const stateFromStores6 = useStateFromStores([ChannelStore], () => { let r8 = ChannelStore.getChannel(a1?.channelId); if (r8 == null) { r8 = null; } return r8; }); const stateFromStores7 = useStateFromStores([QuestStore], () => QuestStore.questEnrollmentBlockedUntil != null, []); const stateFromStores8 = useStateFromStores([UserStore], () => UserStore.getCurrentUser()?.id); const stateFromStores9 = useStateFromStores([QuestStore], () => a0 != null && QuestStore.isQuestExpired(a0.id), [a0]); if (a0 != null && !stateFromStores7 && !stateFromStores9 && stateFromStores8 !== a2) { let r41 = a0.userStatus?.claimedAt != null; const isStreamingAndCanWatch = _QuestUtils.isStreamingAndCanWatch(a1, stateFromStores6); if (r41) { r41 = !isStreamingAndCanWatch; } return !r41; } return false; } export function useQuestFormattedDate(a0) { let r6 = arguments[1]; if (r6 === void 0) { r6 = { dateStyle: "short" }; } let c18043_1 = r6; const stateFromStores3 = useStateFromStores([LocaleStore], () => LocaleStore.locale); return useMemo(() => a0 == null ? "" : new Date(a0).toLocaleDateString(stateFromStores3, c18043_1), [a0, r6, stateFromStores3]); } export function useOnOpenGameClick({ quest, content, ctaContent, sourceQuestContent }) { const getQuestImpressionId = useGetQuestImpressionId(); return useCallback(() => { if (quest.id !== ORBS_INTRO_QUEST_ID) { openGameLinkDirectly(quest, { content, ctaContent, impressionId: getQuestImpressionId(), sourceQuestContent }); } else { window.open(HelpdeskUtils.getArticleURL(HelpdeskArticles.VIRTUAL_CURRENCY_LEARN_MORE)); } }, [quest, content, ctaContent, getQuestImpressionId, sourceQuestContent]); } export function useIsQuestProgressingOnDesktop(a0) { let env18022; const r1 = env18022 = { $parent: env7038 }; env18022[0] = a0; return useStateFromStores([QuestStore], $mk84864(r1)); } export function useIsQuestProgressingOnConsole(a0) { let env18023; const r0 = env18023 = { $parent: env7038 }; env18023[0] = a0; return useMemo($mk84865(r0), [a0]); } export function useIsQuestProgressingVideoQuest(a0) { let env18024; const r1 = env18024 = { $parent: env7038 }; env18024[0] = a0; const stateFromStores6 = useStateFromStores([QuestStore], $mk84866(r1)); return useMemo($mk84867(r1), [a0, stateFromStores6]); } export { useIsQuestProgressing }; export { useQuestTaskDetails }; export function useThirdPartyTaskDetails(a0) { let env18028; const r0 = env18028 = { $parent: env7038 }; env18028[0] = a0; return useMemo($mk84868(r0), [a0]); } export function useConnectedConsoleLinkOnClick({ quest: quest2, questContent, sourceQuestContent: sourceQuestContent2 }) { let env18046; const r6 = env18046 = { $parent: env7038 }; env18046[0] = void 0; const stateFromStoresObject = useStateFromStoresObject([ConnectedAccountsStore], $mk84870()); stateFromStoresObject.fetching; const accounts = stateFromStoresObject.accounts; env18046[0] = accounts; const memo4 = useMemo($mk84871(r6), [accounts]); memo4.xboxAccounts; memo4.playstationAccounts; const xboxAndPlaystationAccounts = memo4.xboxAndPlaystationAccounts; const isQuestProgressing = useIsQuestProgressing(quest2); const length = xboxAndPlaystationAccounts.length; let c18045_3 = isConsoleQuest(quest2) && length === 0 && !isQuestProgressing; const getQuestImpressionId2 = useGetQuestImpressionId(); return () => { if (c18045_3) { openAddConsoleConnectionModal({ quest: quest2 }, { content: questContent, ctaContent: QuestContentCTA.CONNECT_CONSOLE_LINK, impressionId: getQuestImpressionId2(), sourceQuestContent: sourceQuestContent2 }); } else { openConsoleConnectionSettings({ quest: quest2 }, { content: questContent, ctaContent: QuestContentCTA.VIEW_CONSOLE_CONNECTIONS_LINK, impressionId: getQuestImpressionId2(), sourceQuestContent: sourceQuestContent2 }); } }; } export function useGetOrFetchApplicationForConsoleQuests(a0) { let env18029; const r2 = env18029 = { $parent: env7038 }; env18029[0] = a0; return useGetOrFetchApplications(useMemo($mk84869(r2), [a0])); } export function useQuestForMemberListSocialEntryPoint(a0) { let env18048; let env18049; const stateFromStores4 = useStateFromStores([QuestStore], () => QuestStore.quests); const r12 = Array.from(stateFromStores4.values()); const r20 = env18048 = { $parent: env7038 }; env18048[0] = r12; const memo4 = useMemo(() => getQuestsFromActivities(filterQuestsForSocialEntrypoints(stateFromStores4, MEMBER_LIST_SOCIAL_ENTRY_POINT_ALLOWED_TASK_TYPES), a0), [a0, stateFromStores4, useGetOrFetchApplications(useMemo($mk84869(r20), [r12]))]); const r33 = env18049 = { $parent: env7038 }; env18049[0] = memo4; return useStateFromStores([QuestStore], $mk84863(r33), [memo4]) ? null : memo4; } export function useQuestCollectibles(a0) { const hasCollectiblesQuestReward = _QuestRewardUtils.hasCollectiblesQuestReward(a0); const fetchCollectiblesProduct = useFetchCollectiblesProduct(getDefaultReward(a0).skuId); const { product, isFetching } = fetchCollectiblesProduct; const r2 = product == null; let avatarDecoration = void 0; if (!r2) { const items = product.items; avatarDecoration = items == null ? void 0 : items[0]; } return { hasQuestCollectibles: hasCollectiblesQuestReward, avatarDecoration, isFetching }; } export function useQuestPreviewActions(a0) { let c18050_0 = a0; return useMemo(() => ({ handleComplete: () => completeQuestPreview(c18050_0), handleProgress: (a0) => completeQuestPreview(c18050_0, a0), handleResetStatusClick: () => resetQuestPreviewStatus(c18050_0), handleResetDismissibilityClick: () => resetQuestDismissibilityStatus(c18050_0), handleOverridePreviewClick: (a0) => overrideQuestForPlacement(a0, c18050_0), handleResetHasBeenSeenClick: () => markAdContentUnseen(AdCreativeType.QUEST, [c18050_0]) }), [a0]); } export function useConnectedAccounts() { let env18030; const r1 = env18030 = { $parent: env7038 }; const stateFromStoresObject = useStateFromStoresObject([ConnectedAccountsStore], $mk84870()); const { fetching, accounts } = stateFromStoresObject; env18030[0] = accounts; const memo4 = useMemo($mk84871(r1), [accounts]); return { fetching, xboxAccounts: memo4.xboxAccounts, playstationAccounts: memo4.playstationAccounts, xboxAndPlaystationAccounts: memo4.xboxAndPlaystationAccounts }; } export function useManuallyStartConsoleQuest({ questId, preview, beforeRequest, afterRequest }) { let c18051_6, callback; c18051_6 = void 0; callback = void 0; const [state2, setState2] = useState(false); const stateFromStores6 = useStateFromStores([ConnectedAccountsStore], () => ConnectedAccountsStore.getAccounts()); const r28 = (0, useConsoleQuestUIStore)((a0) => a0.clearErrorHintsByType); c18051_6 = r28; callback = useCallback((a0) => useConsoleQuestUIStore.getState().setErrorHints(questId, a0), [questId]); useEffect(() => { c18051_6(questId, QuestConsoleStartError.EXPIRED_CREDENTIAL); }, [stateFromStores6, r28, questId]); return { startConsoleQuest: useCallback(async () => { let c26695_2; let c26695_3 = 0; let c30233_0; L16: { try { c30233_0 = void 0; if (state2) { break L16; } if (beforeRequest != null) { beforeRequest(); } setState2(true); c30233_0 = null; c26695_3 = 1; c30233_0 = await manuallyStartConsoleQuest(questId, preview); (0, callback)(c30233_0.errorHints); c26695_3 = 0; (0, setState2)(false); if (afterRequest != null) { afterRequest(); } } catch ($e) { const r26 = $e; let r7 = r26; c26695_2 = r26; if (c26695_3 !== 0) { while (true) { try { const r77 = c26695_2; c26695_3 = 0; (0, setState2)(false); if (afterRequest != null) { afterRequest(); } throw r77; } catch (r74) { r7 = r74; c26695_2 = r74; if (c26695_3 === 0) { break; } } } } throw r7; } return void 0; } }, [state2, beforeRequest, afterRequest, preview, questId, callback]), startingConsoleQuest: state2 }; } export function useWaitingForConsoleConnection({ quest: quest3 }) { let env18031; const r4 = env18031 = { $parent: env7038 }; env18031[0] = void 0; const stateFromStoresObject = useStateFromStoresObject([ConnectedAccountsStore], $mk84870()); stateFromStoresObject.fetching; const accounts = stateFromStoresObject.accounts; env18031[0] = accounts; const memo4 = useMemo($mk84871(r4), [accounts]); memo4.xboxAccounts; memo4.playstationAccounts; const xboxAndPlaystationAccounts = memo4.xboxAndPlaystationAccounts; const isQuestProgressing = useIsQuestProgressing(quest3); const length = xboxAndPlaystationAccounts.length; return isConsoleQuest(quest3) && length === 0 && !isQuestProgressing; } export function useQuestHowToHelpArticle() { let message; let env18052; const r6 = env18052 = { $parent: env7038 }; const stateFromStoresObject = useStateFromStoresObject([ConnectedAccountsStore], $mk84870()); stateFromStoresObject.fetching; const accounts = stateFromStoresObject.accounts; env18052[0] = accounts; const memo4 = useMemo($mk84871(r6), [accounts]); const { xboxAccounts, playstationAccounts } = memo4; memo4.xboxAndPlaystationAccounts; const r2 = xboxAccounts.length > 0; const r3 = playstationAccounts.length > 0; const articleURL = HelpdeskUtils.getArticleURL(HelpdeskArticles.QUEST_HOW_TO_PLAYSTATION); const articleURL2 = HelpdeskUtils.getArticleURL(HelpdeskArticles.QUEST_HOW_TO_XBOX); const r48 = intl.format(t.beN4DG, { psHelpdeskArticle: articleURL, xboxHelpdeskArticle: articleURL2 }); const HVS7nh = t.HVS7nh; const helpdeskArticle = r3 ? articleURL : articleURL2; L7: { const r59 = intl.format(HVS7nh, { helpdeskArticle }); if (!(r2 && !r3)) { message = r48; if (r2) { break L7; } message = r3 ? r59 : r48; } else { message = r59; } } return { message, xboxURL: articleURL2, playstationURL: articleURL }; } export { c7038_44 as QuestProgressState }; export function useProgressState(a0) { let CLAIMED; const r17 = a0.userStatus?.enrolledAt != null; const r20 = a0.userStatus?.completedAt != null; const r24 = a0.userStatus?.claimedAt != null; let env18053; L21: { const r8 = env18053 = { $parent: env7038 }; env18053[0] = a0; const callback2 = useCallback($mk84881(r8), [a0]); env18053[1] = callback2; const r33 = _slicedToArray(useState(callback2()), 2); const r34 = r33[0]; env18053[2] = r33[1]; const callback3 = useCallback($mk84882(r8), [callback2]); env18053[3] = callback3; const isQuestProgressing = useIsQuestProgressing(a0); env18053[4] = isQuestProgressing; useEffect($mk84883(r8), [a0, isQuestProgressing, callback3]); const r46 = r34.percentComplete > 0; if (r24) { CLAIMED = c7038_44.CLAIMED; } else if (r20) { CLAIMED = c7038_44.COMPLETED; } else { if (r46 && r17) { CLAIMED = c7038_44.IN_PROGRESS; break L21; } CLAIMED = r17 ? c7038_44.ACCEPTED : c7038_44.UNACCEPTED; } } return CLAIMED; } export function useQuestCompletionDetails(a0, r8 = false) { const stateFromStores6 = useStateFromStores([LocaleStore], () => LocaleStore.locale); let env18054; let env18055; const r24 = env18054 = { $parent: env7038 }; env18054[0] = a0; const callback2 = useCallback($mk84881(r24), [a0]); env18054[1] = callback2; const r32 = _slicedToArray(useState(callback2()), 2); const r33 = r32[0]; env18054[2] = r32[1]; const callback3 = useCallback($mk84882(r24), [callback2]); env18054[3] = callback3; const isQuestProgressing = useIsQuestProgressing(a0); env18054[4] = isQuestProgressing; useEffect($mk84883(r24), [a0, isQuestProgressing, callback3]); let percentComplete = r33.percentComplete; const r45 = env18055 = { $parent: env7038 }; env18055[0] = a0; const memo4 = useMemo($mk84868(r45), [a0]); if (memo4 != null) { percentComplete = memo4.percentComplete; } return { completedRatio: percentComplete, percentComplete: 100 * percentComplete, completedRatioDisplay: memo4 != null && !r8 ? `${memo4?.progress}/${memo4?.target}` : formatPercent(stateFromStores6, percentComplete, { roundingMode: "floor" }) }; } export function useSelectedTaskPlatform(a0) { let env18032; const r2 = env18032 = { $parent: env7038 }; env18032[0] = a0; return [useStateFromStores([QuestStore], $mk84872(r2)), useCallback($mk84873(r2), [a0])]; } export { useTaskPlatformScreen }; export function useQuestWarningTips(a0) { let env18056; const r5 = env18056 = { $parent: env7038 }; env18056[0] = a0; const memo4 = useMemo($mk84868(r5), [a0]); let env18057; let env18058; const r22 = env18057 = { $parent: env7038 }; env18057[0] = a0; const callback2 = useCallback($mk84881(r22), [a0]); env18057[1] = callback2; const r10 = _slicedToArray(useState(callback2()), 2); const r30 = r10[0]; env18057[2] = r10[1]; const callback3 = useCallback($mk84882(r22), [callback2]); env18057[3] = callback3; const isQuestProgressing = useIsQuestProgressing(a0); env18057[4] = isQuestProgressing; useEffect($mk84883(r22), [a0, isQuestProgressing, callback3]); const [r44] = useTaskPlatformScreen(a0, r30); const r45 = env18058 = { $parent: env7038 }; env18058[0] = a0; const stateFromStores6 = useStateFromStores([QuestStore], $mk84863(r45), [a0]); let r58 = a0.userStatus?.enrolledAt != null; const r62 = a0.userStatus?.completedAt != null; let r69 = FirstPartyQuestTaskTypesSets.DESKTOP.has(r30.taskType) && r30.percentComplete > 0; const percentComplete = r30.percentComplete; if (r58) { r58 = !r62; } if (r58) { r58 = !stateFromStores6; } if (r58) { r58 = memo4 == null; } if (r58) { if (!r69) { r69 = percentComplete === 0 && r44 === TaskPlatformScreen.DESKTOP; } r58 = r69; } const r82 = isWeb() && r58 && !isQuestSupportedOnWeb(a0); const r90 = isMac() && r30.taskType === FirstPartyQuestTaskTypes.STREAM_ON_DESKTOP && r58; const r96 = []; if (r90) { r96.push(intl.string(t.MFGxFM)); } if (r82) { r96.push(intl.string(t.BV6xDm)); } return r96; } export function useQuest(a0) { let r13 = useStateFromStores([QuestStore], () => QuestStore.quests).get(a0); if (r13 == null) { r13 = null; } return r13; } export function useNonNullableQuest(a0, a1) { let c18059_2; const questId2 = a0; let r14 = useStateFromStores([QuestStore], () => QuestStore.getQuest(questId2), [a0]); if (r14 == null) { r14 = null; } c18059_2 = r14; useEffect(() => { if (c18059_2 == null) { const storeQuestIds = [...QuestStore.quests.keys()]; captureQuestsException(new Error(`Quest unexpectedly missing from store: ${questId2}`), { tags: { source: "useNonNullableQuest" }, extra: { questId: questId2, storeQuestIds, storeSize: storeQuestIds.length, isFetchingCurrentQuests: QuestStore.isFetchingCurrentQuests, lastFetchedCurrentQuests: QuestStore.lastFetchedCurrentQuests } }); if (a1 != null) { a1(); } } }, [r14, a0, a1]); return r14; } export function useQuestBarOrDockModeChangeTracking({ mode, questContent: questContent2, sourceQuestContent: sourceQuestContent3, questId: questId3 }) { const ref7 = useRef(null); useEffect(() => { if (questId3 != null && ref7.current !== mode) { trackQuestBarOrDockModeChange({ mode, prevMode: ref7.current, questContent: questContent2, questId: questId3, sourceQuestContent: sourceQuestContent3 }); ref7.current = mode; } }, [questId3, questContent2, mode, sourceQuestContent3]); useEffect(() => { if (questId3 != null) { return () => { trackQuestBarOrDockModeChange({ mode: null, prevMode: ref7.current, questContent: questContent2, questId: questId3, sourceQuestContent: sourceQuestContent3 }); }; } }, [questId3, questContent2, sourceQuestContent3]); } export function useCosponsoredLogotypeAsset(a0, a1) { let c18061_3; const stateFromStores5 = useStateFromStores([QuestStore], () => QuestStore.getQuest(a0), [a0]); const theme = useTheme(); c18061_3 = theme; return useMemo(() => { if (stateFromStores5 == null) { return null; } let r5 = a1; if (r5 == null) { r5 = isThemeDark(c18061_3) ? ThemeTypes.DARK : ThemeTypes.LIGHT; } return getQuestAsset(stateFromStores5, QuestAssetType.COSPONSOR_LOGO_TYPE, r5); }, [theme, a1, stateFromStores5]); } export function useClaimedCollectibleRewardMessage(a0) { let r88; const stateFromStores6 = useStateFromStores([UserStore], () => UserStore.getCurrentUser()); const defaultRewardName = getDefaultRewardName(a0, stateFromStores6); const collectibleQuestRewardDuration = getCollectibleQuestRewardDuration(a0); const collectibleQuestRewardExtendableExpirationDate = getCollectibleQuestRewardExtendableExpirationDate(a0); const isCollectibleQuestRewardPermanentWithPremiumSubscription = _QuestRewardUtils.isCollectibleQuestRewardPermanentWithPremiumSubscription(a0); const isCollectibleQuestRewardPremiumExtendable = _QuestRewardUtils.isCollectibleQuestRewardPremiumExtendable(a0); const isPremium = _PremiumUtils.isPremium(stateFromStores6, PremiumTypes.TIER_2); if (collectibleQuestRewardDuration == null) { return intl.formatToPlainString(t.l9uXL8, { decorationName: defaultRewardName }); } const r50 = intl.formatToPlainString(t.o97tNn, { rewardName: defaultRewardName }); const r59 = intl.formatToPlainString(t.PkyRZo, { rewardName: defaultRewardName, expirationDate: collectibleQuestRewardExtendableExpirationDate }); let r69 = intl.formatToPlainString(t.ie4YK0, { rewardName: defaultRewardName, duration: collectibleQuestRewardDuration }); let r78 = intl.formatToPlainString(t.yCpc0U, { duration: collectibleQuestRewardDuration, rewardName: defaultRewardName }); if (isCollectibleQuestRewardPremiumExtendable) { if (isCollectibleQuestRewardPermanentWithPremiumSubscription) { if (isPremium) { r69 = r50; } r78 = r69; } else if (isPremium) { r78 = r59; } r88 = r78; } else { r88 = intl.formatToPlainString(t.tTlItm, { duration: collectibleQuestRewardDuration, decorationName: defaultRewardName }); } return r88; } export function useLaunchInGameActivityQuest(a0) { return { launchInGameActivity: useRefocusOrLaunchActivity({ applicationId: getActivityApplicationId(a0) }) }; } export function useIsPreviewerOnAnyQuest() { return useStateFromStoresArray([QuestStore], $mk84877()).some($mk84878()); } export function useShouldShowPreviewToolTab() { return useStateFromStoresArray([QuestStore], $mk84877()).some($mk84878()); } export function useShouldShowQuestsActivityPanelItem(a0) { let r15 = a0?.userStatus != null && isDismissed(a0.userStatus, QuestContent.ACTIVITY_PANEL); const r14 = a0 == null ? null : a0; let env18062; const r21 = env18062 = { $parent: env7038 }; env18062[0] = r14; const stateFromStores6 = useStateFromStores([QuestStore], $mk84863(r21), [r14]); const r33 = (a0 == null ? void 0 : a0.userStatus?.claimedAt) != null; const stateFromStores7 = useStateFromStores([QuestStore], () => QuestStore.questEnrollmentBlockedUntil != null, []); if (!r15) { r15 = stateFromStores6; } if (!r15) { r15 = r33; } if (!r15) { r15 = stateFromStores7; } return !r15; } export function useQuestsWithPreviewAccess() { const stateFromStoresArray = useStateFromStoresArray([QuestStore], () => [...QuestStore.quests.values()]); return useMemo(() => stateFromStoresArray.filter((item) => item.preview), [stateFromStoresArray]); } export function useQuestHomeFilterOptions() { let c18064_0 = SORTED_QUEST_HOME_FILTER_GROUPS; return useMemo(() => c18064_0.map((item) => { const [r7, options] = item; return { heading: getFilterGroupHeadingText(r7), options }; }), [SORTED_QUEST_HOME_FILTER_GROUPS]); } export function useQuestHomeSortOptions() { return useMemo(() => Object.keys(QuestHomeSortMethods).map((item) => ({ label: getSortMethodText(QuestHomeSortMethods[item]), value: QuestHomeSortMethods[item] })), []); } export function useQuestHomeSortingFilteringAnalytics({ selectedSortMethod, selectedFilters, numQuestsVisible }) { const ref8 = useRef(null); const ref9 = useRef(null); useEffect(() => { AnalyticsUtils.track(AnalyticEvents.QUEST_HOME_SORT_METHOD_CHANGED, { sort_method: selectedSortMethod, previous_sort_method: ref8.current }); ref8.current = selectedSortMethod; }, [selectedSortMethod]); useEffect(() => { const filters = selectedFilters.map((selectedFilter) => selectedFilter.filter); const QUEST_HOME_FILTERS_CHANGED = AnalyticEvents.QUEST_HOME_FILTERS_CHANGED; let current = ref9.current; if (current == null) { current = []; } AnalyticsUtils.track(QUEST_HOME_FILTERS_CHANGED, { filters, previous_filters: current, num_quests_visible: numQuestsVisible }); ref9.current = filters; }, [selectedFilters, numQuestsVisible]); } export function useShouldShowQuestPreviewOverrides(a0) { return useMemo(() => { const currentUser = UserStore.getCurrentUser(); return (currentUser == null ? void 0 : currentUser.isStaff()) === true; }, []) || a0.preview; } export function useQuestHomeHeroShelf(a0) { let env18037; const r2 = env18037 = { $parent: env7038 }; const stateFromStores6 = useStateFromStores([QuestStore], $mk84879()); env18037[0] = stateFromStores6; const questIds = a0?.questIds; env18037[1] = questIds; return useMemo($mk84880(r2), [stateFromStores6, questIds]); } export function useFetchQuestHomeBounties(r2 = {}) { let r49; const previewAdCreativeIds = r2.previewAdCreativeIds; const bountiesExperience = useBountiesExperience(QuestsExperimentLocations.QUEST_HOME_MOBILE); const { showBounties, verticalScrollEnabled } = bountiesExperience; const enabled = BountyStaleRefreshQuestHomeExperiment.useConfig({ location: QuestsExperimentLocations.QUEST_HOME_MOBILE }).enabled; const VIDEO_MODAL_MOBILE = verticalScrollEnabled ? AdPlacement.VIDEO_MODAL_MOBILE : AdPlacement.QUEST_HOME_MOBILE_CAROUSEL; let [isLoading, setState3] = useState(showBounties); const stateFromStoresObject = useStateFromStoresObject([BountyStore], () => ({ isFetching: BountyStore.isFetchingQuestHomeBounties, questHomeBounties: BountyStore.questHomeBounties })); const { isFetching, questHomeBounties } = stateFromStoresObject; useEffect(() => { let c26696_0, c26696_1, c26696_2, _loadBounties2; const loadBounties2 = function loadBounties() { return _loadBounties2.apply(this, arguments); }; _loadBounties2 = function _loadBounties() { const r9 = async () => { let c31533_2; let c31533_3 = 0; try { c26696_1 = Date.now(); c31533_3 = 1; if (previewAdCreativeIds != null && previewAdCreativeIds.length > 0) { await fetchBountyPreview(previewAdCreativeIds, VIDEO_MODAL_MOBILE); } else { await fetchQuestHomeBounties(VIDEO_MODAL_MOBILE); } c31533_3 = 0; if (!c26696_0) { (0, setState3)(false); } } catch ($e) { const r29 = $e; let r7 = r29; c31533_2 = r29; if (c31533_3 !== 0) { while (true) { try { const r99 = c31533_2; c31533_3 = 0; if (!c26696_0) { (0, setState3)(false); } throw r99; } catch (r96) { r7 = r96; c31533_2 = r96; if (c31533_3 === 0) { break; } } } } throw r7; } }; _loadBounties2 = r9; return r9.apply(this, arguments); }; if (showBounties) { c26696_0 = false; c26696_1 = 0; loadBounties2(); if (enabled) { c26696_2 = window.setInterval(() => { if (Date.now() - c26696_1 > c7038_46) { loadBounties2(); } }, MINUTE); return () => { c26696_0 = true; window.clearInterval(c26696_2); }; } return () => { c26696_0 = true; }; } }, [showBounties, enabled, previewAdCreativeIds, VIDEO_MODAL_MOBILE]); if (showBounties) { if (!isLoading) { isLoading = isFetching; } r49 = { questHomeBounties, isLoading }; } else { r49 = { questHomeBounties: [], isLoading: false }; } return r49; } export function useQuestHomeBounties() { return useStateFromStoresObject([BountyStore], () => ({ questHomeBounties: BountyStore.questHomeBounties, isFetching: BountyStore.isFetchingQuestHomeBounties })); } export function useQuestBarImpressionSurvey(a0) { const setting = DropsOptedOut.useSetting(); const r15 = a0.userStatus?.enrolledAt != null; let c18067_2 = r15; return useCallback(() => { if (!c18067_2) { fireSurveyAction(setting ? SurveyActionTypes.AD_IMPRESSION_QUEST_BAR_OPT_OUT : SurveyActionTypes.AD_IMPRESSION_QUEST_BAR_OPT_IN, { quest_id: a0.id }); } }, [setting, r15, a0.id]); }