Files
discord-decomp/modules/app_launcher/native/hooks/useTrackAppLauncherItemImpressionOnFirstView.tsx
T
2026-11-01 12:12:55 +02:00

34 lines
1.3 KiB
TypeScript

// Metro module 11274 (f11275).
import { useRef, useCallback } from "react";
import { useAppLauncherContext } from "../AppLauncherContext";
import { useFocusEffect } from "../../../../_bundle/Module1481";
import { trackImpression } from "../../../app_analytics/useTrackImpression";
import { ImpressionTypes, ImpressionNames } from "../../../../_bundle/Module503";
export function useTrackAppLauncherItemImpressionOnFirstView() {
const entrypoint = useAppLauncherContext().entrypoint;
const ref = useRef(new Set());
useFocusEffect(useCallback(() => {
ref.current.clear();
}, []));
return {
trackAppLauncherItemImpressionOnFirstView: useCallback(({ itemKey, sectionName, sectionPosition, sectionOverallPosition, applicationId, commandId, applicationFlags }) => {
if (!ref.current.has(itemKey)) {
ref.current.add(itemKey);
trackImpression({
type: ImpressionTypes.VIEW,
name: ImpressionNames.APP_LAUNCHER_ITEM,
properties: {
source: entrypoint,
section_name: sectionName,
section_position: sectionPosition,
section_overall_position: sectionOverallPosition,
application_id: applicationId,
command_id: commandId,
application_flags: applicationFlags
}
});
}
}, [entrypoint])
};
}