resolvendo dependencias dos projetos
Deploy / Deploy (push) Successful in 1m26s
Details
Deploy / Deploy (push) Successful in 1m26s
Details
This commit is contained in:
parent
7244c63483
commit
f9f890a8a4
|
|
@ -773,6 +773,8 @@
|
|||
</script>
|
||||
|
||||
<script>
|
||||
import { sendAction } from "./assets/js/creations/socket.js";
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const downloadBtn = document.getElementById("download-package-btn");
|
||||
|
||||
|
|
@ -805,43 +807,46 @@
|
|||
}
|
||||
});
|
||||
|
||||
import { appState } from "./assets/js/creations/state.js";
|
||||
import { sendAction } from "./assets/js/creations/socket.js"; // <--- sendAction vive aqui
|
||||
import { renderAll } from "./assets/js/creations/ui.js";
|
||||
import * as Tone from "https://esm.sh/tone";
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
|
||||
// 1. Lógica de Upload de Sample
|
||||
// --- LÓGICA DE UPLOAD DE SAMPLE AVULSO ---
|
||||
const uploadSampleBtn = document.getElementById("upload-sample-btn");
|
||||
const sampleInput = document.getElementById("sample-file-input");
|
||||
|
||||
if (uploadSampleBtn && sampleInput) {
|
||||
|
||||
// 1. Botão clica no input invisível
|
||||
uploadSampleBtn.addEventListener("click", () => {
|
||||
sampleInput.click();
|
||||
});
|
||||
|
||||
// 2. Quando o arquivo é selecionado
|
||||
sampleInput.addEventListener("change", async () => {
|
||||
if (sampleInput.files.length === 0) return;
|
||||
|
||||
const file = sampleInput.files[0];
|
||||
|
||||
// Pergunta a categoria para organizar no servidor (opcional)
|
||||
// O backend usa isso para criar pastas: samples/drums, samples/vocals, etc.
|
||||
const category = prompt(
|
||||
"Em qual categoria este sample se encaixa? (Ex: drums, effects, vocals)",
|
||||
"imported"
|
||||
);
|
||||
|
||||
if (category === null) {
|
||||
// Usuário cancelou
|
||||
sampleInput.value = "";
|
||||
return;
|
||||
}
|
||||
|
||||
// Prepara o formulário
|
||||
const formData = new FormData();
|
||||
formData.append("sample_file", file);
|
||||
formData.append("subfolder", category);
|
||||
formData.append("sample_file", file); // Deve bater com 'sample_file' no Python
|
||||
formData.append("subfolder", category); // Deve bater com 'subfolder' no Python
|
||||
|
||||
// UI Feedback
|
||||
// Feedback Visual (ícone girando ou ficando transparente)
|
||||
const originalIcon = uploadSampleBtn.className;
|
||||
uploadSampleBtn.className = "fa-solid fa-spinner fa-spin";
|
||||
uploadSampleBtn.className = "fa-solid fa-spinner fa-spin"; // Ícone de loading
|
||||
uploadSampleBtn.style.pointerEvents = "none";
|
||||
|
||||
try {
|
||||
|
|
@ -849,45 +854,27 @@
|
|||
method: "POST",
|
||||
body: formData
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (response.ok) {
|
||||
alert("Sucesso! " + result.message);
|
||||
|
||||
// AGORA VAI FUNCIONAR POIS ESTAMOS NO MESMO ESCOPO DO IMPORT
|
||||
sendAction({ type: "REFRESH_SAMPLE_BROWSER" });
|
||||
|
||||
} else {
|
||||
alert("Erro ao enviar: " + (result.error || "Desconhecido"));
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error("Erro no upload:", error);
|
||||
alert("Erro de conexão com o servidor.");
|
||||
} finally {
|
||||
// Restaura o botão e limpa o input
|
||||
uploadSampleBtn.className = originalIcon;
|
||||
uploadSampleBtn.style.pointerEvents = "auto";
|
||||
sampleInput.value = "";
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 2. Lógica de Download de ZIP (Se quiser manter junto)
|
||||
const downloadPackageBtn = document.getElementById("download-package-btn");
|
||||
if (downloadPackageBtn) {
|
||||
downloadPackageBtn.addEventListener("click", () => {
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
let projectName = params.get("project");
|
||||
if (projectName) {
|
||||
if (!projectName.toLowerCase().endsWith(".mmp")) projectName += ".mmp";
|
||||
const apiUrl = `https://alice.ufsj.edu.br:33002/api/download/${projectName}`;
|
||||
downloadPackageBtn.style.opacity = "0.5";
|
||||
setTimeout(() => downloadPackageBtn.style.opacity = "1", 500);
|
||||
window.location.href = apiUrl;
|
||||
} else {
|
||||
alert("Salve o projeto primeiro ou abra um projeto existente.");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue