<script setup lang="ts">
/**
 * Окошко чата Лидерры. Сам чат — /chat-widget.js (один файл, без сборки): тот же скрипт
 * работает и на лендинге. Здесь — подключение и передача того, КТО вошёл: по этому id окошко
 * заводит отдельный разговор. Личные цифры одного клиента не должны попасть другому
 * за тем же компьютером.
 */
import { onMounted, watch } from 'vue';
import { storeToRefs } from 'pinia';
import { useAuthStore } from '../../stores/auth';

declare global {
    interface Window {
        __liderraChatUser?: number | null;
        __liderraChatSetUser?: (user: number | null) => void;
    }
}

const SCRIPT_ID = 'liderra-chat-widget-js';
const { user } = storeToRefs(useAuthStore());

function injectChat(): void {
    window.__liderraChatUser = user.value?.id ?? null;

    if (document.getElementById(SCRIPT_ID) !== null) {
        window.__liderraChatSetUser?.(window.__liderraChatUser);
        return;
    }
    const script = document.createElement('script');
    script.id = SCRIPT_ID;
    script.src = '/chat-widget.js';
    script.defer = true;
    document.head.appendChild(script);
}

onMounted(injectChat);

// Вошли под другим клиентом в той же вкладке — окошко забывает прежний разговор.
watch(
    () => user.value?.id ?? null,
    (id) => {
        window.__liderraChatUser = id;
        window.__liderraChatSetUser?.(id);
    },
);
</script>

<template>
    <!-- Кнопку и окошко рисует /chat-widget.js прямо в body; здесь — скрытый якорь. -->
    <span class="chat-widget-anchor" aria-hidden="true" style="display: none" />
</template>
