This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

@@ -0,0 +1,45 @@
// Metro module 10501 (f10502).
import { getRemainingTaskTime } from "./QuestTaskUtils";
import { intl, t } from "../../../intl/index.native";
export function formatWatchRemainingDurationShort(a0) {
const remainingTaskTime = getRemainingTaskTime(a0);
const count = 60 * remainingTaskTime.minutes + remainingTaskTime.seconds;
return count >= 60 ? intl.formatToPlainString(t.PHhTXX, {
count: Math.round(count / 60)
}) : intl.formatToPlainString(t.rUfeQx, {
count
});
}
export function getVideoQuestWatchCtaText(a0) {
const r3 = a0.percentComplete > 0;
const remainingTaskTime = getRemainingTaskTime(a0);
const count = 60 * remainingTaskTime.minutes + remainingTaskTime.seconds;
const durationShort = count >= 60 ? intl.formatToPlainString(t.PHhTXX, {
count: Math.round(count / 60)
}) : intl.formatToPlainString(t.rUfeQx, {
count
});
return r3 ? intl.formatToPlainString(t["pF/deA"], {
durationShort
}) : intl.formatToPlainString(t.CHrvqg, {
durationShort
});
}
export function getVideoQuestWatchCtaAccessibilityLabel(a0) {
const r2 = a0.percentComplete > 0;
const remainingTaskTime = getRemainingTaskTime(a0);
const { minutes, seconds } = remainingTaskTime;
const remainTime = minutes > 0 && seconds > 0 ? intl.formatToPlainString(t["lW/66D"], {
minutes,
seconds
}) : minutes > 0 ? intl.formatToPlainString(t["SxnF/O"], {
count: minutes
}) : intl.formatToPlainString(t["0BZpdi"], {
count: seconds
});
return r2 ? intl.formatToPlainString(t["ch+yrN"], {
remainTime
}) : intl.formatToPlainString(t.Bwc5Dg, {
remainTime
});
}
+128
View File
@@ -0,0 +1,128 @@
// Metro module 9489 (f9490).
import { QuestHomeSortMethods, RewardFilterTypes, TaskFilterTypes } from "../QuestConstants";
import { intl, t } from "../../../intl/index.native";
import { shouldMigrateToAdAnalyticsInterface, AdAnalyticsInterfaceExperimentStep } from "../experiments/AdAnalyticsInterfaceExperiment";
import { captureAdUserAction } from "../../ads/analytics/captureAdUserAction";
import { AdUserActionType } from "../../ads/analytics/captureAdUserActionTypes";
import { AdCreativeType } from "../../../_bundle/Module6013";
import { trackQuestContentClicked } from "../lib/analytics/AnalyticsActions";
import { copy } from "../../../utils/ClipboardUtils.native";
export function getContextualEntrypointHeading({ quest, taskDetails, thirdPartyTaskDetails }) {
let r43;
if (quest.userStatus?.completedAt != null) {
return intl.string(t.BzFeTF);
}
if (quest.userStatus?.enrolledAt != null) {
let percentComplete = taskDetails.percentComplete;
if (thirdPartyTaskDetails != null) {
percentComplete = thirdPartyTaskDetails.percentComplete;
}
L19: {
if (percentComplete >= 0.75) {
r43 = intl.string(t.gvCR4H);
} else {
if (percentComplete >= 0.45 && percentComplete <= 0.55) {
r43 = intl.string(t.JNx8sG);
break L19;
}
r43 = percentComplete > 0 ? intl.string(t.JMbfnc) : intl.string(t["7e5k7L"]);
}
}
return r43;
}
return intl.formatToPlainString(t.EQa7os, {
questName: quest.config.messages.questName
});
}
export function getDisclosureText({ isTargetedDisclosure, isContextualDisclosure, isVideoQuest, gamePublisher, gameTitle, cosponsorName }) {
return isTargetedDisclosure ? isContextualDisclosure ? intl.string(t.nPg6f1) : `${cosponsorName == null ? intl.formatToPlainString(t.Piihy1, {
gamePublisher
}) : intl.formatToPlainString(t.DV47Gy, {
gamePublisher,
cosponsorName
})} ${intl.string(t.fEbrT8)}` : isVideoQuest ? intl.formatToPlainString(t.rctMRl, {
gamePublisher
}) : intl.formatToPlainString(t["5bQWNG"], {
gamePublisher,
gameTitle
});
}
export function getExternalCtaLabel(a0) {
return a0.config.ctaConfig.buttonLabel;
}
export function getSortMethodText(a0) {
if (QuestHomeSortMethods.SUGGESTED === a0) {
return intl.string(t.gBfXPZ);
}
if (QuestHomeSortMethods.MOST_RECENT === a0) {
return intl.string(t.K6oEu2);
}
if (QuestHomeSortMethods.EXPIRING_SOON === a0) {
return intl.string(t.IB22n3);
}
if (QuestHomeSortMethods.RECENTLY_ENROLLED === a0) {
return intl.string(t["BB+2tX"]);
}
}
export function getFilterTypeText(a0) {
if (RewardFilterTypes.VIRTUAL_CURRENCY === a0) {
return intl.string(t.ElYQFS);
}
if (RewardFilterTypes.COLLECTIBLE === a0) {
return intl.string(t.Jg17Ut);
}
if (RewardFilterTypes.IN_GAME === a0) {
return intl.string(t["O/J2kr"]);
}
if (TaskFilterTypes.VIDEO === a0) {
return intl.string(t.e0iISA);
}
if (TaskFilterTypes.PLAY === a0) {
return intl.string(t["1nJR4p"]);
}
}
export function getFilterGroupHeadingText(a0) {
if (a0 === "reward") {
return intl.string(t.vjLqAU);
}
if (a0 === "task") {
return intl.string(t.Hufmss);
}
}
export function getQuestUrl(a0) {
return `${location.protocol}//${location.host}/quests/${a0}`;
}
export function getCtaLink(a0) {
return a0.ctaConfig.link;
}
export function copyShareLink(a0, a1) {
const ctaContent = a1.ctaContent;
if (shouldMigrateToAdAnalyticsInterface(AdAnalyticsInterfaceExperimentStep.STEP_2_CLICKED_INTERNAL, "copy_share_link")) {
captureAdUserAction({
type: AdUserActionType.CLICK_INTERNAL,
adCreativeType: AdCreativeType.QUEST,
adCreativeId: a0,
questContentCTA: ctaContent,
surfaceId: a1.content,
sourceQuestContent: a1.sourceQuestContent,
questContentPosition: a1.position,
impressionId: a1.impressionId
});
} else {
trackQuestContentClicked({
questId: a0,
questContent: a1.content,
questContentCTA: ctaContent,
questContentPosition: a1.position,
impressionId: a1.impressionId,
sourceQuestContent: a1.sourceQuestContent
});
}
copy(`${location.protocol}//${location.host}/quests/${a0}`);
}
export function getDefaultReward(a0) {
if (a0.rewardsConfig.rewards.length === 0) {
throw new Error(`Quest ${a0.id} has no rewards configured`);
}
return a0.rewardsConfig.rewards[0];
}
+205
View File
@@ -0,0 +1,205 @@
// Metro module 5983 (f5984).
import LocaleStore from "../../user_settings/LocaleStore";
import BountyStore from "../BountyStore";
import QuestStore from "../QuestStore";
import { BILLABLE_PLACEMENTS, DismissibleQuestContentFlags, EMPTY_AD_DECISION_DATA } from "../QuestConstants";
import { AdPlacement, QuestContent } from "../QuestTypes";
import { hasFlag } from "../../../_bundle/Module1384";
import NewAdRequestBehaviorExperiment from "../experiments/NewAdRequestBehaviorExperiment";
import SentryUtils_native from "../../../utils/SentryUtils.native";
let c3778_9, c3778_10;
const getQuestDeliveryDataForPlacement = function getQuestDeliveryDataForPlacement(a0, a1) {
let r17;
L6: {
if (a0 !== AdPlacement.QUEST_HOME_MOBILE_CAROUSEL) {
const VIDEO_MODAL_MOBILE = AdPlacement.VIDEO_MODAL_MOBILE;
r17 = null;
if (a0 !== VIDEO_MODAL_MOBILE) {
break L6;
}
}
const r1 = a1 == null;
r17 = null;
if (!r1) {
const adDecisionByPlacementAndAdCreativeId = BountyStore.getAdDecisionByPlacementAndAdCreativeId(a0, a1);
r17 = adDecisionByPlacementAndAdCreativeId != null ? {
questId: adDecisionByPlacementAndAdCreativeId.questId,
adCreativeId: adDecisionByPlacementAndAdCreativeId.adCreativeId,
adDecisionData: adDecisionByPlacementAndAdCreativeId.adDecisionData,
adContext: adDecisionByPlacementAndAdCreativeId.adContext,
metadataSealed: adDecisionByPlacementAndAdCreativeId.metadataSealed,
trafficMetadataSealed: adDecisionByPlacementAndAdCreativeId.trafficMetadataSealed
} : null;
}
}
if (r17 != null) {
return r17;
}
const enableNewRequestBehavior = NewAdRequestBehaviorExperiment.getConfig({
location: "getQuestDeliveryDataForPlacement"
}).enableNewRequestBehavior;
const r40 = QuestStore.questAdDecisionByPlacement.get(a0);
if (a0 === AdPlacement.QUEST_HOME_BANNER_DESKTOP && r40 != null) {
return {
questId: r40.questId,
adCreativeId: r40.adCreativeId,
adDecisionData: r40.adDecisionData,
adContext: r40.adContext,
metadataSealed: r40.metadataSealed,
trafficMetadataSealed: r40.trafficMetadataSealed
};
}
if (enableNewRequestBehavior) {
return r40 == null ? null : {
questId: r40.questId,
adCreativeId: r40.adCreativeId,
adDecisionData: r40.adDecisionData,
adContext: r40.adContext,
metadataSealed: r40.metadataSealed,
trafficMetadataSealed: r40.trafficMetadataSealed
};
}
const r47 = QuestStore.questToDeliverForPlacement.get(a0);
return r47 == null ? null : {
questId: r47.quest.id,
adCreativeId: r47.quest.id,
adDecisionData: r47.adDecisionData,
adContext: r47.adContext,
metadataSealed: r47.metadataSealed,
trafficMetadataSealed: r47.trafficMetadataSealed
};
};
c3778_9 = 2592000000;
const r25 = {};
r25[QuestContent.QUEST_BAR] = AdPlacement.DESKTOP_ACCOUNT_PANEL_AREA;
r25[QuestContent.QUEST_BAR_V2] = AdPlacement.DESKTOP_ACCOUNT_PANEL_AREA;
r25[QuestContent.QUEST_BAR_MOBILE] = AdPlacement.MOBILE_HOME_DOCK_AREA;
r25[QuestContent.QUEST_HOME_HERO] = AdPlacement.QUEST_HOME_BANNER_DESKTOP;
r25[QuestContent.QUEST_HOME_HERO_SHELF] = AdPlacement.QUEST_HOME_BANNER_DESKTOP;
r25[QuestContent.QUEST_HOME_MOBILE_CAROUSEL] = AdPlacement.QUEST_HOME_MOBILE_CAROUSEL;
r25[QuestContent.VIDEO_MODAL_MOBILE] = AdPlacement.VIDEO_MODAL_MOBILE;
c3778_10 = r25;
export const THIRTY_DAYS_MS = 2592000000;
export function earnedDecisionIsValid(a0) {
return a0 != null && a0.fetchedAt + a0.ttlMillis >= Date.now();
}
export function findQuestOrReplacement(a0, a1, a2) {
const r6 = Array.isArray(a1) ? new Map(a1.map((item) => [item.id, item])) : a1;
const r19 = Array.isArray(a2) ? new Map(a2.map((item) => [item.id, item])) : a2;
const r30 = r6.get(a0);
if (r30 != null) {
return r30;
}
const replacementId = r19.get(a0)?.replacementId;
return replacementId != null ? r6.get(replacementId) : void 0;
}
export function isDismissible(a0) {
return Object.keys(DismissibleQuestContentFlags).includes(QuestContent[a0]);
}
export function isDismissed(a0, a1) {
if (Object.keys(DismissibleQuestContentFlags).includes(QuestContent[a1])) {
return hasFlag(a0.dismissedQuestContent, DismissibleQuestContentFlags[QuestContent[a1]]);
}
return false;
}
export function isQuestConfigExpired(a0) {
return new Date(a0.expiresAt).valueOf() <= Date.now();
}
export function isQuestExpired(a0) {
return new Date(a0.config.expiresAt).valueOf() <= Date.now();
}
export function getIsQuestExpiredButWithinThirtyDayLookback(a0) {
if (new Date(a0.config.expiresAt).valueOf() <= Date.now()) {
const r0 = Date.now() - c3778_9;
const r30 = new Date(a0.config.expiresAt).valueOf();
return a0.config.expiresAt != null && !(r30 <= r0);
}
return false;
}
export function findNextUpcomingExpirationEpochMs(a0) {
let r0 = null;
const r3 = Date.now();
for (const item of a0) {
const r31 = new Date(item.config.expiresAt).valueOf();
if (!(r31 <= r3) && (r0 == null || r31 < r0)) {
r0 = r31;
}
}
return r0;
}
export function hasUnclaimedReward(a0) {
return a0 != null && a0.completedAt != null && a0.claimedAt == null;
}
export function getQuestFormattedDate(a0, r5 = {
dateStyle: "short"
}) {
return a0 == null ? "" : new Date(a0).toLocaleDateString(LocaleStore.locale, r5);
}
export function getQuestForPlacement(a0, a1, a2) {
const r10 = a1.get(a2);
if (r10 != null) {
const r15 = a0.get(r10.quest.id);
return r15 == null ? void 0 : new Date(r15.config.expiresAt).valueOf() <= Date.now() ? void 0 : r15;
}
}
export function getQuestPlacementFromQuestContent(a0) {
return c3778_10[a0];
}
export function isBillableQuestContent(a0) {
const r4 = c3778_10[a0];
return r4 != null && BILLABLE_PLACEMENTS.has(r4);
}
export function getAdDecisionData(a0, a1) {
const r8 = c3778_10[a1];
if (r8 == null) {
return EMPTY_AD_DECISION_DATA;
}
let r10 = getQuestDeliveryDataForPlacement(r8, a0);
if (r10 == null) {
r10 = {};
}
const { adDecisionData, questId, adCreativeId } = r10;
return adDecisionData == null ? EMPTY_AD_DECISION_DATA : questId !== a0 ? adCreativeId !== a0 ? adDecisionData.ad_id !== a0 ? EMPTY_AD_DECISION_DATA : adDecisionData : adDecisionData : adDecisionData;
}
export function getAdMetadataSealed(a0, a1) {
const r6 = c3778_10[a0];
if (r6 != null) {
return getQuestDeliveryDataForPlacement(r6, a1)?.metadataSealed;
}
}
export function getAdTrafficMetadataSealed(a0, a1, a2) {
L6: {
const r8 = c3778_10[a0];
if (r8 != null) {
let r10 = getQuestDeliveryDataForPlacement(r8, a2);
if (r10 == null) {
r10 = {};
}
const { trafficMetadataSealed, questId } = r10;
if (trafficMetadataSealed != null) {
if (a2 == null && questId !== a1) {
break L6;
}
return trafficMetadataSealed;
}
}
}
if (a1 != null) {
return QuestStore.getQuest(a1)?.trafficMetadataSealed;
}
}
export function getAdContext(a0, a1) {
const r6 = c3778_10[a0];
if (r6 != null) {
return getQuestDeliveryDataForPlacement(r6, a1)?.adContext;
}
}
export function captureQuestsException(a0, a1) {
SentryUtils_native.captureException(a0, {
...a1,
tags: {
...a1?.tags,
app_context: "quests"
}
});
}
+120
View File
@@ -0,0 +1,120 @@
// Metro module 10502 (f10503).
import ApplicationStore from "../../applications/ApplicationStore";
import { DISCORD_APPLICATION_ID, PLAY_ACTIVITY_CLOUD_GAMING_QUEST_ID, PLAY_ACTIVITY_SOCIAL_ENTRY_APPLICATION_ID } from "../QuestConstants";
import { ActivityGamePlatforms } from "../../../Constants";
import { XBOX_ACTIVITY_APPLICATION_ID } from "../../activities/Constants";
import { getAllApplicationIds, getConsoleApplicationId, hasPlayOnDesktopTask, getActivityApplicationId } from "./QuestTaskUtils";
import { isQuestExpired } from "./QuestDataUtils";
import { canLaunchActivity } from "./QuestUtils";
function $mk84953($env) {
return (a0) => a0 === $env[0];
}
let getQuestByActivity, questMatchesApplicationId;
const questMatchesActivity = function questMatchesActivity(a0, a1) {
let r21;
let r3 = a0 != null;
if (r3) {
const r0 = a0.application_id === XBOX_ACTIVITY_APPLICATION_ID || a0.platform === ActivityGamePlatforms.XBOX;
L23: {
if (!r0 && !(a0.platform === ActivityGamePlatforms.PS4 || a0.platform === ActivityGamePlatforms.PS5)) {
r21 = a1 != null && a1.id === PLAY_ACTIVITY_CLOUD_GAMING_QUEST_ID && a0.application_id === PLAY_ACTIVITY_SOCIAL_ENTRY_APPLICATION_ID;
if (r21) {
break L23;
}
let r27 = a0.application_id != null;
if (r27) {
let env18081;
const application_id = a0.application_id;
const r10 = env18081 = {};
env18081[0] = application_id;
const allApplicationIds = getAllApplicationIds(a1);
r27 = allApplicationIds != null && allApplicationIds.some($mk84953(r10));
}
r21 = r27;
} else {
const r39 = a0.name.toLowerCase();
const consoleApplicationId = getConsoleApplicationId(a1);
const r2 = consoleApplicationId == null;
let r47 = false;
if (!r2) {
const application = ApplicationStore.getApplication(consoleApplicationId);
r47 = application != null && r39 === application.name.toLowerCase();
}
r21 = r47;
}
}
r3 = r21;
}
return r3;
};
getQuestByActivity = function getQuestByActivity(a0, a1) {
for (const item of a0) {
const [, r27] = item;
if (!questMatchesActivity(a1, r27)) {
continue;
}
if (isQuestExpired(r27)) {
continue;
}
return r27;
}
};
questMatchesApplicationId = function questMatchesApplicationId(a0, a1) {
let env18082;
const r2 = env18082 = {};
env18082[0] = a0;
const allApplicationIds = getAllApplicationIds(a1);
return allApplicationIds != null && allApplicationIds.some($mk84953(r2));
};
export { questMatchesActivity };
export { getQuestByActivity };
export function getQuestByApplicationId(a0, a1) {
let r0 = void 0;
for (const item of a0) {
const [, r29] = item;
if (!questMatchesApplicationId(a1, r29)) {
continue;
}
if (isQuestExpired(r29)) {
continue;
}
r0 = r29;
break;
}
return r0;
}
export function allPlayOnDesktopQuestsByApplicationId(a0, c18083_0) {
return Array.from(a0.values()).filter((item) => {
let env26700;
const r5 = env26700 = {};
env26700[0] = c18083_0;
const allApplicationIds = getAllApplicationIds(item);
return allApplicationIds != null && allApplicationIds.some($mk84953(r5)) && !isQuestExpired(item) && hasPlayOnDesktopTask({
quest: item
});
});
}
export function getQuestsFromActivities(a0, a1) {
if (a1 != null && a0 != null) {
for (const item of a1) {
const questByActivity = getQuestByActivity(a0, item);
if (questByActivity == null) {
continue;
}
return questByActivity;
}
return null;
}
return null;
}
export function getEligibleQuestsForApplicationId(a0, a1) {
let r3 = arguments[2];
if (r3 === void 0) {
r3 = false;
}
let c18084_1 = r3;
return a1 == null ? [] : Array.from(a0.values()).filter((item) => {
const activityApplicationId = getActivityApplicationId(item);
return item != null && canLaunchActivity(item) && !isQuestExpired(item) && activityApplicationId === a1 && activityApplicationId !== DISCORD_APPLICATION_ID && (item.userStatus?.completedAt == null || c18084_1) && (item.userStatus?.enrolledAt == null || c18084_1);
});
}
@@ -0,0 +1,31 @@
// Metro module 9487 (f9488).
import PremiumUtils from "../../../utils/PremiumUtils";
import { getPerkSource } from "../../premium/perks_state/PerksStateUtils";
import { Perk, PerkSource } from "../../../_bundle/Module1892";
import { getIsCrepeEnabled } from "../../croissant/crepe/CrepeExperiment";
const r12 = {
UPSELL: "UPSELL",
NITRO: "NITRO",
CREPE: "CREPE",
INELIGIBLE: "INELIGIBLE"
};
let c6256_3 = {
NITRO: "nitro",
CREPE: "crepe"
};
let c6256_4 = [r12.CREPE, r12.NITRO];
export { r12 as QuestOrbMultiplierEligibilityType };
export { c6256_3 as QuestOrbMultiplierSource };
export function shouldReceiveQuestOrbMultiplier(a0) {
return c6256_4.includes(a0);
}
export function getQuestOrbMultiplierSource(a0) {
if (PremiumUtils.canUseMoreQuestOrbs(a0)) {
if (PremiumUtils.canUseQuestOrbMultiplier(a0)) {
return c6256_3.NITRO;
}
const perkSource = getPerkSource(a0?.perks, Perk.MORE_QUEST_ORBS);
return (perkSource == null ? void 0 : perkSource.includes(PerkSource.SOURCE_NITRO)) ? c6256_3.NITRO : getIsCrepeEnabled("getQuestOrbMultiplierSource") ? (perkSource == null ? void 0 : perkSource.includes(PerkSource.SOURCE_THIRDPARTY_CROISSANT)) ? c6256_3.CREPE : null : null;
}
return null;
}
+429
View File
@@ -0,0 +1,429 @@
// Metro module 10498 (f10499).
import { QuestTaskPlatform } from "../QuestConstants";
import { PlatformTypes, ComponentActions, UserSettingsSections } from "../../../Constants";
import * as _QuestTaskUtils from "./QuestTaskUtils";
import { hasPlayOnDesktopTask, hasStreamOnDesktopTask, hasAchievementInGameTask, hasWatchVideoTasks } from "./QuestTaskUtils";
import { FirstPartyQuestTaskTypes } from "../../../_bundle/Module5040";
import { shouldMigrateToAdAnalyticsInterface, AdAnalyticsInterfaceExperimentStep } from "../experiments/AdAnalyticsInterfaceExperiment";
import { captureAdUserAction } from "../../ads/analytics/captureAdUserAction";
import { AdUserActionType } from "../../ads/analytics/captureAdUserActionTypes";
import { AdCreativeType } from "../../../_bundle/Module6013";
import { trackQuestContentClicked, trackAppStoreOverlayEvent, trackAdContentClicked, trackAdContentAppStoreOverlayEvent } from "../lib/analytics/AnalyticsActions";
import authorizeConnection_native from "../../connections/authorizeConnection.native";
import { t } from "../../../intl/index.native";
import { isIOS, getOS, isAndroid } from "../../../utils/PlatformUtils";
import { getCtaLink } from "./QuestCopyUtils";
import { openPlayStoreInlineInstall } from "../../links/native/BrowserManager";
import { clearAppStoreOverlayOpen, setAppStoreOverlayOpen } from "../native/AppStoreOverlayTelemetryManager";
import { ComponentDispatch } from "../../../utils/ComponentDispatchUtils";
import { v4 } from "../../../_bundle/Module514";
import { AppStoreBottomSheetOverlayFeatureGate } from "../experiments/index";
import openURL from "../../../lib/openURL";
import { openUserSettings } from "../../user_settings/core/native/openUserSettings";
import Dispatcher from "../../../Dispatcher";
function $mk84944($env) {
return (a0) => {
const r2 = $env;
(0, r2[1])();
const r5 = r2[0];
const r7 = $env.$parent;
r5(r7[4].QUEST_APP_STORE_OVERLAY_CLOSED, r2[3], a0);
(0, r7[0])(r7[2][15]).ComponentDispatch.dispatch(r7[5].QUEST_APP_STORE_OVERLAY_FINISHED);
};
}
function $mk84945($env) {
return (a0) => {
const r1 = $env;
if (a0) {
(0, r1[2])({
trackOverlayEvent: $mk107240(r1)
});
(0, r1[0])($env.$parent[4].QUEST_APP_STORE_OVERLAY_OPEN_SUCCEEDED, r1[3]);
} else {
(0, r1[1])();
const r5 = r1[0];
const r8 = $env.$parent;
r5(r8[4].QUEST_APP_STORE_OVERLAY_OPEN_FAILED, r1[3]);
(0, r8[0])(r8[2][15]).ComponentDispatch.dispatch(r8[5].QUEST_APP_STORE_OVERLAY_FINISHED);
}
};
}
function $mk84946($env) {
return () => {
const r2 = $env;
(0, r2[1])();
const r4 = r2[0];
const r6 = $env.$parent;
r4(r6[4].QUEST_APP_STORE_OVERLAY_OPEN_FAILED, r2[3]);
(0, r6[0])(r6[2][15]).ComponentDispatch.dispatch(r6[5].QUEST_APP_STORE_OVERLAY_FINISHED);
};
}
function $mk107240($env) {
return (a0, a1) => {
const r1 = $env;
return (0, r1[0])(a0, r1[3], a1);
};
}
let getDirectAppStoreLinkFromCta, getInlineStoreParamsFromCta;
let env7043 = {};
export function supportedConsoles(a0) {
const r24 = Object.keys(a0.config.taskConfigV2.tasks);
const r25 = [];
for (const item of r24) {
if (FirstPartyQuestTaskTypes.PLAY_ON_XBOX === item) {
r25.push(PlatformTypes.XBOX);
} else if (FirstPartyQuestTaskTypes.PLAY_ON_PLAYSTATION === item) {
r25.push(PlatformTypes.PLAYSTATION);
}
}
return r25;
}
getDirectAppStoreLinkFromCta = function getDirectAppStoreLinkFromCta(a0) {
let r33, r43, android;
L16: {
if (!(!isIOS() && getOS() !== "ios")) {
if (a0.ios?.iosAppId != null) {
const r22 = a0.ios.iosAppId.startsWith("id");
const iosAppId = a0.ios.iosAppId;
r33 = `https://apps.apple.com/app/${r22 ? iosAppId : `id${iosAppId}`}`;
break L16;
}
}
if (!isAndroid()) {
const oS = getOS();
r43 = null;
if (oS === "android") {
android = a0.android;
r43 = android?.androidAppId == null ? null : `https://play.google.com/store/apps/details?id=${a0.android.androidAppId}`;
}
} else {
android = a0.android;
r43 = android?.androidAppId == null ? null : `https://play.google.com/store/apps/details?id=${a0.android.androidAppId}`;
}
r33 = r43;
}
return r33;
};
getInlineStoreParamsFromCta = function getInlineStoreParamsFromCta(a0) {
let r21;
L11: {
if (isAndroid()) {
if (a0.android?.androidAppId != null) {
r21 = {
url: `https://play.google.com/d?id=${a0.android.androidAppId}`,
appId: null
};
break L11;
}
}
r21 = isIOS() ? a0.ios?.iosAppId != null ? {
url: `https://apps.apple.com/app/id${a0.ios.iosAppId}`,
appId: parseInt(a0.ios.iosAppId, 10)
} : null : null;
}
return r21;
};
const r24 = {
DESKTOP: "desktop",
XBOX: "xbox",
PLAYSTATION: "playstation"
};
export function supportedTaskPlatforms(a0) {
const r10 = hasPlayOnDesktopTask({
quest: a0
}) || hasStreamOnDesktopTask({
quest: a0
}) || hasAchievementInGameTask(a0);
const hasSomeConsoleTasks = _QuestTaskUtils.hasSomeConsoleTasks(a0);
const r21 = [];
if (r10) {
r21.push(QuestTaskPlatform.DESKTOP);
}
if (hasSomeConsoleTasks) {
r21.push(QuestTaskPlatform.CONSOLE);
}
return r21;
}
export function isQuestSupportedOnWeb(a0) {
let r8 = hasWatchVideoTasks(a0);
const hasPlayActivityTask = _QuestTaskUtils.hasPlayActivityTask(a0);
if (!r8) {
r8 = hasPlayActivityTask;
}
return r8;
}
export { r24 as PlayQuestPlatform };
export function getPlatformTypeForHintMessage(a0) {
return a0.connected_account_type === "xbox" ? PlatformTypes.XBOX : PlatformTypes.PLAYSTATION;
}
export function openAuthorizationConnectionModal({ platformType, quest }, a1) {
if (shouldMigrateToAdAnalyticsInterface(AdAnalyticsInterfaceExperimentStep.STEP_2_CLICKED_INTERNAL, "open_authorization_connection_modal")) {
captureAdUserAction({
type: AdUserActionType.CLICK_INTERNAL,
adCreativeType: AdCreativeType.QUEST,
adCreativeId: quest.id,
questContentCTA: a1.ctaContent,
surfaceId: a1.content,
sourceQuestContent: a1.sourceQuestContent,
impressionId: a1.impressionId
});
} else {
trackQuestContentClicked({
questId: quest.id,
questContent: a1.content,
sourceQuestContent: a1.sourceQuestContent,
questContentCTA: a1.ctaContent,
impressionId: a1.impressionId
});
}
authorizeConnection_native({
platformType,
location: a1.ctaContent
});
}
export function getExpiredCredentialsHintMessage(a0) {
let PlatformTypes2, XBOX;
if (a0.connected_account_type === "xbox") {
XBOX = PlatformTypes.XBOX;
PlatformTypes2 = PlatformTypes;
} else {
PlatformTypes2 = PlatformTypes;
XBOX = PlatformTypes2.PLAYSTATION;
}
return XBOX === PlatformTypes2.XBOX ? t["mytEv+"] : t.iDiwby;
}
export function openGameLinkDirectly(a0, a1) {
let c18076_0 = a0;
let c18076_1 = a1;
let r19 = getCtaLink(a0.config);
const ctaConfig = a0.config.ctaConfig;
const r21 = ctaConfig == null ? null : getDirectAppStoreLinkFromCta({
url: getCtaLink(a0.config),
android: ctaConfig.android,
ios: ctaConfig.ios
});
if (r21 != null) {
r19 = r21;
}
const r29 = (function urlHasClickId(a0) {
let r10;
try {
r10 = new URL(a0).searchParams.has("dclid");
} catch ($e) {
return false;
}
return r10;
})(r19);
const r30 = r19;
let r31 = r30;
let clickId = void 0;
if (r29) {
const r36 = v4();
r31 = (function setClickIdOnUrl(a0, a1) {
let r15;
try {
const uRL = new URL(a0);
uRL.searchParams.set("dclid", a1);
r15 = uRL.toString();
} catch ($e) {
return a0;
}
return r15;
})(r30, r36);
clickId = r36;
}
if (shouldMigrateToAdAnalyticsInterface(AdAnalyticsInterfaceExperimentStep.STEP_3_CLICKED_EXTERNAL, "open_game_link_directly")) {
captureAdUserAction({
type: AdUserActionType.CLICK_EXTERNAL_ADVERTISER_CTA,
adCreativeType: AdCreativeType.QUEST,
adCreativeId: a0.id,
questContentCTA: a1.ctaContent,
surfaceId: a1.content,
sourceQuestContent: a1.sourceQuestContent,
questContentPosition: a1.position,
impressionId: a1.impressionId,
clickId
});
} else {
trackQuestContentClicked({
questId: a0.id,
questContent: a1.content,
questContentCTA: a1.ctaContent,
questContentPosition: a1.position,
impressionId: a1.impressionId,
sourceQuestContent: a1.sourceQuestContent,
clickId
});
}
ComponentDispatch.dispatch(ComponentActions.QUEST_GAME_LINK_OPENED);
if (!AppStoreBottomSheetOverlayFeatureGate.getConfig({
location: "quest_open_game_link"
}).enabled && r21 != null) {
const ctaConfig2 = a0.config.ctaConfig;
const r94 = ctaConfig2 == null ? null : getInlineStoreParamsFromCta({
url: getCtaLink(a0.config),
android: ctaConfig2.android,
ios: ctaConfig2.ios
});
if (r94 != null) {
let env18077;
const r104 = env18077 = {
$parent: env7043
};
env18077[0] = (a0, a1, a2) => trackAppStoreOverlayEvent(c18076_0, c18076_1, a1, a0, a2);
env18077[1] = clearAppStoreOverlayOpen;
env18077[2] = setAppStoreOverlayOpen;
const { url, appId } = r94;
env18077[3] = appId == null ? void 0 : appId.toString();
openPlayStoreInlineInstall(url, appId, $mk84944(r104)).then($mk84945(r104)).catch($mk84946(r104));
return void 0;
}
}
openURL(r31);
}
export function openAdGameLinkDirectly({ adContentId, adCreativeType, cta }, a1) {
let c18078_2 = a1;
let url = cta.url;
const directAppStoreLinkFromCta = getDirectAppStoreLinkFromCta(cta);
if (directAppStoreLinkFromCta != null) {
url = directAppStoreLinkFromCta;
}
if (shouldMigrateToAdAnalyticsInterface(AdAnalyticsInterfaceExperimentStep.STEP_3_CLICKED_EXTERNAL, "open_ad_game_link_directly")) {
captureAdUserAction({
type: AdUserActionType.CLICK_EXTERNAL_ADVERTISER_CTA,
adCreativeType,
adCreativeId: adContentId,
questContentCTA: a1.ctaContent,
surfaceId: a1.content,
sourceQuestContent: a1.sourceQuestContent,
questContentPosition: a1.position,
impressionId: a1.impressionId
});
} else {
trackAdContentClicked({
adContentId,
adCreativeType,
questContent: a1.content,
questContentCTA: a1.ctaContent,
questContentPosition: a1.position,
impressionId: a1.impressionId,
sourceQuestContent: a1.sourceQuestContent
});
}
ComponentDispatch.dispatch(ComponentActions.QUEST_GAME_LINK_OPENED);
if (!AppStoreBottomSheetOverlayFeatureGate.getConfig({
location: "quest_open_game_link"
}).enabled && directAppStoreLinkFromCta != null) {
const inlineStoreParamsFromCta = getInlineStoreParamsFromCta(cta);
if (inlineStoreParamsFromCta != null) {
let env18079;
const r64 = env18079 = {
$parent: env7043
};
env18079[0] = (a0, a1, a2) => trackAdContentAppStoreOverlayEvent({
adContentId,
adCreativeType
}, c18078_2, a1, a0, a2);
env18079[1] = clearAppStoreOverlayOpen;
env18079[2] = setAppStoreOverlayOpen;
const { url: url2, appId } = inlineStoreParamsFromCta;
env18079[3] = appId == null ? void 0 : appId.toString();
openPlayStoreInlineInstall(url2, appId, $mk84944(r64)).then($mk84945(r64)).catch($mk84946(r64));
return void 0;
}
}
openURL(url);
}
export function openConsoleConnectionSettings({ quest }, a1) {
if (shouldMigrateToAdAnalyticsInterface(AdAnalyticsInterfaceExperimentStep.STEP_2_CLICKED_INTERNAL, "open_console_connection_settings")) {
captureAdUserAction({
type: AdUserActionType.CLICK_INTERNAL,
adCreativeType: AdCreativeType.QUEST,
adCreativeId: quest.id,
questContentCTA: a1.ctaContent,
surfaceId: a1.content,
sourceQuestContent: a1.sourceQuestContent,
impressionId: a1.impressionId,
questContentPosition: a1.position
});
} else {
trackQuestContentClicked({
questId: quest.id,
questContent: a1.content,
questContentPosition: a1.position,
questContentCTA: a1.ctaContent,
impressionId: a1.impressionId,
sourceQuestContent: a1.sourceQuestContent
});
}
(0, openUserSettings)({
screen: UserSettingsSections.CONNECTIONS
});
}
export function openAddConsoleConnectionModal({ quest }, a1) {
if (shouldMigrateToAdAnalyticsInterface(AdAnalyticsInterfaceExperimentStep.STEP_2_CLICKED_INTERNAL, "open_add_console_connection_modal")) {
captureAdUserAction({
type: AdUserActionType.CLICK_INTERNAL,
adCreativeType: AdCreativeType.QUEST,
adCreativeId: quest.id,
questContentCTA: a1.ctaContent,
surfaceId: a1.content,
sourceQuestContent: a1.sourceQuestContent,
impressionId: a1.impressionId,
questContentPosition: a1.position,
questContentRowIndex: a1.rowIndex
});
} else {
trackQuestContentClicked({
questId: quest.id,
questContent: a1.content,
questContentPosition: a1.position,
questContentRowIndex: a1.rowIndex,
questContentCTA: a1.ctaContent,
impressionId: a1.impressionId,
sourceQuestContent: a1.sourceQuestContent
});
}
const r53 = supportedConsoles(quest);
if (r53.length === 1) {
return authorizeConnection_native({
platformType: r53.at(0)
});
}
Dispatcher.dispatch({
type: "CONNECTIONS_GRID_MODAL_SHOW",
onComplete: (a0) => authorizeConnection_native({
platformType: a0
}),
includedPlatformTypes: new Set(r53),
includeApplicationConnections: false
});
}
export function openSingleConsoleConnectionModal({ quest }, a1, a2) {
if (shouldMigrateToAdAnalyticsInterface(AdAnalyticsInterfaceExperimentStep.STEP_2_CLICKED_INTERNAL, "open_single_console_connection_modal")) {
captureAdUserAction({
type: AdUserActionType.CLICK_INTERNAL,
adCreativeType: AdCreativeType.QUEST,
adCreativeId: quest.id,
questContentCTA: a1.ctaContent,
surfaceId: a1.content,
sourceQuestContent: a1.sourceQuestContent,
impressionId: a1.impressionId,
questContentPosition: a1.position,
questContentRowIndex: a1.rowIndex
});
} else {
trackQuestContentClicked({
questId: quest.id,
questContent: a1.content,
questContentPosition: a1.position,
questContentRowIndex: a1.rowIndex,
questContentCTA: a1.ctaContent,
impressionId: a1.impressionId,
sourceQuestContent: a1.sourceQuestContent
});
}
return authorizeConnection_native({
platformType: a2
});
}
+269
View File
@@ -0,0 +1,269 @@
// Metro module 9484 (f9485).
import CollectiblesCategoryStore from "../../collectibles/CollectiblesCategoryStore";
import { QuestRewardExpirationMode } from "../../../_bundle/Module9485";
import { QuestRewardTypes } from "../../../_bundle/Module5990";
import { getQuestFormattedDate } from "./QuestDataUtils";
import { differenceInDays } from "../../../_bundle/Module3414";
import { intl, t } from "../../../intl/index.native";
import { getQuestOrbMultiplierEligibilityForUser } from "../hooks/QuestOrbMultiplierHooks";
import { shouldReceiveQuestOrbMultiplier } from "./QuestOrbMultiplierUtils";
import { getFractionalPremiumQuestRewardName } from "../lib/FractionalPremiumUtils";
import { getDefaultReward } from "./QuestCopyUtils";
import { QuestRewardAssignmentMethods } from "../../../_bundle/Module9490";
import { QuestRewardCodePlatforms } from "../QuestTypes";
let c6254_3, $mk82585 = function() {
return (a0) => a0.type === QuestRewardTypes.COLLECTIBLE;
}, $mk82586 = function() {
return (a0) => a0.type === QuestRewardTypes.FRACTIONAL_PREMIUM;
}, $mk82587 = function() {
return (a0) => a0.type === QuestRewardTypes.VIRTUAL_CURRENCY;
}, $mk82588 = function() {
return (a0) => a0.type === QuestRewardTypes.VIRTUAL_CURRENCY;
}, $mk82589 = function() {
return (a0) => a0.type === QuestRewardTypes.VIRTUAL_CURRENCY;
}, $mk82590 = function() {
return (a0) => a0.type === QuestRewardTypes.VIRTUAL_CURRENCY;
}, $mk82591 = function() {
return (a0) => a0.type === QuestRewardTypes.VIRTUAL_CURRENCY;
};
const _getDefaultRewardName = function _getDefaultRewardName(a0, a1, a2) {
let r52;
if (a0.rewardsConfig.rewards.some($mk82586())) {
return getFractionalPremiumQuestRewardName(a0);
}
if (a0.rewardsConfig.rewards.some($mk82587())) {
const r34 = a0.rewardsConfig.rewards.find($mk82591());
const r36 = r34 == null;
let orbAmount = null;
if (!r36) {
if (a1 == null) {
orbAmount = r34.orbQuantity;
} else {
const questOrbMultiplierEligibilityForUser = getQuestOrbMultiplierEligibilityForUser(a1);
const premiumOrbQuantity = a0.rewardsConfig.rewards.find($mk82588())?.premiumOrbQuantity;
if (premiumOrbQuantity != null && premiumOrbQuantity > 0 && shouldReceiveQuestOrbMultiplier(questOrbMultiplierEligibilityForUser)) {
let premiumOrbQuantity2 = r34.premiumOrbQuantity;
if (premiumOrbQuantity2 == null) {
premiumOrbQuantity2 = r34.orbQuantity;
}
r52 = premiumOrbQuantity2;
} else {
r52 = r34.orbQuantity;
}
orbAmount = r52;
}
}
if (orbAmount == null) {
orbAmount = a0.rewardsConfig.rewards.find($mk82589())?.orbQuantity;
}
if (orbAmount == null) {
orbAmount = 0;
}
return intl.formatToPlainString(t["nLXlh+"], {
orbAmount
});
}
const messages = getDefaultReward(a0).messages;
return a2 ? messages.nameWithArticle : messages.name;
};
c6254_3 = new Set([QuestRewardExpirationMode.PREMIUM_EXTENSION, QuestRewardExpirationMode.PREMIUM_PERMANENT]);
export function getCollectiblesQuestReward(a0) {
const r9 = a0.rewardsConfig.rewards.find($mk82585());
return r9?.type === QuestRewardTypes.COLLECTIBLE ? r9 : null;
}
export function getCollectibleQuestRewardExtendableExpirationDate(a0) {
const r11 = a0.rewardsConfig.rewards.find($mk82585());
const r17 = r11?.type === QuestRewardTypes.COLLECTIBLE ? r11 : null;
return r17 != null ? "expiresAtPremium" in r17 ? r17.expiresAtPremium != null ? getQuestFormattedDate(r17.expiresAtPremium) : null : null : null;
}
export function getCollectibleQuestRewardDuration(a0) {
const r20 = a0.rewardsConfig.rewards.find($mk82585());
const r26 = r20?.type === QuestRewardTypes.COLLECTIBLE ? r20 : null;
if (r26 != null && "expiresAt" in r26 && r26.expiresAt != null) {
const date = new Date(a0.expiresAt);
const date2 = new Date(r26.expiresAt);
const r43 = differenceInDays(date2, date);
const months = Math.floor(r43 / 30) + (25 <= r43 % 30 ? 1 : 0);
if (months >= 12) {
return intl.formatToPlainString(t.PClsrw, {
years: Math.floor(months / 12)
});
}
if (months > 0) {
return intl.formatToPlainString(t.kridzK, {
months
});
}
const days = differenceInDays(date2, date);
if (days >= 7) {
return intl.formatToPlainString(t.EmoBD2, {
weeks: Math.ceil(days / 7)
});
}
return intl.formatToPlainString(t["k2UNz+"], {
days
});
}
return null;
}
export function hasFractionalPremiumQuestReward(a0) {
return a0.rewardsConfig.rewards.some($mk82586());
}
export function hasVirtualCurrencyReward(a0) {
return a0.rewardsConfig.rewards.some($mk82587());
}
export function hasPremiumOrbQuantity(a0) {
const premiumOrbQuantity = a0.rewardsConfig.rewards.find($mk82588())?.premiumOrbQuantity;
return premiumOrbQuantity != null && premiumOrbQuantity > 0;
}
export function hasCollectiblesQuestReward(a0) {
const r9 = a0.rewardsConfig.rewards.find($mk82585());
return (r9?.type === QuestRewardTypes.COLLECTIBLE ? r9 : null) != null;
}
export function hasInGameQuestReward(a0) {
return a0.rewardsConfig.rewards.some((reward) => reward.type === QuestRewardTypes.IN_GAME);
}
export function hasQuestRewardCode(a0) {
return a0.rewardsConfig.rewards.some((reward) => reward.type === QuestRewardTypes.REWARD_CODE);
}
export function getInGameQuestReward(a0) {
let r7 = a0.rewardsConfig.rewards.find((reward) => reward.type === QuestRewardTypes.IN_GAME);
if (r7 == null) {
r7 = null;
}
return r7;
}
export function getCollectiblesQuestRewardItem(a0) {
const r10 = a0.rewardsConfig.rewards.find($mk82585());
const product = CollectiblesCategoryStore.getProduct((r10?.type === QuestRewardTypes.COLLECTIBLE ? r10 : null)?.skuId);
const r23 = product == null;
let r24 = void 0;
if (!r23) {
const items = product.items;
r24 = items == null ? void 0 : items[0];
}
if (r24 == null) {
r24 = null;
}
return r24;
}
export function getVirtualCurrencyRewardOrbQuantity(a0) {
return a0.rewardsConfig.rewards.find($mk82589())?.orbQuantity;
}
export function getVirtualCurrencyRewardPremiumOrbQuantity(a0) {
const r8 = a0.rewardsConfig.rewards.find((reward) => reward.type === QuestRewardTypes.VIRTUAL_CURRENCY);
if (r8?.type === QuestRewardTypes.VIRTUAL_CURRENCY) {
return r8.premiumOrbQuantity;
}
}
export function isCollectibleQuestRewardPremiumExtendable(a0) {
const r10 = a0.rewardsConfig.rewards.find($mk82585());
const expirationMode = (r10?.type === QuestRewardTypes.COLLECTIBLE ? r10 : null)?.expirationMode;
return expirationMode != null && c6254_3.has(expirationMode);
}
export function isCollectibleQuestRewardPermanentWithPremiumSubscription(a0) {
const r8 = a0.rewardsConfig.rewards.find($mk82585());
const expirationMode = (r8?.type === QuestRewardTypes.COLLECTIBLE ? r8 : null)?.expirationMode;
let r20 = expirationMode != null && c6254_3.has(expirationMode);
if (r20) {
const r27 = a0.rewardsConfig.rewards.find($mk82585());
r20 = (r27?.type === QuestRewardTypes.COLLECTIBLE ? r27 : null)?.expirationMode === QuestRewardExpirationMode.PREMIUM_PERMANENT;
}
return r20;
}
export function getQuestPrimaryReward(a0) {
let r5 = a0.userStatus?.claimedTier;
if (r5 == null) {
r5 = 0;
}
const r8 = "rewardsConfig" in a0.config;
const config = a0.config;
return r8 ? config.rewardsConfig.rewards[r5] : config.rewards[r5];
}
export function getQuestOrbMultiplier(a0) {
const r11 = a0.rewardsConfig.rewards.find($mk82590());
if (r11?.type !== QuestRewardTypes.VIRTUAL_CURRENCY) {
return null;
}
const { premiumOrbQuantity, orbQuantity } = r11;
return premiumOrbQuantity == null ? null : orbQuantity !== 0 ? Math.round(premiumOrbQuantity / orbQuantity * 100) / 100 : null;
}
export function getQuestOrbMultiplierForUser(a0, a1) {
if (a1 == null) {
return 1;
}
const r17 = a0.rewardsConfig.rewards.find($mk82590());
const type = r17?.type;
const VIRTUAL_CURRENCY = QuestRewardTypes.VIRTUAL_CURRENCY;
let r23 = null;
if (type === VIRTUAL_CURRENCY) {
const { premiumOrbQuantity, orbQuantity } = r17;
r23 = premiumOrbQuantity == null ? null : orbQuantity !== 0 ? Math.round(premiumOrbQuantity / orbQuantity * 100) / 100 : null;
}
if (r23 == null) {
r23 = 1;
}
const questOrbMultiplierEligibilityForUser = getQuestOrbMultiplierEligibilityForUser(a1);
const premiumOrbQuantity2 = a0.rewardsConfig.rewards.find($mk82588())?.premiumOrbQuantity;
return premiumOrbQuantity2 != null && premiumOrbQuantity2 > 0 ? shouldReceiveQuestOrbMultiplier(questOrbMultiplierEligibilityForUser) ? r23 : 1 : 1;
}
export function getQuestOrbRewardQuantityForUser(a0, a1) {
let r30;
const r14 = a0.rewardsConfig.rewards.find($mk82591());
if (r14 == null) {
return null;
}
if (a1 == null) {
return r14.orbQuantity;
}
const questOrbMultiplierEligibilityForUser = getQuestOrbMultiplierEligibilityForUser(a1);
const premiumOrbQuantity = a0.rewardsConfig.rewards.find($mk82588())?.premiumOrbQuantity;
if (premiumOrbQuantity != null && premiumOrbQuantity > 0 && shouldReceiveQuestOrbMultiplier(questOrbMultiplierEligibilityForUser)) {
let premiumOrbQuantity2 = r14.premiumOrbQuantity;
if (premiumOrbQuantity2 == null) {
premiumOrbQuantity2 = r14.orbQuantity;
}
r30 = premiumOrbQuantity2;
} else {
r30 = r14.orbQuantity;
}
return r30;
}
export function getDefaultRewardName(a0, a1) {
return _getDefaultRewardName(a0, a1, false);
}
export function getDefaultRewardNameWithArticle(a0, a1) {
return _getDefaultRewardName(a0, a1, true);
}
export function getRewardCodeQuestReward({ quest, idx }) {
if (idx == null) {
return null;
}
const r10 = quest.config.rewardsConfig.rewards[idx];
return r10.type === QuestRewardTypes.REWARD_CODE ? r10 : null;
}
export function isTieredRewardCodeQuest(a0) {
const rewardsConfig = a0.quest.config.rewardsConfig;
return rewardsConfig.assignmentMethod === QuestRewardAssignmentMethods.TIERED && rewardsConfig.rewards.length > 0 && rewardsConfig.rewards.every((reward) => reward.type === QuestRewardTypes.REWARD_CODE);
}
export function getDefaultPlatform(a0) {
const platforms = a0.rewardsConfig.platforms;
return platforms.length > 0 ? platforms[0] : QuestRewardCodePlatforms.CROSS_PLATFORM;
}
export function getPlatformString(a0) {
if (QuestRewardCodePlatforms.XBOX === a0) {
return intl.string(t.G84UWZ);
}
if (QuestRewardCodePlatforms.PLAYSTATION === a0) {
return intl.string(t["6IeKx2"]);
}
if (QuestRewardCodePlatforms.SWITCH === a0) {
return intl.string(t["1pp0su"]);
}
if (QuestRewardCodePlatforms.PC === a0) {
return intl.string(t["YK+wUg"]);
}
if (QuestRewardCodePlatforms.CROSS_PLATFORM === a0) {
return intl.string(t.UWVbzV);
}
}
+268
View File
@@ -0,0 +1,268 @@
// Metro module 5992 (f5993).
import { match } from "../../../_bundle/Module4389";
import { questFromServerV2, questCosponsorMetadataFromServer } from "../types/v2/Quest";
import { QuestRewardTypes } from "../../../_bundle/Module5990";
let getSimpleRewardFromServer, _questsEntitlementFromServer, $mk77581 = function() {
return (a0) => questFromServerV2(a0);
};
const progressFromServer = function progressFromServer(progress) {
const r0 = {};
for (const item of Object.entries(progress)) {
const [r35, r10] = item;
const heartbeat = r10.heartbeat;
const r42 = heartbeat == null;
let heartbeat2 = null;
if (!r42) {
heartbeat2 = {
lastBeatAt: heartbeat.last_beat_at,
expiresAt: heartbeat.expires_at
};
}
r0[r35] = {
eventName: r10.event_name,
value: r10.value,
updatedAt: r10.updated_at,
completedAt: r10.completed_at,
heartbeat: heartbeat2
};
}
return r0;
};
getSimpleRewardFromServer = function getSimpleRewardFromServer(a0) {
return a0.type === QuestRewardTypes.VIRTUAL_CURRENCY ? {
skuId: a0.sku_id,
type: a0.type,
name: a0.name,
nameWithArticle: a0.name_with_article,
collectibleProduct: a0.collectible_product,
orbQuantity: a0.orb_quantity
} : {
skuId: a0.sku_id,
type: a0.type,
name: a0.name,
nameWithArticle: a0.name_with_article,
asset: a0.asset,
assetVideo: a0.asset_video,
collectibleProduct: a0.collectible_product
};
};
_questsEntitlementFromServer = function _questsEntitlementFromServer(a0) {
const tenant_metadata = a0.tenant_metadata;
const r13 = tenant_metadata?.quest_rewards == null;
let tenantMetadata = null;
if (!r13) {
const quest_rewards = tenant_metadata.quest_rewards;
const tag = quest_rewards.reward.tag;
if (QuestRewardTypes.IN_GAME === tag) {
tenantMetadata = {
questRewards: {
reward: {
tag: quest_rewards.reward.tag
}
}
};
} else {
const REWARD_CODE = QuestRewardTypes.REWARD_CODE;
tenantMetadata = void 0;
if (REWARD_CODE === tag) {
const reward_code = quest_rewards.reward.reward_code;
let tier = reward_code.tier;
if (tier == null) {
tier = null;
}
tenantMetadata = {
questRewards: {
reward: {
tag: quest_rewards.reward.tag,
rewardCode: {
userId: reward_code.user_id,
questId: reward_code.quest_id,
code: reward_code.code,
platform: reward_code.platform,
claimedAt: reward_code.claimed_at,
tier
}
}
}
};
}
}
}
return {
skuId: a0.sku_id,
tenantMetadata,
consumed: a0.consumed
};
};
export function isQuestWithKnownConfigVersion(a0) {
let r15;
try {
r15 = match(a0.config).with({
config_version: 2
}, () => true).exhaustive();
} catch ($e) {
return false;
}
return r15;
}
export function questConfigFromServer(a0) {
return match(a0).with({
config_version: 2
}, $mk77581()).exhaustive();
}
export function questUserStatusFromServer(a0) {
let claimed_tier = a0.claimed_tier;
if (claimed_tier == null) {
claimed_tier = null;
}
let orb_quantity_claimed = a0.orb_quantity_claimed;
if (orb_quantity_claimed == null) {
orb_quantity_claimed = null;
}
return {
userId: a0.user_id,
questId: a0.quest_id,
enrolledAt: a0.enrolled_at,
completedAt: a0.completed_at,
claimedAt: a0.claimed_at,
claimedTier: claimed_tier,
orbQuantityClaimed: orb_quantity_claimed,
lastStreamHeartbeatAt: a0.last_stream_heartbeat_at,
streamProgressSeconds: a0.stream_progress_seconds,
dismissedQuestContent: a0.dismissed_quest_content,
progress: progressFromServer(a0.progress)
};
}
export function questWithUserStatusFromServer(a0) {
const r3 = {
id: a0.id,
preview: a0.preview,
config: match(a0.config).with({
config_version: 2
}, $mk77581()).exhaustive(),
userStatus: null,
targetedContent: null,
trafficMetadataSealed: null
};
const r2 = a0.user_status == null;
let userStatus = null;
if (!r2) {
const user_status = a0.user_status;
let claimed_tier = user_status.claimed_tier;
if (claimed_tier == null) {
claimed_tier = null;
}
let orb_quantity_claimed = user_status.orb_quantity_claimed;
if (orb_quantity_claimed == null) {
orb_quantity_claimed = null;
}
userStatus = {
userId: user_status.user_id,
questId: user_status.quest_id,
enrolledAt: user_status.enrolled_at,
completedAt: user_status.completed_at,
claimedAt: user_status.claimed_at,
claimedTier: claimed_tier,
orbQuantityClaimed: orb_quantity_claimed,
lastStreamHeartbeatAt: user_status.last_stream_heartbeat_at,
streamProgressSeconds: user_status.stream_progress_seconds,
dismissedQuestContent: user_status.dismissed_quest_content,
progress: progressFromServer(user_status.progress)
};
}
r3.userStatus = userStatus;
r3.targetedContent = a0.targeted_content;
r3.trafficMetadataSealed = a0.traffic_metadata_sealed;
return r3;
}
export function excludedQuestFromServer(a0) {
return {
id: a0.id,
replacementId: a0.replacement_id
};
}
export function getClaimedQuestWithUserStatusFromServer(a0) {
const config = a0.config;
const r3 = {
id: a0.id,
config: {
id: config.id,
startsAt: config.starts_at,
expiresAt: config.expires_at,
features: config.features,
messages: {
questName: config.messages.quest_name,
gamePublisher: config.messages.game_publisher,
gameTitle: config.messages.game_title
},
assets: {
hero: config.assets.hero,
heroVideo: config.assets.hero_video,
questBarHero: config.assets.quest_bar_hero,
questBarHeroVideo: config.assets.quest_bar_hero_video,
gameTile: config.assets.game_tile,
logotype: config.assets.logotype,
logotypeLight: config.assets.logotype_light,
logotypeDark: config.assets.logotype_dark,
gameTileLight: config.assets.game_tile_light,
gameTileDark: config.assets.game_tile_dark
},
colors: {
primary: config.colors.primary,
secondary: config.colors.secondary
},
rewards: config.rewards.map(getSimpleRewardFromServer),
cosponsorMetadata: questCosponsorMetadataFromServer(config.cosponsor_metadata)
},
userStatus: null
};
const r2 = a0.user_status == null;
let userStatus = null;
if (!r2) {
const user_status = a0.user_status;
let claimed_tier = user_status.claimed_tier;
if (claimed_tier == null) {
claimed_tier = null;
}
let orb_quantity_claimed = user_status.orb_quantity_claimed;
if (orb_quantity_claimed == null) {
orb_quantity_claimed = null;
}
userStatus = {
userId: user_status.user_id,
questId: user_status.quest_id,
enrolledAt: user_status.enrolled_at,
completedAt: user_status.completed_at,
claimedAt: user_status.claimed_at,
claimedTier: claimed_tier,
orbQuantityClaimed: orb_quantity_claimed,
lastStreamHeartbeatAt: user_status.last_stream_heartbeat_at,
streamProgressSeconds: user_status.stream_progress_seconds,
dismissedQuestContent: user_status.dismissed_quest_content,
progress: progressFromServer(user_status.progress)
};
}
r3.userStatus = userStatus;
return r3;
}
export function questsRewardCodeFromServer(a0) {
let tier = a0.tier;
if (tier == null) {
tier = null;
}
return {
userId: a0.user_id,
questId: a0.quest_id,
code: a0.code,
platform: a0.platform,
claimedAt: a0.claimed_at,
tier
};
}
export function questsEntitlementsFromServer(a0) {
return {
claimedAt: a0.claimed_at,
items: a0.entitlements.map(_questsEntitlementFromServer),
errors: a0.errors
};
}
+511
View File
@@ -0,0 +1,511 @@
// Metro module 6008 (f6009).
import QuestStore from "../QuestStore";
import { FirstPartyQuestTaskTypes, FirstPartyQuestTaskTypesSets } from "../../../_bundle/Module5040";
import { floor } from "../../../_bundle/Module12";
import Durations from "../../../utils/Durations";
import { captureQuestsException } from "./QuestDataUtils";
import { isNotNullish } from "../../../utils/GlobalUtils";
import { $withEnv } from "../../../_hermes/prelude";
function $mk77595($env) {
return (a0) => {
let env25676;
const r0 = env25676 = {};
env25676[0] = a0;
return $env[0].some($mk104843(r0));
};
}
function $mk77596($env) {
return (a0) => $env[0].config.taskConfigV2.tasks[a0] != null;
}
function $mk104843($env) {
return (a0) => $env[0].config.taskConfigV2.tasks[a0] != null;
}
let c3797_0, c3798_0, c3799_0, c3800_0, c3801_0, c3802_0;
let c3796_5, c3796_6, c3796_7, c3796_8, isQuestProgressingOnConsole, _isPlayOnDesktopTaskType, _getTaskDetailsForType, _parseFirstPartyTaskType;
let env3797;
let env3798;
let env3799;
let env3800;
let env3801;
let env3802;
const getApplicationIdsByTaskTypes = function getApplicationIdsByTaskTypes(a0, a1) {
if (a0 == null) {
return void 0;
}
const set = new Set();
for (const item of a1) {
const r34 = a0.config.taskConfigV2.tasks[item];
if (r34 != null && "applications" in r34 && Array.isArray(r34.applications)) {
for (const application of r34.applications) {
set.add(application.id);
}
}
}
return set.size > 0 ? Array.from(set) : void 0;
};
isQuestProgressingOnConsole = function isQuestProgressingOnConsole(quest) {
let r5 = quest.userStatus != null;
if (r5) {
const userStatus = quest.userStatus;
const PLAY_ON_XBOX = FirstPartyQuestTaskTypes.PLAY_ON_XBOX;
const r1 = userStatus == null;
let r13 = void 0;
if (!r1) {
const r22 = userStatus.progress[PLAY_ON_XBOX];
r13 = r22 == null ? void 0 : r22.heartbeat?.expiresAt;
}
const r2 = r13 == null;
let r26 = false;
if (!r2) {
const r32 = new Date(r13).valueOf();
const isNaN2 = isNaN(r32);
r26 = isNaN2 ? !isNaN2 : r32 > Date.now();
}
if (!r26) {
const userStatus2 = quest.userStatus;
const PLAY_ON_PLAYSTATION = FirstPartyQuestTaskTypes.PLAY_ON_PLAYSTATION;
const r44 = userStatus2 == null;
let r45 = void 0;
if (!r44) {
const r47 = userStatus2.progress[PLAY_ON_PLAYSTATION];
r45 = r47 == null ? void 0 : r47.heartbeat?.expiresAt;
}
const r51 = r45 == null;
let r4 = false;
if (!r51) {
const r60 = new Date(r45).valueOf();
const isNaN3 = isNaN(r60);
r4 = isNaN3 ? !isNaN3 : r60 > Date.now();
}
r26 = r4;
}
r5 = r26;
}
return r5;
};
_isPlayOnDesktopTaskType = function _isPlayOnDesktopTaskType(a0) {
return a0?.type === FirstPartyQuestTaskTypes.PLAY_ON_DESKTOP;
};
_getTaskDetailsForType = function _getTaskDetailsForType(a0) {
let r105;
const { quest, taskType } = a0;
let includeTaskTypes = a0.includeTaskTypes;
if (includeTaskTypes === void 0) {
includeTaskTypes = FirstPartyQuestTaskTypesSets.ALL;
}
const ALL = includeTaskTypes;
const taskConfigV2 = quest.config.taskConfigV2;
let taskType2 = taskType;
if (taskType2 == null) {
taskType2 = Object.values(taskConfigV2.tasks).filter((item) => ALL.has(item.type))[0]?.type;
}
let r39 = taskConfigV2.tasks[taskType2];
if (r39 == null) {
r39 = taskConfigV2.tasks[FirstPartyQuestTaskTypes.STREAM_ON_DESKTOP];
}
if (r39 == null) {
const error = new Error(`Quest ${quest.id} has no task matching the include filters`);
const r184 = Array;
if (ALL == null) {
includeTaskTypes = [];
}
captureQuestsException(error, {
tags: {
source: "_getTaskDetailsForType"
},
extra: {
questId: quest.id,
taskType,
includeTaskTypes: r184.from(includeTaskTypes)
}
});
return null;
}
const { target: target2, target } = r39;
const completedAt = quest.userStatus?.completedAt;
let progressSeconds = target;
if (completedAt == null) {
const userStatus = quest.userStatus;
const r52 = userStatus == null;
let r53 = void 0;
if (!r52) {
const progress = userStatus.progress;
r53 = progress == null ? void 0 : progress[r39.type];
}
let r57 = r53?.value;
if (r57 == null) {
r57 = quest.userStatus?.streamProgressSeconds;
}
if (r57 == null) {
r57 = 0;
}
let env15354;
const r63 = env15354 = {};
env15354[0] = quest;
if (c3796_8.$env[0].some($mk104843(r63))) {
let r110 = QuestStore.getOptimisticProgress(quest.id, r39.type);
if (!(r110 != null && !(r110 < r57))) {
r110 = r57;
}
r105 = r110;
} else {
const userStatus2 = quest.userStatus;
const r69 = userStatus2 == null;
let r19 = void 0;
if (!r69) {
const progress2 = userStatus2.progress;
const r71 = progress2 == null;
r19 = void 0;
if (!r71) {
const r73 = progress2[r39.type];
r19 = r73 == null ? void 0 : r73.heartbeat?.lastBeatAt;
}
}
r105 = r57 + (r19 == null ? 0 : isQuestProgressingOnConsole(quest) || QuestStore.isProgressingOnDesktop(quest.id) ? floor((Date.now() - new Date(r19).valueOf()) / Durations.Millis.SECOND, 2) : 0);
}
progressSeconds = Math.max(floor(Math.min(0.99 * target, r105), 2), 0);
}
const r134 = Object.values(taskConfigV2.tasks).find(_isPlayOnDesktopTaskType);
const r135 = r134 == null;
let applications2 = void 0;
if (!r135) {
const applications = r134.applications;
applications2 = applications == null ? void 0 : applications.map((application) => application.id);
}
return {
progressSeconds,
targetSeconds: target2,
targetMinutes: Math.ceil(target2 / Durations.Seconds.MINUTE),
percentComplete: target2 > 0 ? floor(Math.min(progressSeconds / target2, 1), 4) : 0,
taskType: taskType2,
applications: applications2
};
};
_parseFirstPartyTaskType = function _parseFirstPartyTaskType(eventName) {
return FirstPartyQuestTaskTypesSets.ALL.has(eventName) ? eventName : null;
};
const r25 = [FirstPartyQuestTaskTypes.PLAY_ON_XBOX, FirstPartyQuestTaskTypes.PLAY_ON_PLAYSTATION];
const r30 = env3797 = {};
c3797_0 = r25;
c3796_5 = $withEnv($mk77595(r30), r30);
const r35 = [FirstPartyQuestTaskTypes.WATCH_VIDEO];
const r36 = env3798 = {};
c3798_0 = r35;
c3796_6 = $withEnv($mk77595(r36), r36);
const r42 = [FirstPartyQuestTaskTypes.WATCH_VIDEO_ON_MOBILE];
const r43 = env3799 = {};
c3799_0 = r42;
c3796_7 = $withEnv($mk77595(r43), r43);
const r49 = [FirstPartyQuestTaskTypes.WATCH_VIDEO, FirstPartyQuestTaskTypes.WATCH_VIDEO_ON_MOBILE];
const r54 = env3800 = {};
c3800_0 = r49;
c3796_8 = $withEnv($mk77595(r54), r54);
const r60 = [FirstPartyQuestTaskTypes.PLAY_ON_DESKTOP, FirstPartyQuestTaskTypes.STREAM_ON_DESKTOP, FirstPartyQuestTaskTypes.PLAY_ON_PLAYSTATION, FirstPartyQuestTaskTypes.PLAY_ON_XBOX, FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_GAME];
const r77 = env3801 = {};
c3801_0 = r60;
const r12 = [FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_ACTIVITY, FirstPartyQuestTaskTypes.PLAY_ACTIVITY];
const r86 = env3802 = {};
c3802_0 = r12;
export function getAllApplicationIds(a0) {
if (a0 != null) {
return getApplicationIdsByTaskTypes(a0, Object.keys(a0.config.taskConfigV2.tasks));
}
}
export function getDesktopApplicationIds(a0) {
return getApplicationIdsByTaskTypes(a0, [FirstPartyQuestTaskTypes.PLAY_ON_DESKTOP]);
}
export function getConsoleApplicationId(a0) {
const applicationIdsByTaskTypes = getApplicationIdsByTaskTypes(a0, [FirstPartyQuestTaskTypes.PLAY_ON_XBOX, FirstPartyQuestTaskTypes.PLAY_ON_PLAYSTATION]);
return applicationIdsByTaskTypes == null ? void 0 : applicationIdsByTaskTypes[0];
}
export function getPlayActivityApplicationId(a0) {
const applicationIdsByTaskTypes = getApplicationIdsByTaskTypes(a0, [FirstPartyQuestTaskTypes.PLAY_ACTIVITY]);
return applicationIdsByTaskTypes == null ? void 0 : applicationIdsByTaskTypes[0];
}
export function getInGameApplicationId(a0) {
const applicationIdsByTaskTypes = getApplicationIdsByTaskTypes(a0, [FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_GAME]);
return applicationIdsByTaskTypes == null ? void 0 : applicationIdsByTaskTypes[0];
}
export function getActivityApplicationId(a0) {
const applicationIdsByTaskTypes = getApplicationIdsByTaskTypes(a0, [FirstPartyQuestTaskTypes.PLAY_ACTIVITY, FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_ACTIVITY]);
return applicationIdsByTaskTypes == null ? void 0 : applicationIdsByTaskTypes[0];
}
export function getStreamingApplicationId(a0) {
const applicationIdsByTaskTypes = getApplicationIdsByTaskTypes(a0, [FirstPartyQuestTaskTypes.STREAM_ON_DESKTOP]);
return applicationIdsByTaskTypes == null ? void 0 : applicationIdsByTaskTypes[0];
}
export function hasPlayOnDesktopTask(a0) {
return a0.quest.config.taskConfigV2.tasks[FirstPartyQuestTaskTypes.PLAY_ON_DESKTOP] != null;
}
export function hasStreamOnDesktopTask(a0) {
return a0.quest.config.taskConfigV2.tasks[FirstPartyQuestTaskTypes.STREAM_ON_DESKTOP] != null;
}
export function hasAchievementActivityTask(a0) {
return a0.config.taskConfigV2.tasks[FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_ACTIVITY] != null;
}
export function hasAchievementInGameTask(a0) {
return a0.config.taskConfigV2.tasks[FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_GAME] != null;
}
export function hasPlayActivityTask(a0) {
return a0.config.taskConfigV2.tasks[FirstPartyQuestTaskTypes.PLAY_ACTIVITY] != null;
}
export function shouldUsePlayOnDesktopTask(a0) {
return a0 != null && a0.config.taskConfigV2.tasks[FirstPartyQuestTaskTypes.PLAY_ON_DESKTOP] != null;
}
export function hasSomeFirstPartyTasks(a0) {
let env15350;
const r0 = env15350 = {};
env15350[0] = a0;
return $withEnv($mk77595(r0), r0);
}
export function isInGameQuest(a0) {
let env15351;
const r1 = env15351 = {};
env15351[0] = a0;
return Array.from(FirstPartyQuestTaskTypesSets.IN_GAME).some($mk77596(r1));
}
export { c3796_5 as hasSomeConsoleTasks };
export { c3796_6 as hasWatchVideoOnDesktopTasks };
export { c3796_7 as hasWatchVideoOnMobileTasks };
export { c3796_8 as hasWatchVideoTasks };
export const hasStandaloneGameplayTasks = $withEnv($mk77595(r77), r77);
export const hasActivityTasks = $withEnv($mk77595(r86), r86);
export function isVideoQuestForMobilePlatformOnly(a0) {
let env15355;
const r7 = env15355 = {};
env15355[0] = a0;
let r11 = c3796_7.$env[0].some($mk104843(r7));
if (r11) {
let env15356;
const r15 = env15356 = {};
env15356[0] = a0;
r11 = !c3796_6.$env[0].some($mk104843(r15));
}
return r11;
}
export function isConsoleQuest(a0) {
let env15352;
const r5 = env15352 = {};
env15352[0] = a0;
return c3796_5.$env[0].some($mk104843(r5));
}
export function isDesktopOnlyPlayQuest(a0) {
let env15357;
const r4 = env15357 = {};
env15357[0] = a0;
const r12 = c3796_5.$env[0].some($mk104843(r4));
return r12 ? !r12 : a0.config.taskConfigV2.tasks[FirstPartyQuestTaskTypes.PLAY_ON_DESKTOP] != null;
}
export { isQuestProgressingOnConsole };
export function getQuestTaskTypes(a0) {
return new Set(Object.keys(a0.config.taskConfigV2.tasks));
}
export function getDefaultWatchVideoTask(a0) {
let r20;
L7: {
const r11 = a0.taskConfigV2.tasks[FirstPartyQuestTaskTypes.WATCH_VIDEO];
const r18 = a0.taskConfigV2.tasks[FirstPartyQuestTaskTypes.WATCH_VIDEO_ON_MOBILE];
if (r11 != null) {
r20 = r18;
if (r20 != null) {
break L7;
}
}
let r21 = r18 == null ? r11 : r18;
if (r21 == null) {
r21 = null;
}
r20 = r21;
}
return r20;
}
export function getQuestTaskDetails(a0, a1) {
let r64, r80, r94;
let env15358;
const r5 = env15358 = {};
env15358[0] = a0;
if (Array.from(FirstPartyQuestTaskTypesSets.IN_GAME).some($mk77596(r5))) {
r64 = {
progressSeconds: 0,
targetSeconds: 1,
targetMinutes: 1,
percentComplete: 0,
taskType: FirstPartyQuestTaskTypes.STREAM_ON_DESKTOP
};
} else {
let env15359;
const r27 = env15359 = {};
env15359[0] = a0;
if (c3796_5.$env[0].some($mk104843(r27))) {
r64 = (function _getLatestTaskDetails({ quest, includeTaskTypes = FirstPartyQuestTaskTypesSets.ALL }) {
const r6 = Object;
let r30 = quest.userStatus?.progress;
if (r30 == null) {
r30 = {};
}
for (const item of r6.values(r30).sort((a, b) => {
let r0;
const r9 = a == null ? void 0 : a.heartbeat?.lastBeatAt;
const r8 = b == null ? void 0 : b.heartbeat?.lastBeatAt;
L27: {
if (r9 != null && r8 != null) {
r0 = new Date(r9).valueOf() > new Date(r8).valueOf() ? -1 : 1;
} else {
if (r9 == null && r8 == null && a?.updatedAt != null && b?.updatedAt != null) {
r0 = new Date(a.updatedAt).valueOf() > new Date(b.updatedAt).valueOf() ? -1 : 1;
break L27;
}
r0 = r9 != null ? r8 == null ? -1 : 1 : 1;
}
}
return r0;
}).filter(isNotNullish)) {
const r51 = _parseFirstPartyTaskType(item.eventName);
if (r51 == null) {
continue;
}
if (!(includeTaskTypes == null ? void 0 : includeTaskTypes.has(r51))) {
continue;
}
const r59 = _getTaskDetailsForType({
quest,
taskType: r51,
includeTaskTypes
});
if (r59 == null) {
continue;
}
return r59;
}
return _getTaskDetailsForType({
quest,
includeTaskTypes
});
})({
quest: a0,
includeTaskTypes: a1 == null ? isQuestProgressingOnConsole(a0) ? FirstPartyQuestTaskTypesSets.CONSOLE : FirstPartyQuestTaskTypesSets.ALL : a1
});
} else {
let env15360;
const r36 = env15360 = {};
env15360[0] = a0;
if (c3796_8.$env[0].some($mk104843(r36))) {
L23: {
r80 = {
quest: a0,
taskType: null
};
const config = a0.config;
const r86 = config.taskConfigV2.tasks[FirstPartyQuestTaskTypes.WATCH_VIDEO];
const r15 = config.taskConfigV2.tasks[FirstPartyQuestTaskTypes.WATCH_VIDEO_ON_MOBILE];
if (r86 != null) {
r94 = r15;
if (r94 != null) {
break L23;
}
}
let r95 = r15 == null ? r86 : r15;
if (r95 == null) {
r95 = null;
}
r94 = r95;
}
r80.taskType = r94?.type;
r64 = _getTaskDetailsForType(r80);
} else {
r64 = a0 != null && a0.config.taskConfigV2.tasks[FirstPartyQuestTaskTypes.PLAY_ON_DESKTOP] != null ? _getTaskDetailsForType({
quest: a0,
taskType: FirstPartyQuestTaskTypes.PLAY_ON_DESKTOP
}) : a0.config.taskConfigV2.tasks[FirstPartyQuestTaskTypes.PLAY_ACTIVITY] != null ? _getTaskDetailsForType({
quest: a0,
taskType: FirstPartyQuestTaskTypes.PLAY_ACTIVITY
}) : _getTaskDetailsForType({
quest: a0,
taskType: FirstPartyQuestTaskTypes.STREAM_ON_DESKTOP
});
}
}
}
if (r64 != null) {
return r64;
}
let r119 = _getTaskDetailsForType({
quest: a0
});
if (r119 == null) {
r119 = {
progressSeconds: 0,
targetSeconds: 1,
targetMinutes: 1,
percentComplete: 0,
taskType: FirstPartyQuestTaskTypes.STREAM_ON_DESKTOP
};
}
return r119;
}
export function getDefaultInGameTask(a0) {
const tasks = a0.taskConfigV2.tasks;
let r11 = tasks[FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_ACTIVITY];
const r16 = tasks[FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_GAME];
if (r11 == null) {
r11 = r16;
}
if (r11 == null) {
r11 = null;
}
return r11;
}
export function getThirdPartyTaskDetails(a0) {
const tasks = a0.config.taskConfigV2.tasks;
let r7 = tasks[FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_ACTIVITY];
const r22 = tasks[FirstPartyQuestTaskTypes.ACHIEVEMENT_IN_GAME];
if (r7 == null) {
r7 = r22;
}
if (r7 == null) {
r7 = null;
}
if (r7 == null) {
return null;
}
const userStatus = a0.userStatus;
const r3 = userStatus == null;
let progress2 = void 0;
if (!r3) {
const progress = userStatus.progress;
progress2 = progress == null ? void 0 : progress[r7.type]?.value;
}
if (progress2 == null) {
progress2 = 0;
}
const target = r7.target;
return {
title: r7.messages.taskTitle,
description: r7.messages.taskDescription,
target: r7.target,
progress: progress2,
percentComplete: target > 0 ? floor(Math.min(progress2 / target, 1), 4) : 0
};
}
export function getRemainingTaskTime(a0) {
const r7 = a0.targetSeconds - a0.progressSeconds;
return {
minutes: Math.max(0, Math.floor(r7 / 60)),
seconds: Math.max(0, Math.floor(r7 % 60))
};
}
export function parseMinutesAndSecondsFromSeconds(a0) {
return {
minutes: Math.max(0, Math.floor(a0 / 60)),
seconds: Math.max(0, Math.floor(a0 % 60))
};
}
export function formatWatchTaskRemainingTime(a0) {
const r9 = a0.targetSeconds - a0.progressSeconds;
const r15 = Math.max(0, Math.floor(r9 / 60));
const r21 = Math.max(0, Math.floor(r9 % 60));
return `${String(r15).padStart(2, "0")}:${String(r21).padStart(2, "0")}`;
}
export function formatWatchTaskTime(a0, a1) {
return `${String(a0).padStart(2, "0")}:${String(a1).padStart(2, "0")}`;
}
+77
View File
@@ -0,0 +1,77 @@
// Metro module 6006 (f6007).
import GameConsoleStore from "../../game_console/GameConsoleStore";
import GuildStore from "../../../stores/GuildStore";
import PermissionStore from "../../../stores/PermissionStore";
import VoiceStateStore from "../../../stores/VoiceStateStore";
import QuestUtmStore from "../QuestUtmStore";
import { DISCORD_APPLICATION_ID, QuestVariants, RewardFilterTypes } from "../QuestConstants";
import { getDesktopApplicationIds, getPlayActivityApplicationId, hasPlayActivityTask, hasAchievementActivityTask, getQuestTaskTypes, hasWatchVideoTasks } from "./QuestTaskUtils";
import { QuestSharePolicy } from "../../../_bundle/Module6009";
import { canWatchStream } from "../../go_live/utils/StreamPermissionUtils";
import { QuestType } from "../../../_bundle/Module6011";
import { getQuestContentName } from "../lib/analytics/AnalyticsTypes";
let hasVariant;
const isSponsoredPlayQuest = function isSponsoredPlayQuest(a0) {
if (a0 == null) {
return false;
}
const desktopApplicationIds = getDesktopApplicationIds(a0);
return desktopApplicationIds != null && desktopApplicationIds.length > 1;
};
hasVariant = function hasVariant(a0, a1) {
return new Set(a0.config.features).has(a1);
};
export { isSponsoredPlayQuest };
export function isPlayAnyActivityQuest(a0) {
return getPlayActivityApplicationId(a0) === DISCORD_APPLICATION_ID;
}
export { hasVariant };
export function canLaunchActivity(a0) {
return hasPlayActivityTask(a0) || hasAchievementActivityTask(a0);
}
export function filterQuestsForSocialEntrypoints(a0, a1) {
const map = new Map();
loop1: for (const r10 of a0) {
const [r34, r35] = r10;
if (!isSponsoredPlayQuest(r35) && !hasVariant(r35, QuestVariants.NON_GAMING_PLAY_QUEST)) {
for (const item of getQuestTaskTypes(r35)) {
if (!a1.has(item)) {
continue;
}
map.set(r34, r35);
continue loop1;
}
}
}
return map;
}
export function isShareableQuest(a0) {
return a0.sharePolicy !== QuestSharePolicy.NOT_SHAREABLE;
}
export function isStreamingAndCanWatch(a0, a1) {
return a0 != null && a1 != null && canWatchStream(a1, VoiceStateStore, GuildStore, PermissionStore, GameConsoleStore)[0];
}
export function getQuestType(a0) {
return hasWatchVideoTasks({
config: a0
}) ? QuestType.VIDEO : QuestType.GAMEPLAY;
}
export function isQuestFeaturedByHero({ questIds }, a1) {
let r6 = questIds == null ? void 0 : questIds.includes(a1);
if (r6 == null) {
r6 = false;
}
return r6;
}
export function shouldShowBountiesGivenFilters(a0) {
const r7 = a0.some((item) => item.group === "task");
return r7 ? !r7 : a0.length === 0 || a0.some((item) => item.group === "reward" && item.filter === RewardFilterTypes.VIRTUAL_CURRENCY);
}
export function setQuestHomeUtmContext({ questId, fromContent, utmSource, utmMedium }) {
QuestUtmStore.getState().setUtmCurrentContext({
utmSourceCurrent: utmSource,
utmMediumCurrent: utmMedium,
utmCampaignCurrent: questId,
utmContentCurrent: getQuestContentName(fromContent)
});
}
+107
View File
@@ -0,0 +1,107 @@
// Metro module 10500 (f10501).
import NetworkStore from "../../../stores/NetworkStore";
import QuestStore from "../QuestStore";
import VideoQuestUIStore from "../VideoQuestUIStore";
import { AnalyticEvents } from "../../../Constants";
import { isQuestExpired } from "./QuestDataUtils";
import { updateVideoProgress } from "../QuestActionCreators";
import { getRemainingTaskTime, hasWatchVideoTasks } from "./QuestTaskUtils";
import { intl, t } from "../../../intl/index.native";
import { trackQuestEvent } from "../lib/analytics/AnalyticsActions";
import { isModalOpen } from "../../main_tabs_v2/helpers/NavigationRouteUtils.native";
import * as _MobileQuestVideoWatchCtaCopy from "./MobileQuestVideoWatchCtaCopy";
let c7045_6 = "portrait";
export const getVideoQuestWatchCtaText = _MobileQuestVideoWatchCtaCopy.getVideoQuestWatchCtaText;
export function sendVideoProgress(a0, a1) {
if (!(isQuestExpired(a0) || a0.userStatus?.enrolledAt == null || a0.userStatus?.completedAt != null)) {
updateVideoProgress(a0.id, a1);
}
}
export function getVideoOrientation(a0) {
let r9;
L7: {
const video = a0.assets.video;
if (video != null && (video.width != null && video.height != null)) {
const r8 = video.width > video.height;
r9 = "portrait";
if (!r8) {
break L7;
}
r9 = "landscape";
} else {
r9 = c7045_6;
}
}
return r9;
}
export function getVideoQuestProgressRemainingAccessibilityLabel(a0, a1) {
if (a1) {
return intl.string(t["ij5E/5"]);
}
const remainingTaskTime = getRemainingTaskTime(a0);
const { minutes, seconds } = remainingTaskTime;
return intl.formatToPlainString(t.nzYZrt, {
remainingTime: minutes > 0 && seconds > 0 ? intl.formatToPlainString(t["lW/66D"], {
minutes,
seconds
}) : minutes > 0 ? intl.formatToPlainString(t["SxnF/O"], {
count: minutes
}) : intl.formatToPlainString(t["0BZpdi"], {
count: seconds
})
});
}
export function formatVideoProgressRatio(a0, a1) {
return a0 <= 0 ? 0 : a1 <= 0 ? 0 : a0 >= a1 ? 1 : Math.min(1, Math.round(a0 / a1 * 100) / 100);
}
export function getVideoQuestEndCardCtaText(a0) {
let buttonLabel = a0.ctaConfig.buttonLabel;
if (buttonLabel == null) {
buttonLabel = intl.string(t.iiTtpJ);
}
return buttonLabel;
}
export function handleVideoQuestModalClose({ questId, sourceQuestContent, videoSessionId }) {
VideoQuestUIStore.getState().setTranscriptEnabled(false);
const videoProgress = VideoQuestUIStore.getState().getVideoProgress(questId);
if (videoProgress != null) {
const quest = QuestStore.getQuest(questId);
if (quest != null && quest.userStatus?.enrolledAt != null && quest.userStatus?.completedAt == null) {
const maxTimestampSec = videoProgress.maxTimestampSec;
if (!(isQuestExpired(quest) || quest.userStatus?.enrolledAt == null || quest.userStatus?.completedAt != null)) {
updateVideoProgress(quest.id, maxTimestampSec);
}
}
const { maxTimestampSec: maxTimestampSec2, duration } = videoProgress;
const progress = maxTimestampSec2 <= 0 ? 0 : duration <= 0 ? 0 : maxTimestampSec2 >= duration ? 1 : Math.min(1, Math.round(maxTimestampSec2 / duration * 100) / 100);
trackQuestEvent({
questId,
event: AnalyticEvents.QUEST_VIDEO_PROGRESSED,
properties: {
progress,
video_timestamp_seconds: videoProgress.maxTimestampSec,
video_session_id: videoSessionId
},
sourceQuestContent
});
trackQuestEvent({
questId,
event: AnalyticEvents.QUEST_VIDEO_MODAL_CLOSED,
properties: {
video_progress: progress,
video_session_id: videoSessionId,
network_connection_speed: NetworkStore.getEffectiveConnectionSpeed()
},
sourceQuestContent
});
}
}
export function getVideoQuestModalKey(a0) {
return `VIDEO-QUEST-${a0}`;
}
export function computeMaxSeekableTime(a0, a1) {
return a0 >= a1 - 1 ? Math.max(a0, a1) : a0;
}
export function isVideoQuestProgressing(a0) {
return !!hasWatchVideoTasks(a0) && isModalOpen(`VIDEO-QUEST-${a0.id}`);
}