let rooms = {}; let roomToDelete = null; let currentRoom = null; let currentHistoryId = 0; function openRoom(currentRoom) { alert('Вы вошли в комнату: ' + currentRoom); } function closeAdd() { document.getElementById('add_members').style.display = 'none'; } function openAdd() { document.getElementById('add_members').style.display = 'flex'; } function openConfirm(roomNickname) { roomToDelete = roomNickname; document.getElementById("delete-chat").style.display = "flex"; } function closeConfirm() { roomToDelete = null; document.getElementById("delete-chat").style.display = "none"; } function deleteChat() { if (roomToDelete && rooms[roomToDelete]) { delete rooms[roomToDelete]; removeRoomFromList(roomToDelete); closeConfirm(); } else { alert("Не удалось найти выбранную комнату."); } } function addMember() { const login = document.getElementById('newMemberLogin').value; if (login) { alert(`Участник с никнеймом '${login}' добавлен`); closeAdd(); } else { alert('Пожалуйста, введите логин участника'); } } 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); rooms[roomNickname] = true; closeCreateRoomModal(); currentHistoryId = res.update.LocalHistoryId; window.location.href = '/chat/' + roomNickname; } else { throw new Error(res.error || 'Ошибка'); } } catch (error) { alert('Ошибка создания чата: ' + error.message); } } function addRoomToList(roomName) { 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); } function removeRoomFromList(roomName, roomNickname) { const roomList = document.querySelector('.room-list'); const roomItem = Array.from(roomList.children).find(item => item.querySelector('.room-name').textContent === roomName); if (roomItem) { roomList.removeChild(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; } window.onclick = function(event) { if (event.target === document.getElementById('createRoomModal')) { closeCreateRoomModal(); } } document.getElementById('newRoomName').addEventListener('keydown', function(event) { if (event.key === 'Enter') { createRoom(); } }); document.addEventListener('DOMContentLoaded', initializeRoomList);