let currentRoom = null; let currentHistoryId = 0; function openModal(roomName) { currentRoom = roomName; document.getElementById('passwordModal').style.display = 'block'; } function closeModal() { document.getElementById('passwordModal').style.display = 'none'; } function openCreateRoomModal() { document.getElementById('createRoomModal').style.display = 'block'; } function closeCreateRoomModal() { document.getElementById('createRoomModal').style.display = 'none'; } async function createRoom() { const errorElement = document.getElementById('error'); const roomName = document.getElementById('newRoomName').value.trim(); const roomNickname = document.getElementById('newRoomNickname').value.trim(); errorElement.style.display = 'none'; errorElement.textContent = ''; if (roomName === '' || roomNickname === '') { errorElement.textContent = 'Пожалуйста, заполните все поля'; errorElement.style.display = 'block'; return; } const request = { LocalHistoryId: currentHistoryId, content: { name: roomName, nickname: roomNickname } }; try { const response = await fetch('/internalapi/createChat', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(request) }); const res = await response.json(); if (res.status === 0) { addRoomToList(roomName, roomNickname); closeCreateRoomModal(); currentHistoryId = res.update.LocalHistoryId; window.location.href = '/chat/' + roomNickname; } else { throw new Error(res.error || 'Ошибка'); } } catch (error) { alert('Ошибка создания чата: ' + error.message); } } function addRoomToList(roomName, roomNickname) { const roomList = document.querySelector('.room-list'); const existingRoomItem = Array.from(roomList.children).find(item => item.querySelector('.room-name').textContent === roomName); if (existingRoomItem) { existingRoomItem.remove(); } const roomItem = document.createElement('li'); roomItem.classList.add('room-item'); roomItem.innerHTML = ` ${roomName} `; roomList.appendChild(roomItem); } async function initializeRoomList() { try { const response = await fetch('/internalapi/getChatList', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({}) }); const res = await response.json(); if (res.status === 0) { res.chats.forEach(chat => { addRoomToList(chat.content.name, chat.content.nickname); }); } else { throw new Error(res.error || 'Неизвестная ошибка'); } } catch (error) { alert('Ошибка загрузки списка чатов: ' + error.message); } } async function getChatID() { const chatNickname = window.location.pathname.split('/').pop(); const response = await fetch('/internalapi/getChatList', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({}) }); const res = await response.json(); for (const chat of res.chats) { if (chat.content.nickname === chatNickname) { return chat.id; } } return -1; } document.addEventListener('DOMContentLoaded', initializeRoomList);