454 lines
19 KiB
TypeScript
454 lines
19 KiB
TypeScript
// Metro module 10497 (f10498).
|
|
import { createContext, useRef, useEffect } from "react";
|
|
import QuestStore from "../../QuestStore";
|
|
import { HEARTBEAT_SECONDS, MIN_QUEST_VIEW_TIME_SECONDS, MIN_QUEST_CONTENT_VISIBILITY_PERCENTAGE } from "./ContentImpressionTrackerConstants";
|
|
import { AnalyticEvents } from "../../../../Constants";
|
|
import { jsx } from "react/jsx-runtime";
|
|
import { v4 } from "../../../../_bundle/Module514";
|
|
import { shouldMigrateToAdAnalyticsInterface, AdAnalyticsInterfaceExperimentStep } from "../../experiments/AdAnalyticsInterfaceExperiment";
|
|
import { getAdMetadataSealed, isQuestExpired, isBillableQuestContent, getAdTrafficMetadataSealed, getQuestPlacementFromQuestContent } from "../../utils/QuestDataUtils";
|
|
import { AdCreativeType } from "../../../../_bundle/Module6013";
|
|
import { getAdUser } from "../../../ads/utils/AdDataUtils.android";
|
|
import { getQuestContentName, getContentProperties } from "./AnalyticsTypes";
|
|
import { isIOS, isAndroid } from "../../../../utils/PlatformUtils";
|
|
import getDeviceMetadata_native from "../../../device/getDeviceMetadata.native";
|
|
import { getBrandSafetyContext } from "./BrandSafetyContext";
|
|
import { markAdContentSeen } from "../../QuestActionCreators";
|
|
import { captureAdUserAction } from "../../../ads/analytics/captureAdUserAction";
|
|
import { AdUserActionType } from "../../../ads/analytics/captureAdUserActionTypes";
|
|
import { getQuestLogger } from "../getQuestLogger";
|
|
import { trackQuestEvent, trackAdContentEvent } from "./AnalyticsActions";
|
|
import { getCurrentQuestHomeSearchSession } from "./QuestHomeSearchSession";
|
|
import MonitoringAgent from "../../../monitoring/MonitoringAgent";
|
|
import { MetricEvents } from "../../../../_bundle/Module5872";
|
|
import { useQuestStatusChanged } from "./ContentImpressionTrackerHooks";
|
|
import { useStateFromStores } from "../../../../_bundle/Module589";
|
|
import useMountEffect from "../../../../hooks/useMountEffect";
|
|
function $mk118168($env) {
|
|
return (a0, a1) => {
|
|
const r10 = $env;
|
|
const r32 = $env.$parent[0];
|
|
let metadata_sealed = getAdMetadataSealed(r32.sourceQuestContent, a0);
|
|
const shouldExtendSession2 = r32.shouldExtendSession(a0);
|
|
r32.trackViewedPlacement(a0);
|
|
const migrateQuestContentViewedToCaptureAdUserAction = r32.migrateQuestContentViewedToCaptureAdUserAction;
|
|
const adCreativeType = r32.entity.adCreativeType;
|
|
const QUEST = AdCreativeType.QUEST;
|
|
if (migrateQuestContentViewedToCaptureAdUserAction) {
|
|
if (adCreativeType === QUEST) {
|
|
const r151 = r32.entity.adContentIds[a1];
|
|
const quest2 = QuestStore.getQuest(r151);
|
|
if (!(quest2 == null || isQuestExpired(quest2))) {
|
|
markAdContentSeen(AdCreativeType.QUEST, [r151]);
|
|
}
|
|
}
|
|
r32.entity.adCreativeType;
|
|
AdCreativeType.QUEST;
|
|
const r177 = {
|
|
adCreativeType: r32.entity.adCreativeType,
|
|
adCreativeId: r32.entity.adContentIds[a1]
|
|
};
|
|
captureAdUserAction({
|
|
type: isBillableQuestContent(r32.questContent) ? AdUserActionType.VIEW_EXTERNAL_PAID_AD_PLACEMENT_IMPRESSION : AdUserActionType.VIEW_INTERNAL_SURFACE_IMPRESSION,
|
|
surfaceId: r32.questContent,
|
|
sourceQuestContent: r32.sourceQuestContent,
|
|
impressionId: r32.id,
|
|
triggeredByStatusChange: r32.triggeredByStatusChange,
|
|
minViewTimeSeconds: r32.minViewTimeSeconds,
|
|
minViewportPercentage: r32.minViewportPercentage,
|
|
isQuestEnrollmentBlocked: r32.isQuestEnrollmentBlocked,
|
|
shouldExtendSession: shouldExtendSession2,
|
|
adUser: r10[0],
|
|
questContentPosition: r32.questContentPosition,
|
|
questContentRowIndex: r32.questContentRowIndex,
|
|
trackGuildAndChannelMetadata: r32.trackGuildAndChannelMetadata,
|
|
...r177
|
|
});
|
|
getQuestLogger().info(`${a0} ad content viewed for at least ${r32.minViewTimeSeconds}s at ${getQuestContentName(r32.questContent)}`, {
|
|
impressionId: r32.id
|
|
});
|
|
return void 0;
|
|
}
|
|
if (adCreativeType === QUEST) {
|
|
const questId = r32.entity.adContentIds[a1];
|
|
const quest = QuestStore.getQuest(questId);
|
|
if (!(quest == null || isQuestExpired(quest))) {
|
|
markAdContentSeen(AdCreativeType.QUEST, [questId]);
|
|
}
|
|
const questLogger = getQuestLogger();
|
|
let r24 = quest == null ? void 0 : quest.config.messages.questName;
|
|
if (r24 == null) {
|
|
r24 = questId;
|
|
}
|
|
questLogger.info(`${r24} Quest viewed for at least ${r32.minViewTimeSeconds}s at ${getQuestContentName(r32.questContent)}`, {
|
|
impressionId: r32.id
|
|
});
|
|
const properties = {
|
|
...r10[2],
|
|
...r32.commonProperties()
|
|
};
|
|
if (metadata_sealed == null) {
|
|
metadata_sealed = null;
|
|
}
|
|
properties.metadata_sealed = metadata_sealed;
|
|
let search_session_id = getCurrentQuestHomeSearchSession()?.uuid;
|
|
if (search_session_id == null) {
|
|
search_session_id = null;
|
|
}
|
|
properties.search_session_id = search_session_id;
|
|
let traffic_metadata_sealed = getAdTrafficMetadataSealed(r32.sourceQuestContent, quest?.id);
|
|
if (traffic_metadata_sealed == null) {
|
|
traffic_metadata_sealed = null;
|
|
}
|
|
properties.traffic_metadata_sealed = traffic_metadata_sealed;
|
|
trackQuestEvent({
|
|
...r10[1],
|
|
shouldExtendSession: shouldExtendSession2,
|
|
questId,
|
|
event: AnalyticEvents.QUEST_CONTENT_VIEWED,
|
|
properties
|
|
});
|
|
} else {
|
|
const adContentId = r32.entity.adContentIds[a1];
|
|
getQuestLogger().info(`${adContentId} ad content viewed for at least ${r32.minViewTimeSeconds}s at ${getQuestContentName(r32.questContent)}`, {
|
|
impressionId: r32.id
|
|
});
|
|
trackAdContentEvent({
|
|
...r10[1],
|
|
shouldExtendSession: shouldExtendSession2,
|
|
adContentId,
|
|
adCreativeType: r32.entity.adCreativeType,
|
|
event: AnalyticEvents.QUEST_CONTENT_VIEWED,
|
|
properties: {
|
|
...r10[2],
|
|
...r32.commonProperties()
|
|
}
|
|
});
|
|
}
|
|
};
|
|
}
|
|
let QuestContentImpression, c7042_13;
|
|
let env7042 = {};
|
|
const c7042_11 = new Set();
|
|
const c7042_14 = class QuestContentImpression {
|
|
constructor(a0) {
|
|
let env18074;
|
|
const _this = this;
|
|
this.isRunning = false;
|
|
this.trackViewedPlacement = (a0) => {
|
|
const questPlacementFromQuestContent = getQuestPlacementFromQuestContent(_this.questContent);
|
|
if (questPlacementFromQuestContent != null && isBillableQuestContent(_this.questContent)) {
|
|
c7042_11.add(`${a0}_${questPlacementFromQuestContent}`);
|
|
}
|
|
};
|
|
this.shouldExtendSession = (a0) => {
|
|
const questPlacementFromQuestContent = getQuestPlacementFromQuestContent(_this.questContent);
|
|
return questPlacementFromQuestContent != null && !c7042_11.has(`${a0}_${questPlacementFromQuestContent}`) && isBillableQuestContent(_this.questContent);
|
|
};
|
|
env18074 = {
|
|
$parent: env7042
|
|
};
|
|
env18074[0] = this;
|
|
this.onMinViewTimeReached = async () => {
|
|
let env31534;
|
|
const r25 = env18074;
|
|
let c30234_1 = r25;
|
|
const r9 = env31534 = {
|
|
$parent: r25
|
|
};
|
|
let c30234_0 = r9;
|
|
env31534[0] = void 0;
|
|
env31534[1] = void 0;
|
|
env31534[2] = void 0;
|
|
env31534[0] = await getAdUser(getQuestContentName(env18074[0].questContent));
|
|
env31534[1] = {
|
|
trackGuildAndChannelMetadata: env18074[0].trackGuildAndChannelMetadata,
|
|
sourceQuestContent: env18074[0].sourceQuestContent
|
|
};
|
|
const apple_advertising_id = env31534[0] != null ? isIOS() ? env31534[0].advertisingId : null : null;
|
|
const android_advertising_id = env31534[0] != null ? isAndroid() ? env31534[0].advertisingId : null : null;
|
|
env31534[2] = {
|
|
min_view_time_seconds: env18074[0].minViewTimeSeconds,
|
|
min_viewport_percentage: env18074[0].minViewportPercentage,
|
|
triggered_by_status_change: env18074[0].triggeredByStatusChange,
|
|
apple_advertising_id,
|
|
android_advertising_id,
|
|
...getDeviceMetadata_native(),
|
|
...getBrandSafetyContext(env18074[0].questContent)
|
|
};
|
|
env18074[0].entity.adContentIds.forEach($mk118168(c30234_0));
|
|
const r108 = env18074[0];
|
|
const onImpressionCallback = r108.onImpressionCallback;
|
|
if (onImpressionCallback != null) {
|
|
onImpressionCallback.call(r108);
|
|
}
|
|
};
|
|
this.beat = function beat(is_termination_beat = false) {
|
|
let c26698_1, c26698_2, c26698_3;
|
|
let c26698_0 = is_termination_beat;
|
|
c26698_1 = void 0;
|
|
c26698_2 = void 0;
|
|
c26698_3 = void 0;
|
|
if (_this.lastBeatTime != null) {
|
|
const viewed_time_ms = Math.round(Date.now() - _this.lastBeatTime);
|
|
c26698_1 = viewed_time_ms;
|
|
c26698_2 = {
|
|
trackGuildAndChannelMetadata: _this.trackGuildAndChannelMetadata,
|
|
sourceQuestContent: _this.sourceQuestContent
|
|
};
|
|
c26698_3 = {
|
|
is_termination_beat,
|
|
viewed_time_ms,
|
|
triggered_by_status_change: _this.triggeredByStatusChange
|
|
};
|
|
_this.entity.adContentIds.forEach((a0, index) => {
|
|
if (_this.entity.adCreativeType === AdCreativeType.QUEST) {
|
|
const questId = _this.entity.adContentIds[index];
|
|
const quest = QuestStore.getQuest(questId);
|
|
const questLogger = getQuestLogger();
|
|
let r73 = quest == null ? void 0 : quest.config.messages.questName;
|
|
if (r73 == null) {
|
|
r73 = questId;
|
|
}
|
|
questLogger.info(`${r73} Quest impression ${c26698_0 ? "terminal " : ""}heartbeat: ${c26698_1}ms since last heartbeat`, {
|
|
impressionId: _this.id
|
|
});
|
|
trackQuestEvent({
|
|
...c26698_2,
|
|
questId,
|
|
event: AnalyticEvents.QUEST_CONTENT_VIEW_TIME,
|
|
properties: {
|
|
...c26698_3,
|
|
..._this.commonProperties()
|
|
}
|
|
});
|
|
} else {
|
|
const adContentId = _this.entity.adContentIds[index];
|
|
getQuestLogger().info(`${adContentId} ad content impression ${c26698_0 ? "terminal " : ""}heartbeat: ${c26698_1}ms since last heartbeat`, {
|
|
impressionId: _this.id
|
|
});
|
|
trackAdContentEvent({
|
|
...c26698_2,
|
|
adContentId,
|
|
adCreativeType: _this.entity.adCreativeType,
|
|
event: AnalyticEvents.QUEST_CONTENT_VIEW_TIME,
|
|
properties: {
|
|
...c26698_3,
|
|
..._this.commonProperties()
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
_this.lastBeatTime = Date.now();
|
|
};
|
|
this.commonProperties = () => ({
|
|
impression_id: _this.id,
|
|
is_quest_enrollment_blocked: _this.isQuestEnrollmentBlocked,
|
|
...getContentProperties(_this.questContent, _this.questContentPosition, _this.questContentRowIndex)
|
|
});
|
|
this.clone = ({ triggeredByStatusChange }) => {
|
|
_this.stop();
|
|
return new c7042_14({
|
|
questContent: _this.questContent,
|
|
questContentRowIndex: _this.questContentRowIndex,
|
|
questContentPosition: _this.questContentPosition,
|
|
trackGuildAndChannelMetadata: _this.trackGuildAndChannelMetadata,
|
|
triggeredByStatusChange,
|
|
isQuestEnrollmentBlocked: _this.isQuestEnrollmentBlocked,
|
|
onImpression: _this.onImpressionCallback,
|
|
sourceQuestContent: _this.sourceQuestContent,
|
|
..._this.entity
|
|
});
|
|
};
|
|
this.start = () => {
|
|
let c26699_0, c26699_1;
|
|
_this.stop(false);
|
|
_this.lastBeatTime = Date.now();
|
|
_this.heartbeatTimeoutId = window.setInterval(() => _this.beat(), 1000 * HEARTBEAT_SECONDS);
|
|
_this.minViewTimeReachedTimeoutId = window.setTimeout(_this.onMinViewTimeReached, 1000 * _this.minViewTimeSeconds);
|
|
c26699_0 = {
|
|
trackGuildAndChannelMetadata: _this.trackGuildAndChannelMetadata,
|
|
sourceQuestContent: _this.sourceQuestContent
|
|
};
|
|
c26699_1 = {
|
|
triggered_by_status_change: _this.triggeredByStatusChange
|
|
};
|
|
_this.entity.adContentIds.forEach((a0, index) => {
|
|
let metadata_sealed = getAdMetadataSealed(_this.sourceQuestContent, a0);
|
|
const migrateQuestContentLoadedToCaptureAdUserAction = _this.migrateQuestContentLoadedToCaptureAdUserAction;
|
|
const adCreativeType = _this.entity.adCreativeType;
|
|
const QUEST = AdCreativeType.QUEST;
|
|
if (migrateQuestContentLoadedToCaptureAdUserAction) {
|
|
captureAdUserAction({
|
|
type: AdUserActionType.END_CONTENT_LOAD,
|
|
surfaceId: _this.questContent,
|
|
sourceQuestContent: _this.sourceQuestContent,
|
|
impressionId: _this.id,
|
|
triggeredByStatusChange: _this.triggeredByStatusChange,
|
|
trackGuildAndChannelMetadata: _this.trackGuildAndChannelMetadata,
|
|
questContentPosition: _this.questContentPosition,
|
|
questContentRowIndex: _this.questContentRowIndex,
|
|
...{
|
|
adCreativeType: _this.entity.adCreativeType,
|
|
adCreativeId: _this.entity.adContentIds[index]
|
|
}
|
|
});
|
|
} else if (adCreativeType === QUEST) {
|
|
const questId = _this.entity.adContentIds[index];
|
|
const quest = QuestStore.getQuest(questId);
|
|
const questLogger = getQuestLogger();
|
|
let r18 = quest == null ? void 0 : quest.config.messages.questName;
|
|
if (r18 == null) {
|
|
r18 = questId;
|
|
}
|
|
questLogger.info(`${r18} Quest became visible at ${getQuestContentName(_this.questContent)}`, {
|
|
impressionId: _this.id
|
|
});
|
|
if (metadata_sealed == null) {
|
|
metadata_sealed = null;
|
|
}
|
|
const properties = {
|
|
...c26699_1,
|
|
metadata_sealed,
|
|
..._this.commonProperties()
|
|
};
|
|
let traffic_metadata_sealed = getAdTrafficMetadataSealed(_this.sourceQuestContent, quest?.id);
|
|
if (traffic_metadata_sealed == null) {
|
|
traffic_metadata_sealed = null;
|
|
}
|
|
properties.traffic_metadata_sealed = traffic_metadata_sealed;
|
|
trackQuestEvent({
|
|
...c26699_0,
|
|
questId,
|
|
event: AnalyticEvents.QUEST_CONTENT_LOADED,
|
|
properties
|
|
});
|
|
} else {
|
|
const adContentId = _this.entity.adContentIds[index];
|
|
getQuestLogger().info(`${adContentId} ad content became visible at ${getQuestContentName(_this.questContent)}`, {
|
|
impressionId: _this.id
|
|
});
|
|
trackAdContentEvent({
|
|
...c26699_0,
|
|
adContentId,
|
|
adCreativeType: _this.entity.adCreativeType,
|
|
event: AnalyticEvents.QUEST_CONTENT_LOADED,
|
|
properties: {
|
|
...c26699_1,
|
|
..._this.commonProperties()
|
|
}
|
|
});
|
|
}
|
|
});
|
|
MonitoringAgent.increment({
|
|
name: MetricEvents.QUEST_CONTENT_IMPRESSION,
|
|
tags: [`quest_content:${getQuestContentName(_this.questContent)}`]
|
|
});
|
|
_this.isRunning = true;
|
|
};
|
|
this.stop = function stop(r3 = true) {
|
|
if (r3) {
|
|
_this.beat(true);
|
|
}
|
|
_this.lastBeatTime = void 0;
|
|
clearInterval(_this.heartbeatTimeoutId);
|
|
clearTimeout(_this.minViewTimeReachedTimeoutId);
|
|
_this.isRunning = false;
|
|
};
|
|
const { adContentIds, adCreativeType, questContent, triggeredByStatusChange, trackGuildAndChannelMetadata, questContentPosition, questContentRowIndex, minViewTimeSeconds = MIN_QUEST_VIEW_TIME_SECONDS, isQuestEnrollmentBlocked, onImpression, sourceQuestContent: sourceQuestContent2 } = a0;
|
|
this.id = v4();
|
|
this.questContent = questContent;
|
|
this.questContentPosition = questContentPosition;
|
|
this.minViewTimeSeconds = minViewTimeSeconds;
|
|
this.minViewportPercentage = MIN_QUEST_CONTENT_VISIBILITY_PERCENTAGE;
|
|
this.trackGuildAndChannelMetadata = trackGuildAndChannelMetadata;
|
|
this.triggeredByStatusChange = triggeredByStatusChange;
|
|
this.questContentRowIndex = questContentRowIndex;
|
|
this.isQuestEnrollmentBlocked = isQuestEnrollmentBlocked;
|
|
this.onImpressionCallback = onImpression;
|
|
this.sourceQuestContent = sourceQuestContent2;
|
|
this.migrateQuestContentLoadedToCaptureAdUserAction = shouldMigrateToAdAnalyticsInterface(AdAnalyticsInterfaceExperimentStep.STEP_1_LOADED, "quest_content_impression");
|
|
this.migrateQuestContentViewedToCaptureAdUserAction = shouldMigrateToAdAnalyticsInterface(isBillableQuestContent(questContent) ? AdAnalyticsInterfaceExperimentStep.STEP_5_VIEWED_IMPRESSION : AdAnalyticsInterfaceExperimentStep.STEP_4_VIEWED_NON_IMPRESSION, "quest_content_impression");
|
|
AdCreativeType.QUEST;
|
|
this.entity = {
|
|
adContentIds,
|
|
adCreativeType
|
|
};
|
|
}
|
|
getId() {
|
|
return this.id;
|
|
}
|
|
getQuestContentPosition() {
|
|
return this.questContentPosition;
|
|
}
|
|
};
|
|
QuestContentImpression = c7042_14;
|
|
const context = createContext(void 0);
|
|
c7042_13 = context;
|
|
export { c7042_14 as QuestContentImpression };
|
|
export { context as QuestImpressionContext };
|
|
export function QuestContentImpressionTracker(a0) {
|
|
const { visible, visibleChanged, focused, reference, focusedChanged, sourceQuestContent } = a0;
|
|
const questStatusChanged = useQuestStatusChanged(a0);
|
|
const ref = useRef(null);
|
|
const stateFromStores = useStateFromStores([QuestStore], () => QuestStore.questEnrollmentBlockedUntil != null, []);
|
|
useMountEffect(() => () => {
|
|
if (ref.current != null) {
|
|
ref.current.stop();
|
|
}
|
|
});
|
|
useEffect(() => {
|
|
let r5 = focused;
|
|
if (focused) {
|
|
r5 = visible;
|
|
}
|
|
let r4 = visibleChanged;
|
|
const r2 = ((visibleChanged ? visibleChanged : focusedChanged) || questStatusChanged) && r5;
|
|
let r3 = r2;
|
|
if (!r3) {
|
|
if (!visibleChanged) {
|
|
r4 = focusedChanged;
|
|
}
|
|
if (r4) {
|
|
r4 = !r5;
|
|
}
|
|
r3 = r4;
|
|
}
|
|
if (!r3) {
|
|
r3 = questStatusChanged;
|
|
}
|
|
if (r3) {
|
|
r3 = ref.current != null;
|
|
}
|
|
if (r3) {
|
|
ref.current.stop();
|
|
}
|
|
if (r2) {
|
|
const r19 = {
|
|
isQuestEnrollmentBlocked: stateFromStores,
|
|
minViewTimeSeconds: a0.minViewTimeSeconds,
|
|
onImpression: a0.onImpression,
|
|
questContent: a0.questContent,
|
|
questContentPosition: a0.questContentPosition,
|
|
questContentRowIndex: a0.questContentRowIndex,
|
|
sourceQuestContent,
|
|
trackGuildAndChannelMetadata: a0.trackGuildAndChannelMetadata,
|
|
triggeredByStatusChange: questStatusChanged
|
|
};
|
|
a0.adCreativeType;
|
|
AdCreativeType.QUEST;
|
|
ref.current = new QuestContentImpression({
|
|
...r19,
|
|
adContentIds: a0.adContentIds,
|
|
adCreativeType: a0.adCreativeType
|
|
});
|
|
ref.current.start();
|
|
}
|
|
}, [focused, visible, focusedChanged, visibleChanged, a0.adContentIds, a0.onImpression, a0.questContent, a0.questContentPosition, a0.questContentRowIndex, a0.trackGuildAndChannelMetadata, questStatusChanged, a0.minViewTimeSeconds, stateFromStores, sourceQuestContent, a0.adCreativeType]);
|
|
return (0, jsx)(c7042_13.Provider, {
|
|
value: ref,
|
|
children: a0.children(reference, ref)
|
|
});
|
|
}
|