diff --git a/assets/js/creations/socket.js b/assets/js/creations/socket.js index 80be8076..df98f228 100755 --- a/assets/js/creations/socket.js +++ b/assets/js/creations/socket.js @@ -67,14 +67,32 @@ export function debouncedSyncPatternState() { syncXmlTimeout = setTimeout(async () => { try { - // Pegamos apenas o JSON do estado atual - const patternState = appState.pattern; + // 🧹 A MÁGICA AQUI: Criamos um clone limpo apenas com os dados essenciais + // ignorando os objetos complexos de áudio que causam o erro circular. + const cleanPatternState = { + activePatternIndex: appState.pattern.activePatternIndex, + tracks: (appState.pattern.tracks || []).map(track => { + return { + id: track.id, + name: track.name, + type: track.type, + patternIndex: track.patternIndex, + isMuted: track.isMuted, + volume: track.volume, + pan: track.pan, + instrumentSourceId: track.instrumentSourceId, + parentBasslineId: track.parentBasslineId, + patterns: track.patterns, + playlist_clips: track.playlist_clips + }; + }) + }; - // Faz o upload silencioso do JSON + // Faz o upload silencioso do JSON na porta correta do backend! await fetch(`https://alice.ufsj.edu.br:${PORT_SOCK}/api/save_room_state`, { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ roomName: currentRoom, patternState }), + body: JSON.stringify({ roomName: currentRoom, patternState: cleanPatternState }), }); console.log("[Backup] Estado JSON salvo com segurança via HTTP."); } catch (err) {