testando ui otimista
Deploy / Deploy (push) Successful in 52s Details

This commit is contained in:
JotaChina 2026-03-26 19:15:04 -03:00
parent 02e0fbd583
commit acc8881073
1 changed files with 22 additions and 4 deletions

View File

@ -67,14 +67,32 @@ export function debouncedSyncPatternState() {
syncXmlTimeout = setTimeout(async () => { syncXmlTimeout = setTimeout(async () => {
try { try {
// Pegamos apenas o JSON do estado atual // 🧹 A MÁGICA AQUI: Criamos um clone limpo apenas com os dados essenciais
const patternState = appState.pattern; // 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`, { await fetch(`https://alice.ufsj.edu.br:${PORT_SOCK}/api/save_room_state`, {
method: "POST", method: "POST",
headers: { "Content-Type": "application/json" }, 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."); console.log("[Backup] Estado JSON salvo com segurança via HTTP.");
} catch (err) { } catch (err) {