diff --git a/app.py b/app.py index b6c08ee..7659c64 100644 --- a/app.py +++ b/app.py @@ -838,8 +838,14 @@ def handle_join(data): room = str(data['room']) username = data.get('username', 'Gość') join_room(room) + + # Pobierz nazwę listy (zakładam, że masz funkcję get_list_title lub query) + from your_models import ShoppingList + shopping_list = ShoppingList.query.get(int(data['room'])) + list_title = shopping_list.title if shopping_list else "Twoja lista" + emit('user_joined', {'username': username}, to=room) - emit('joined_confirmation', {'room': room}) + emit('joined_confirmation', {'room': room, 'list_title': list_title}) @socketio.on('add_item') def handle_add_item(data): diff --git a/static/js/socket_reconnect.js b/static/js/socket_reconnect.js index 42d5766..0e86db4 100644 --- a/static/js/socket_reconnect.js +++ b/static/js/socket_reconnect.js @@ -28,13 +28,13 @@ function disableCheckboxes(disable) { // --- Toasty przy rozłączeniu i połączeniu --- let firstConnect = true; +let wasReconnected = false; // flaga do kontrolowania toasta socket.on('connect', function() { if (!firstConnect) { showToast('Połączono z serwerem! 🔄', 'info'); - - // Zablokuj checkboxy tymczasowo disableCheckboxes(true); + wasReconnected = true; // zaznacz reconnect if (window.LIST_ID && window.usernameForReconnect) { console.log('Ponownie wysyłam join_list:', window.LIST_ID, window.usernameForReconnect); @@ -44,17 +44,18 @@ socket.on('connect', function() { firstConnect = false; }); +// Usuń stare nasłuchy przed dodaniem nowego +socket.off('joined_confirmation'); socket.on('joined_confirmation', function(data) { console.log('Potwierdzenie joined:', data.room); - showToast('Pokój ponownie dołączony ✅', 'info'); - - // Odblokuj checkboxy + if (wasReconnected) { + showToast(`Lista: ${data.list_title} – ponownie dołączono.`, 'info'); + wasReconnected = false; + } disableCheckboxes(false); }); socket.on('disconnect', function(reason) { showToast('Utracono połączenie z serwerem...', 'warning'); - - // Zablokuj checkboxy disableCheckboxes(true); });