import type { MetricsMessengers } from "@model/metrics";
import { useMemo } from "react";

type MetricsGoal = {
  type: "reachGoal";
  id: number;
  goal: string;
};

type ExtendedWindow = Window & { _tmr?: MetricsGoal[] };

const sendMetrics = (vkPixelId: number | undefined, goal: string) => {
  if (vkPixelId) {
    (window as ExtendedWindow)._tmr?.push({
      type: "reachGoal",
      id: vkPixelId,
      goal,
    });
  }
};

export const useVkMetricsGoals = (vkId: number | undefined) => {
  return useMemo(
    () => ({
      // Посетитель открыл квиз
      quizOpened: () => sendMetrics(vkId, "penaquiz-start"),
      // Посетитель нажал на кнопку стартовой страницы
      firstPageOpened: () => sendMetrics(vkId, "penaquiz-startquiz"),
      // Посетитель кликнул по номеру телефона на стартовой странице
      phoneNumberOpened: () => sendMetrics(vkId, "penaquiz-phone"),
      // Посетитель кликнул по email на стартовой странице
      emailOpened: () => sendMetrics(vkId, "penaquiz-email"),
      // Посетитель увидел определенный результат (id - айдишник вопроса с типом result)
      resultIdShown: (resultId: string) => sendMetrics(vkId, `penaquiz-result-${resultId}`),
      // Посетитель нажал на ссылку в результате
      resultLink: () => sendMetrics(vkId, `penaquiz-resultlink`),
      // Посетитель дошёл до формы контактов
      contactsFormOpened: () => sendMetrics(vkId, "penaquiz-form"),
      // Посетитель заполнил форму контактов
      contactsFormFilled: () => sendMetrics(vkId, "penaquiz-contacts"),
      // Посетитель заполнил поле формы контактов
      contactsFormField: (field: string) => sendMetrics(vkId, `penaquiz-formfield-${field}`),
      // Посетитель отправил заявку с мессенджером
      messengerRequestSended: (messenger: MetricsMessengers) => sendMetrics(vkId, `penaquiz-messengers-${messenger}`),
      // Посетитель прошёл вопрос
      questionPassed: (questionId: string) => sendMetrics(vkId, `penaquiz-step${questionId}`),
    }),
    [vkId]
  );
};
