import { useEffect, useState } from "react"; type VkMetric = { type: "reachGoal"; id: number; goal: string; }; type ExtendedWindow = Window & { _tmp?: VkMetric[] }; type Messenger = | "telegram" | "viber" | "whatsapp" | "vkontakte" | "messenger" | "skype" | "instagram"; const sendMetrics = (vkPixelId: number | undefined, goal: string) => { if (vkPixelId) { (window as ExtendedWindow)._tmp?.push({ type: "reachGoal", id: vkPixelId, goal, }); } }; export const useVkMetricGoals = (vkPixelId: number | undefined) => { const [vkId, setVkId] = useState(undefined); useEffect(() => { if (vkPixelId) { setVkId(vkPixelId); } }, [vkPixelId]); return { // Посетитель открыл квиз quizOpened: () => sendMetrics(vkId, "penaquiz-start"), // Посетитель нажал на кнопку стартовой страницы firstPageOpened: () => sendMetrics(vkId, "penaquiz-startquiz"), // Посетитель кликнул по номеру телефона на стартовой странице phoneNumberOpened: () => sendMetrics(vkId, "penaquiz-phone"), // Посетитель кликнул по email на стартовой странице emailOpened: () => sendMetrics(vkId, "penaquiz-email"), // Посетитель увидел определенный результат (id - айдишник вопроса с типом result) resultShown: (resultId: string) => sendMetrics(vkId, `penaquiz-result-${resultId}`), // Посетитель дошёл до формы контактов contactsFormOpened: () => sendMetrics(vkId, "penaquiz-form"), // Посетитель заполнил форму контактов contactsFormFilled: () => sendMetrics(vkId, "penaquiz-contacts"), // Посетитель отправил заявку с мессенджером messengerRequestSended: (messenger: Messenger) => sendMetrics(vkId, `marquiz-messengers-${messenger}`), // Посетитель прошёл вопрос questionPassed: (questionId: string) => sendMetrics(vkId, `marquiz-step${questionId}`), }; };