58 lines
1.9 KiB
TypeScript
58 lines
1.9 KiB
TypeScript
export enum EGoals {
|
|
ENTERED_EMAIL = "EnteredEmail",
|
|
PAYMENT_SUCCESS = "PaymentSuccess",
|
|
ROSE_VIDEO_CREATION_START = 'RoseVideoCreationStart',
|
|
ROSE_LOADING_START = "RoseLoadingStart",
|
|
ROSE_VIDEO_CREATED = "RoseVideoCreated",
|
|
ROSE_LOADING_END = "RoseLoadingEnd",
|
|
ROSE_VIDEO_PLAY_START = "RoseVideoPlayStart",
|
|
ROSE_VIDEO_PLAY_END = "RoseVideoPlayEnd",
|
|
ROSE_VIDEO_PLAY_USER_STOP = "RoseVideoPlayUserStop",
|
|
ROSE_VIDEO_PLAY_USER_PLAY = "RoseVideoPlayUserPlay"
|
|
}
|
|
|
|
interface IUserParams {
|
|
UserID: number;
|
|
genderFrom: string;
|
|
email: string;
|
|
}
|
|
|
|
const environments = import.meta.env
|
|
const metricCounterNumber = Number(environments.AURA_YANDEX_COUNTER_NUMBER)
|
|
|
|
const setUserID = (userId: string) => {
|
|
if (typeof window.ym !== "function") return console.error("Yandex.Metric not found");
|
|
|
|
window.ym(metricCounterNumber, "setUserID", userId)
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}
|
|
|
|
const userParams = (parameters: Partial<IUserParams>) => {
|
|
if (typeof window.ym !== "function") return console.error("Yandex.Metric not found");
|
|
|
|
window.ym(metricCounterNumber, "userParams", parameters)
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}
|
|
|
|
const reachGoal = (goal: EGoals) => {
|
|
if (typeof window.ym !== "function") return console.error("Yandex.Metric not found");
|
|
|
|
window.ym(metricCounterNumber, "reachGoal", goal)
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}
|
|
|
|
const initMetric = () => {
|
|
if (typeof window.ym !== "function") return console.error("Yandex.Metric not found");
|
|
|
|
window.ym(metricCounterNumber, "init", {
|
|
clickmap: true,
|
|
trackLinks: true,
|
|
accurateTrackBounce: true,
|
|
webvisor: true,
|
|
});
|
|
console.log("Metric initialized");
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}
|
|
|
|
export default { setUserID, userParams, reachGoal, initMetric } |