Files
discord-decomp/modules/quests/utils/QuestUtils.tsx
T
2026-11-01 12:12:55 +02:00

78 lines
3.0 KiB
TypeScript

// 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)
});
}