teste upload de sample com mic
Deploy / Deploy (push) Successful in 1m17s
Details
Deploy / Deploy (push) Successful in 1m17s
Details
This commit is contained in:
parent
0768b85700
commit
6ee78b0cd2
|
|
@ -307,13 +307,11 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
let currentFolderObj = manifestData;
|
let currentFolderObj = manifestData;
|
||||||
|
|
||||||
// === FUNÇÕES DE UTILIDADE ===
|
// === FUNÇÕES DE UTILIDADE ===
|
||||||
|
|
||||||
function removeExtension(filename) {
|
function removeExtension(filename) {
|
||||||
return filename.replace(/\.[^/.]+$/, "");
|
return filename.replace(/\.[^/.]+$/, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
// === LÓGICA DO NAVEGADOR DE ARQUIVOS ===
|
// === LÓGICA DO NAVEGADOR DE ARQUIVOS ===
|
||||||
|
|
||||||
function getFolderByPath(pathArray) {
|
function getFolderByPath(pathArray) {
|
||||||
let folder = manifestData;
|
let folder = manifestData;
|
||||||
for (const dir of pathArray) {
|
for (const dir of pathArray) {
|
||||||
|
|
@ -415,7 +413,6 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// === LÓGICA DE FILTRAGEM (ROBUSTA) ===
|
// === LÓGICA DE FILTRAGEM (ROBUSTA) ===
|
||||||
|
|
||||||
function filterBySample(sampleName) {
|
function filterBySample(sampleName) {
|
||||||
if (!sampleName) {
|
if (!sampleName) {
|
||||||
filterDisplayName.textContent = "(todos)";
|
filterDisplayName.textContent = "(todos)";
|
||||||
|
|
@ -463,7 +460,6 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
if(foundCount > 0) document.getElementById('project-list').scrollIntoView({ behavior: 'smooth' });
|
if(foundCount > 0) document.getElementById('project-list').scrollIntoView({ behavior: 'smooth' });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inicialização
|
|
||||||
btnHome.onclick = () => navigateTo([]);
|
btnHome.onclick = () => navigateTo([]);
|
||||||
renderBreadcrumbs();
|
renderBreadcrumbs();
|
||||||
renderBrowser();
|
renderBrowser();
|
||||||
|
|
@ -514,7 +510,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
document.addEventListener('keydown', (e) => { if (e.key === "Escape") closeModal(); });
|
document.addEventListener('keydown', (e) => { if (e.key === "Escape") closeModal(); });
|
||||||
|
|
||||||
// ==========================================================
|
// ==========================================================
|
||||||
// === LÓGICA DE UPLOAD & GRAVAÇÃO (MODIFICADA) ===
|
// === LÓGICA DE UPLOAD & GRAVAÇÃO (CORRIGIDA) ===
|
||||||
// ==========================================================
|
// ==========================================================
|
||||||
const uploadModal = document.getElementById('upload-sample-modal');
|
const uploadModal = document.getElementById('upload-sample-modal');
|
||||||
const btnOpenUpload = document.getElementById('btn-open-upload');
|
const btnOpenUpload = document.getElementById('btn-open-upload');
|
||||||
|
|
@ -543,7 +539,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
let mediaRecorder = null;
|
let mediaRecorder = null;
|
||||||
let audioChunks = [];
|
let audioChunks = [];
|
||||||
let audioBlob = null;
|
let audioBlob = null;
|
||||||
let activeTab = 'file'; // 'file' or 'mic'
|
let activeTab = 'file';
|
||||||
|
|
||||||
// Alternância de Abas
|
// Alternância de Abas
|
||||||
function switchTab(mode) {
|
function switchTab(mode) {
|
||||||
|
|
@ -553,13 +549,12 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
tabMic.classList.remove('is-active');
|
tabMic.classList.remove('is-active');
|
||||||
sectionFile.classList.remove('is-hidden');
|
sectionFile.classList.remove('is-hidden');
|
||||||
sectionMic.classList.add('is-hidden');
|
sectionMic.classList.add('is-hidden');
|
||||||
stopRecordingLogic(); // Garante que parou de gravar
|
stopRecordingLogic();
|
||||||
} else {
|
} else {
|
||||||
tabMic.classList.add('is-active');
|
tabMic.classList.add('is-active');
|
||||||
tabFile.classList.remove('is-active');
|
tabFile.classList.remove('is-active');
|
||||||
sectionMic.classList.remove('is-hidden');
|
sectionMic.classList.remove('is-hidden');
|
||||||
sectionFile.classList.add('is-hidden');
|
sectionFile.classList.add('is-hidden');
|
||||||
// Sugere nome pro arquivo
|
|
||||||
if(!recordNameInput.value) recordNameInput.value = "gravacao_" + new Date().toLocaleTimeString().replace(/:/g, '-');
|
if(!recordNameInput.value) recordNameInput.value = "gravacao_" + new Date().toLocaleTimeString().replace(/:/g, '-');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -592,12 +587,13 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
mediaRecorder.onstop = () => {
|
mediaRecorder.onstop = () => {
|
||||||
audioBlob = new Blob(audioChunks, { type: 'audio/webm' }); // WebM é padrão comum
|
// CORREÇÃO 1: Forçamos o tipo para OGG para o servidor aceitar
|
||||||
|
audioBlob = new Blob(audioChunks, { type: 'audio/ogg' });
|
||||||
|
|
||||||
const audioUrl = URL.createObjectURL(audioBlob);
|
const audioUrl = URL.createObjectURL(audioBlob);
|
||||||
recordPreview.src = audioUrl;
|
recordPreview.src = audioUrl;
|
||||||
recordPreview.classList.remove('is-hidden');
|
recordPreview.classList.remove('is-hidden');
|
||||||
|
|
||||||
// Cleanup streams
|
|
||||||
stream.getTracks().forEach(track => track.stop());
|
stream.getTracks().forEach(track => track.stop());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -627,15 +623,15 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
if(show) {
|
if(show) {
|
||||||
uploadModal.classList.add('is-active');
|
uploadModal.classList.add('is-active');
|
||||||
subfolderInput.value = currentPathStack.join('/');
|
subfolderInput.value = currentPathStack.join('/');
|
||||||
switchTab('file'); // Reset para aba de arquivo
|
switchTab('file');
|
||||||
} else {
|
} else {
|
||||||
uploadModal.classList.remove('is-active');
|
uploadModal.classList.remove('is-active');
|
||||||
uploadStatus.classList.add('is-hidden');
|
uploadStatus.classList.add('is-hidden');
|
||||||
uploadProgress.classList.add('is-hidden');
|
uploadProgress.classList.add('is-hidden');
|
||||||
stopRecordingLogic();
|
stopRecordingLogic();
|
||||||
audioBlob = null; // Limpa gravação
|
audioBlob = null;
|
||||||
recordPreview.src = "";
|
recordPreview.src = "";
|
||||||
fileInput.value = ""; // Limpa input file
|
fileInput.value = "";
|
||||||
fileNameDisplay.textContent = "Nenhum selecionado";
|
fileNameDisplay.textContent = "Nenhum selecionado";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -653,10 +649,8 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
// Adiciona pasta
|
|
||||||
formData.append('subfolder', subfolderInput.value);
|
formData.append('subfolder', subfolderInput.value);
|
||||||
|
|
||||||
// Verifica qual aba está ativa para pegar o arquivo correto
|
|
||||||
if (activeTab === 'file') {
|
if (activeTab === 'file') {
|
||||||
if (fileInput.files.length === 0) {
|
if (fileInput.files.length === 0) {
|
||||||
alert("Selecione um arquivo primeiro.");
|
alert("Selecione um arquivo primeiro.");
|
||||||
|
|
@ -669,11 +663,16 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
alert("Grave algo antes de enviar.");
|
alert("Grave algo antes de enviar.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let filename = recordNameInput.value.trim() || "gravacao";
|
let filename = recordNameInput.value.trim() || "gravacao";
|
||||||
// Força extensão .webm se não tiver, para garantir que o server entenda
|
|
||||||
if(!filename.match(/\.(webm|ogg|wav)$/i)) {
|
// CORREÇÃO 2: Removemos a extensão antiga se houver e forçamos .ogg
|
||||||
filename += ".webm";
|
// Isso engana a validação simples do servidor
|
||||||
}
|
filename = filename.replace(/\.(webm|wav|mp3|flac)$/i, "");
|
||||||
|
filename += ".ogg";
|
||||||
|
|
||||||
|
console.log("Enviando arquivo como:", filename); // Debug
|
||||||
|
|
||||||
formData.append('sample_file', audioBlob, filename);
|
formData.append('sample_file', audioBlob, filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue