/**
 * Copyright (c) 2024-2026 Тарабанов Александр Викторович
 * All rights reserved.
 * 
 * This software is proprietary and confidential.
 * Unauthorized copying, modification, or distribution is prohibited.
 * 
 * For licensing inquiries: info@hb3-accelerator.com
 * Website: https://hb3-accelerator.com
 * GitHub: https://github.com/VC-HB3-Accelerator
 */

import { onMounted, onUnmounted } from 'vue';
import websocketServiceModule from '@/services/websocketService.js';

const { websocketService, onTableUpdate } = websocketServiceModule;

export function useTablesWebSocket() {
  // Подписка на обновления таблиц
  function subscribeToTableUpdates(tableId, callback) {
    return onTableUpdate(tableId, callback);
  }

  // Подписка на обновления связей (relations)
  function subscribeToTableRelationsUpdates(tableId, rowId, callback) {
    // Используем глобальный обработчик и фильтруем по tableId/rowId
    const handler = (data) => {
      if (data.tableId === tableId && data.rowId === rowId) {
        callback(data);
      }
    };
    websocketService.on('table-relations-updated', handler);
    // Возвращаем функцию для отписки
    return () => websocketService.off('table-relations-updated', handler);
  }

  onMounted(() => {
    // Соединение управляется websocketService, ничего не делаем
  });

  onUnmounted(() => {
    // Соединение управляется websocketService, ничего не делаем
  });

  return {
    subscribeToTableUpdates,
    subscribeToTableRelationsUpdates,
  };
} 