77 lines
2.9 KiB
TypeScript
77 lines
2.9 KiB
TypeScript
// Metro module 14142 (f14143).
|
|
import { useEffect, useRef } from "react";
|
|
import QuestStore from "./QuestStore";
|
|
import Durations from "../../utils/Durations";
|
|
import { getIsEligibleForQuests } from "./lib/QuestsEligibility";
|
|
import DiscordAppState_native from "../app_state/DiscordAppState.native";
|
|
import { fetchCurrentQuests, fetchQuestToDeliver, clearQuestAdDecision } from "./QuestActionCreators";
|
|
import NewAdRequestBehaviorExperiment from "./experiments/NewAdRequestBehaviorExperiment";
|
|
import { useStateFromStores } from "../../_bundle/Module589";
|
|
import AdRecheckIntervalExperiment from "./experiments/AdRecheckIntervalExperiment";
|
|
import { isQuestExpired } from "./utils/QuestDataUtils";
|
|
let c9897_6, c9897_7;
|
|
const maybeRefreshAd = function maybeRefreshAd(stateFromStores, a1, a2) {
|
|
if (getIsEligibleForQuests() && !(stateFromStores != null && stateFromStores.fetchedAt + stateFromStores.ttlMillis >= Date.now())) {
|
|
if (DiscordAppState_native.getState() === "active") {
|
|
if (!QuestStore.isFetchingQuestToDeliverByPlacement(a1) && QuestStore.canRefreshAd(a1) && NewAdRequestBehaviorExperiment.getConfig({
|
|
location: "maybeRefreshAd"
|
|
}).enableNewRequestBehavior) {
|
|
fetchCurrentQuests();
|
|
fetchQuestToDeliver(a1, a2);
|
|
}
|
|
} else if (stateFromStores != null) {
|
|
clearQuestAdDecision(a1, stateFromStores.ttlMillis);
|
|
}
|
|
}
|
|
};
|
|
c9897_6 = 10 * Durations.Millis.MINUTE;
|
|
c9897_7 = 30 * Durations.Millis.SECOND;
|
|
export default function useQuestForAdPlacement(a0) {
|
|
let enableFastAdRecheck;
|
|
const ref = useRef(null);
|
|
const stateFromStores = useStateFromStores([QuestStore], () => {
|
|
let r7 = QuestStore.questAdDecisionByPlacement.get(a0);
|
|
if (r7 == null) {
|
|
r7 = null;
|
|
}
|
|
return r7;
|
|
});
|
|
const stateFromStores2 = useStateFromStores([QuestStore], () => {
|
|
const r7 = stateFromStores?.questId != null;
|
|
let r8 = null;
|
|
if (r7) {
|
|
let r12 = QuestStore.quests.get(stateFromStores.questId);
|
|
if (r12 == null) {
|
|
r12 = null;
|
|
}
|
|
r8 = r12;
|
|
}
|
|
return r8;
|
|
});
|
|
enableFastAdRecheck = AdRecheckIntervalExperiment.useConfig({
|
|
location: "useQuestForAdPlacement"
|
|
}).enableFastAdRecheck;
|
|
useEffect(() => {
|
|
if (ref.current != null) {
|
|
clearInterval(ref.current);
|
|
}
|
|
const r1 = enableFastAdRecheck ? c9897_7 : c9897_6;
|
|
let current;
|
|
maybeRefreshAd(stateFromStores, a0, "questBar-open");
|
|
ref.current = setInterval(() => {
|
|
let r9 = QuestStore.questAdDecisionByPlacement.get(a0);
|
|
if (r9 == null) {
|
|
r9 = null;
|
|
}
|
|
maybeRefreshAd(r9, a0, "questBar-interval");
|
|
}, r1);
|
|
current = ref.current;
|
|
return () => {
|
|
if (current != null) {
|
|
clearInterval(current);
|
|
}
|
|
};
|
|
}, [stateFromStores, a0, enableFastAdRecheck]);
|
|
return stateFromStores2 == null ? null : isQuestExpired(stateFromStores2) ? null : stateFromStores2;
|
|
};
|