Files
discord-decomp/modules/quests/lib/analytics/ContentImpressionTrackerHooks.tsx
T
2026-11-01 12:12:55 +02:00

55 lines
2.4 KiB
TypeScript

// Metro module 10496 (f10497).
import { useMemo, useContext, useCallback } from "react";
import QuestStore from "../../QuestStore";
import { AdCreativeType } from "../../../../_bundle/Module6013";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { getQuestStatus } from "./AnalyticsTypes";
import usePrevious from "../../../../hooks/usePrevious";
import { QuestImpressionContext } from "./ContentImpressionTracker";
export function useAdContentImpressionTrackerProps(a0) {
let QUEST;
const r11 = "questOrQuests" in a0 ? a0.questOrQuests : void 0;
const r10 = "adContentId" in a0 ? a0.adContentId : void 0;
const questOrQuests = r11;
const adContentId = r10;
const memo = useMemo(() => adContentId != null ? [adContentId] : questOrQuests != null ? Array.isArray(questOrQuests) ? questOrQuests.map((questOrQuest) => questOrQuest.id) : [questOrQuests.id] : [], [questOrQuests, adContentId]);
QUEST = "questOrQuests" in a0 ? AdCreativeType.QUEST : a0.adCreativeType;
return useMemo(() => {
const questContent = a0.questContent;
const key = `${[...memo].sort().join("_")}_${questContent}`;
AdCreativeType.QUEST;
return {
adContentIds: memo,
adCreativeType: QUEST,
key
};
}, [memo, a0.questContent, QUEST]);
}
export function useQuestStatusChanged({ adContentIds, adCreativeType }) {
const stateFromStores = useStateFromStores([QuestStore], () => adCreativeType === AdCreativeType.QUEST ? adContentIds.length === 1 ? QuestStore.getQuest(adContentIds[0]) : null : null, [adContentIds, adCreativeType]);
const memo2 = useMemo(() => stateFromStores != null ? getQuestStatus(stateFromStores) : null, [stateFromStores]);
return memo2 !== usePrevious(memo2);
}
export function useQuestImpressionRef() {
return useContext(QuestImpressionContext);
}
export function useQuestImpression() {
return useContext(QuestImpressionContext)?.current;
}
export function useQuestImpressionId() {
const current = useContext(QuestImpressionContext)?.current;
return current == null ? void 0 : current.getId();
}
export function useGetQuestImpressionId() {
const context = useContext(QuestImpressionContext);
return useCallback(() => {
const r2 = context == null;
let r6 = void 0;
if (!r2) {
const current = context.current;
r6 = current == null ? void 0 : current.getId();
}
return r6;
}, [context]);
}