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

269 lines
7.9 KiB
TypeScript

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