This commit is contained in:
2026-03-06 11:15:39 +02:00
parent 5994e165c6
commit 7299157ba9
4 changed files with 351 additions and 265 deletions

View File

@@ -16,15 +16,13 @@ const participantList = document.getElementById('participant-list');
const adminControls = document.getElementById('admin-controls');
const revealBtn = document.getElementById('reveal-btn');
const resetBtn = document.getElementById('reset-btn');
const terminalBtn = document.getElementById('terminal-btn');
const shareLinkInput = document.getElementById('share-link');
const shareAdminToggle = document.getElementById('share-admin-toggle');
const votesCounter = document.getElementById('votes-counter');
const roomMessage = document.getElementById('room-message');
const changeNameBtn = document.getElementById('change-name-btn');
const terminalModalOverlay = document.getElementById('terminal-modal-overlay');
const terminalCloseBtn = document.getElementById('terminal-close-btn');
const terminalLogOutput = document.getElementById('terminal-log-output');
const TERMINAL_WINDOW_ID = 'terminal-tool-window';
const joinPanel = document.getElementById('join-panel');
const joinForm = document.getElementById('join-form');
@@ -315,15 +313,6 @@ function renderTerminalLogs(logs) {
terminalLogOutput.scrollTop = terminalLogOutput.scrollHeight;
}
function openTerminal() {
terminalModalOverlay.classList.remove('hidden');
renderTerminalLogs(latestAdminLogs);
}
function closeTerminal() {
terminalModalOverlay.classList.add('hidden');
}
function renderState(state) {
roomTitle.textContent = `${state.roomName} (${state.roomId})`;
revealModeLabel.textContent = `Reveal mode: ${state.revealMode}`;
@@ -341,16 +330,18 @@ function renderState(state) {
latestLinks = state.links || { participantLink: '', adminLink: '' };
updateShareLink();
if (typeof window.setUIWindowAccess === 'function') {
window.setUIWindowAccess({ admin: state.viewerIsAdmin });
}
if (state.viewerIsAdmin) {
adminControls.classList.remove('hidden');
terminalBtn.classList.remove('hidden');
} else {
adminControls.classList.add('hidden');
terminalBtn.classList.add('hidden');
closeTerminal();
}
latestAdminLogs = Array.isArray(state.adminLogs) ? state.adminLogs : [];
if (state.viewerIsAdmin && !terminalModalOverlay.classList.contains('hidden')) {
if (state.viewerIsAdmin && typeof window.isUIWindowOpen === 'function' && window.isUIWindowOpen(TERMINAL_WINDOW_ID)) {
renderTerminalLogs(latestAdminLogs);
}
@@ -466,21 +457,21 @@ async function changeName() {
revealBtn.addEventListener('click', () => adminAction('reveal'));
resetBtn.addEventListener('click', () => adminAction('reset'));
terminalBtn.addEventListener('click', openTerminal);
terminalCloseBtn.addEventListener('click', closeTerminal);
terminalModalOverlay.addEventListener('click', (event) => {
if (event.target === terminalModalOverlay) {
closeTerminal();
}
});
shareAdminToggle.addEventListener('change', updateShareLink);
changeNameBtn.addEventListener('click', () => {
void changeName();
});
window.addEventListener('keydown', (event) => {
if (event.key === 'Escape') {
closeTerminal();
document.addEventListener('click', (event) => {
const openBtn = event.target.closest('[data-role="open-window"]');
if (!openBtn || openBtn.dataset.target !== TERMINAL_WINDOW_ID) {
return;
}
requestAnimationFrame(() => {
if (typeof window.isUIWindowOpen === 'function' && window.isUIWindowOpen(TERMINAL_WINDOW_ID)) {
renderTerminalLogs(latestAdminLogs);
}
});
});
joinForm.addEventListener('submit', async (event) => {