import { io } from 'socket.io-client';
import { socketio_port } from '../../../../sites/common_site_config.json';
import { getCachedResource, getCachedListResource } from 'frappe-ui';

export function initSocket() {
	let host = window.location.hostname;
	let siteName = window.site_name;
	let port = window.location.port ? `:${socketio_port}` : '';
	let protocol = port ? 'http' : 'https';
	let url = `${protocol}://${host}${port}/${siteName}`;

	let socket = io(url, {
		withCredentials: true,
		reconnectionAttempts: 5,
	});

	socket.on('refetch_resource', (data) => {
		if (data.cache_key) {
			let resource =
				getCachedResource(data.cache_key) ||
				getCachedListResource(data.cache_key);
			if (resource) {
				resource.reload();
			}
		}
	});
	return socket;
}
