diff --git a/public/js/app.js b/public/js/app.js
index f5fa212..570815f 100644
--- a/public/js/app.js
+++ b/public/js/app.js
@@ -926,34 +926,24 @@ document.addEventListener('DOMContentLoaded', () => {
}
}
- if (message.type === 'time' && message.data?.keyexpireString) {
- if (state.keyExpiry !== message.data.keyexpireString && elements.keyExpiry) {
- const expiryDate = new Date(message.data.keyexpireString);
- const formattedDate = expiryDate.toLocaleString('en-US', {
- month: 'long',
- day: 'numeric',
- year: 'numeric',
- hour: '2-digit',
- minute: '2-digit',
- hour12: true,
- timeZoneName: 'short'
- });
- elements.keyExpiry.textContent = formattedDate;
- state.keyExpiry = message.data.keyexpireString;
- }
- }
-
if (message.type === 'list-players' && message.data?.players) {
const players = message.data.players || [];
state.currentPlayers = players;
const isSinglePlayer = players.length <= 1;
+
+ // Initialize state for tracking action button visibility if not already present
+ state.actionButtonStates = state.actionButtonStates || {};
+
const playerListHtml = players.length > 0
- ? players.map(player => `
+ ? players.map(player => {
+ // Default to hidden action buttons unless state says otherwise
+ const isActionButtonsVisible = state.actionButtonStates[player] || false;
+ return `
${player}
- `).join('')
+ `;
+ }).join('')
: 'None';
+
if (state.playerList !== playerListHtml && elements.playerList) {
elements.playerList.innerHTML = playerListHtml;
state.playerList = playerListHtml;
- // Toggle action buttons
+ // Remove existing event listeners to prevent duplication
+ const toggleButtons = document.querySelectorAll('.toggle-actions');
+ const closeButtons = document.querySelectorAll('.close-actions');
+ toggleButtons.forEach(button => {
+ button.replaceWith(button.cloneNode(true));
+ });
+ closeButtons.forEach(button => {
+ button.replaceWith(button.cloneNode(true));
+ });
+
+ // Add event listeners for toggle actions
document.querySelectorAll('.toggle-actions').forEach(button => {
button.addEventListener('click', () => {
const player = button.getAttribute('data-player').trim();
@@ -980,65 +982,24 @@ document.addEventListener('DOMContentLoaded', () => {
if (actionDiv) {
actionDiv.classList.remove('hidden');
button.classList.add('hidden');
+ state.actionButtonStates[player] = true; // Update state
}
});
});
- if (message.type === 'list-players' && message.data?.players) {
- const players = message.data.players || [];
- state.currentPlayers = players;
- const isSinglePlayer = players.length <= 1;
- const playerListHtml = players.length > 0
- ? players.map(player => `
-
-
${player}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- `).join('')
- : 'None';
- if (state.playerList !== playerListHtml && elements.playerList) {
- elements.playerList.innerHTML = playerListHtml;
- state.playerList = playerListHtml;
-
- // Toggle action buttons
- document.querySelectorAll('.toggle-actions').forEach(button => {
- button.addEventListener('click', () => {
- const player = button.getAttribute('data-player').trim();
- const actionDiv = document.querySelector(`.action-buttons[data-player="${player}"]`);
- if (actionDiv) {
- actionDiv.classList.remove('hidden');
- button.classList.add('hidden');
- }
- });
- });
-
- // Close action buttons
- document.querySelectorAll('.close-actions').forEach(button => {
- button.addEventListener('click', () => {
- const player = button.getAttribute('data-player').trim();
- const actionDiv = document.querySelector(`.action-buttons[data-player="${player}"]`);
- const toggleButton = document.querySelector(`.toggle-actions[data-player="${player}"]`);
- if (actionDiv && toggleButton) {
- actionDiv.classList.add('hidden');
- toggleButton.classList.remove('hidden');
- }
- });
- });
- }
- }
+ // Add event listeners for close actions
+ document.querySelectorAll('.close-actions').forEach(button => {
+ button.addEventListener('click', () => {
+ const player = button.getAttribute('data-player').trim();
+ const actionDiv = document.querySelector(`.action-buttons[data-player="${player}"]`);
+ const toggleButton = document.querySelector(`.toggle-actions[data-player="${player}"]`);
+ if (actionDiv && toggleButton) {
+ actionDiv.classList.add('hidden');
+ toggleButton.classList.remove('hidden');
+ state.actionButtonStates[player] = false; // Update state
+ }
+ });
+ });
document.querySelectorAll('.tell-player').forEach(button => {
button.addEventListener('click', () => {