133 lines
4.7 KiB
TypeScript
133 lines
4.7 KiB
TypeScript
// Metro module 9474 (f9475).
|
|
import NetworkStore from "../../stores/NetworkStore";
|
|
import QuestStore from "./QuestStore";
|
|
import { AnalyticEvents } from "../../Constants";
|
|
import { getSignalStrength } from "../network/NetStats.android";
|
|
import AnalyticsUtils from "../../utils/AnalyticsUtils";
|
|
import getDeviceMetadata_native from "../device/getDeviceMetadata.native";
|
|
import { isForegrounded } from "../analytics_sessions/SessionForegroundUtils.native";
|
|
import NewAdRequestBehaviorExperiment from "./experiments/NewAdRequestBehaviorExperiment";
|
|
const trackRoundtrip = function trackRoundtrip(a0, a1, a2) {
|
|
if (!(Math.random() > 0.1)) {
|
|
const api_latency_ms = a0.apiResponseTimestamp == null ? null : a0.apiResponseTimestamp - a0.initialSendTimestamp;
|
|
const signalStrength = getSignalStrength();
|
|
const QUEST_DECISION_ROUNDTRIP = AnalyticEvents.QUEST_DECISION_ROUNDTRIP;
|
|
const r30 = {
|
|
...getDeviceMetadata_native(),
|
|
endpoint: a0.endpoint,
|
|
was_successful: a0.wasSuccessful,
|
|
api_latency_ms,
|
|
mobile_network_type: NetworkStore.getType(),
|
|
...signalStrength != null && {
|
|
mobile_signal_strength_level: signalStrength
|
|
},
|
|
caller_source: a0.callerSource,
|
|
ad_request_id: a0.adRequestId,
|
|
fetched_at: a2
|
|
};
|
|
const previousAdDecision = a0.previousAdDecision;
|
|
let previous_ad_request_id = previousAdDecision == null ? void 0 : previousAdDecision.adDecisionData?.decision_id;
|
|
if (previous_ad_request_id == null) {
|
|
previous_ad_request_id = null;
|
|
}
|
|
r30.previous_ad_request_id = previous_ad_request_id;
|
|
let previous_fetched_at = a0.previousAdDecision?.fetchedAt;
|
|
if (previous_fetched_at == null) {
|
|
previous_fetched_at = null;
|
|
}
|
|
r30.previous_fetched_at = previous_fetched_at;
|
|
r30.transition_case = a1;
|
|
r30.is_foregrounded = isForegrounded();
|
|
AnalyticsUtils.track(QUEST_DECISION_ROUNDTRIP, r30);
|
|
}
|
|
};
|
|
class QuestDecisionRoundtripTracker {
|
|
constructor() {
|
|
return {
|
|
__proto__: new.target.prototype,
|
|
pendingRequests: new Map()
|
|
};
|
|
}
|
|
recordQuestRequestAttempt(a0, a1) {
|
|
let placement = arguments[2];
|
|
if (placement === void 0) {
|
|
placement = null;
|
|
}
|
|
const enableNewRequestBehavior = NewAdRequestBehaviorExperiment.getConfig({
|
|
location: "recordQuestRequestAttempt"
|
|
}).enableNewRequestBehavior;
|
|
let previousAdDecision = null;
|
|
if (enableNewRequestBehavior) {
|
|
const r3 = placement != null;
|
|
previousAdDecision = null;
|
|
if (r3) {
|
|
let r23 = QuestStore.questAdDecisionByPlacement.get(placement);
|
|
if (r23 == null) {
|
|
r23 = null;
|
|
}
|
|
previousAdDecision = r23;
|
|
}
|
|
}
|
|
this.pendingRequests.set(a0, {
|
|
initialSendTimestamp: Date.now(),
|
|
endpoint: a0,
|
|
apiResponseTimestamp: null,
|
|
wasSuccessful: false,
|
|
callerSource: a1,
|
|
adRequestId: null,
|
|
previousAdDecision,
|
|
placement
|
|
});
|
|
setTimeout(() => {
|
|
const pendingRequests = this.pendingRequests;
|
|
const r6 = pendingRequests.get(a0);
|
|
if (r6 != null) {
|
|
trackRoundtrip(r6, "timeout", null);
|
|
this.pendingRequests.delete(a0);
|
|
}
|
|
}, 30000);
|
|
}
|
|
recordQuestRequestApiResponse(a0, { wasSuccessful, adRequestId = null, currentQuestId = null, currentFetchedAt = null }) {
|
|
const r12 = this.pendingRequests.get(a0);
|
|
if (r12 != null) {
|
|
const enableNewRequestBehavior = NewAdRequestBehaviorExperiment.getConfig({
|
|
location: "recordQuestRequestApiResponse"
|
|
}).enableNewRequestBehavior;
|
|
let r31 = "legacy";
|
|
let r32 = null;
|
|
if (enableNewRequestBehavior) {
|
|
const r14 = currentFetchedAt !== null ? {
|
|
questId: currentQuestId,
|
|
adCreativeId: currentQuestId,
|
|
fetchedAt: currentFetchedAt,
|
|
ttlMillis: 0,
|
|
adDecisionData: adRequestId != null ? {
|
|
decision_id: adRequestId
|
|
} : void 0
|
|
} : null;
|
|
const previousAdDecision = r12.previousAdDecision;
|
|
const r36 = previousAdDecision == null;
|
|
let r19 = "null";
|
|
const r18 = r36 ? "null" : previousAdDecision.questId == null ? "no_serve" : "quest";
|
|
if (r14 != null) {
|
|
r19 = r14.questId == null ? "no_serve" : "quest";
|
|
}
|
|
r31 = r18 === "quest" && r19 === "quest" ? previousAdDecision?.questId === r14?.questId ? "same_quest" : "different_quest" : `${r18}_to_${r19}`;
|
|
r32 = currentFetchedAt;
|
|
}
|
|
trackRoundtrip({
|
|
...r12,
|
|
apiResponseTimestamp: Date.now(),
|
|
wasSuccessful,
|
|
adRequestId
|
|
}, r31, r32);
|
|
this.pendingRequests.delete(a0);
|
|
}
|
|
}
|
|
}
|
|
const r36 = {
|
|
__proto__: QuestDecisionRoundtripTracker.prototype,
|
|
pendingRequests: new Map()
|
|
};
|
|
export default r36;
|