48 lines
2.1 KiB
TypeScript
48 lines
2.1 KiB
TypeScript
![]() |
import { useEffect, useState } from "react";
|
|||
|
|
|||
|
import type { MetricsMessengers } from "@model/metrics";
|
|||
|
|
|||
|
type ExtendedWindow = Window & {
|
|||
|
ym?: (id: number, type: string, goal: string) => void;
|
|||
|
};
|
|||
|
|
|||
|
const sendMetrics = (yandexMetricsId: number | undefined, goal: string) => {
|
|||
|
if (yandexMetricsId) {
|
|||
|
(window as ExtendedWindow).ym?.(yandexMetricsId, "reachGoal", goal);
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
export const useYandexMetricsGoals = (yandexMetricsId: number | undefined) => {
|
|||
|
const [id, setId] = useState<number | undefined>(undefined);
|
|||
|
|
|||
|
useEffect(() => {
|
|||
|
if (yandexMetricsId) {
|
|||
|
setId(yandexMetricsId);
|
|||
|
}
|
|||
|
}, [yandexMetricsId]);
|
|||
|
|
|||
|
return {
|
|||
|
// Посетитель открыл квиз
|
|||
|
quizOpened: () => sendMetrics(id, "penaquiz-start"),
|
|||
|
// Посетитель нажал на кнопку стартовой страницы
|
|||
|
firstPageOpened: () => sendMetrics(id, "penaquiz-startquiz"),
|
|||
|
// Посетитель кликнул по номеру телефона на стартовой странице
|
|||
|
phoneNumberOpened: () => sendMetrics(id, "penaquiz-phone"),
|
|||
|
// Посетитель кликнул по email на стартовой странице
|
|||
|
emailOpened: () => sendMetrics(id, "penaquiz-email"),
|
|||
|
// Посетитель увидел определенный результат (id - айдишник вопроса с типом result)
|
|||
|
resultShown: (resultId: string) =>
|
|||
|
sendMetrics(id, `penaquiz-result-${resultId}`),
|
|||
|
// Посетитель дошёл до формы контактов
|
|||
|
contactsFormOpened: () => sendMetrics(id, "penaquiz-form"),
|
|||
|
// Посетитель заполнил форму контактов
|
|||
|
contactsFormFilled: () => sendMetrics(id, "penaquiz-contacts"),
|
|||
|
// Посетитель отправил заявку с мессенджером
|
|||
|
messengerRequestSended: (messenger: MetricsMessengers) =>
|
|||
|
sendMetrics(id, `penaquiz-messengers-${messenger}`),
|
|||
|
// Посетитель прошёл вопрос
|
|||
|
questionPassed: (questionId: string) =>
|
|||
|
sendMetrics(id, `penaquiz-step${questionId}`),
|
|||
|
};
|
|||
|
};
|