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(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}`), }; };