auth
Deploy / Deploy (push) Successful in 44s
Details
Deploy / Deploy (push) Successful in 44s
Details
This commit is contained in:
parent
42a902afc6
commit
7250ff1459
|
|
@ -292,46 +292,42 @@ permalink: /samples/
|
|||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', async () => {
|
||||
// === VERIFICAÇÃO DE LOGIN (CORRIGIDA) ===
|
||||
// === VERIFICAÇÃO DE LOGIN ===
|
||||
const btnUpload = document.getElementById('btn-open-upload');
|
||||
const btnLogin = document.getElementById('btn-login-trigger');
|
||||
|
||||
// Verifica se os elementos realmente existem na página antes de tentar mexer neles
|
||||
if (btnUpload && btnLogin) {
|
||||
try {
|
||||
console.log("Verificando autenticação...");
|
||||
// Verifica auth via Proxy Apache
|
||||
const res = await fetch('/api/check_auth');
|
||||
const authData = await res.json();
|
||||
|
||||
// 🔥 CORREÇÃO 1: Se o servidor der erro 503/404, paramos aqui antes do JSON quebrar
|
||||
if (!res.ok) {
|
||||
throw new Error(`Servidor de auth indisponível (Status: ${res.status})`);
|
||||
}
|
||||
|
||||
const authData = await res.json();
|
||||
console.log("Status do usuário:", authData);
|
||||
|
||||
if (authData.logged_in) {
|
||||
// USUÁRIO LOGADO:
|
||||
// 1. Remove is-hidden do Upload (para aparecer)
|
||||
btnUpload.classList.remove('is-hidden');
|
||||
// 2. Adiciona is-hidden no Login (para sumir)
|
||||
btnLogin.classList.add('is-hidden');
|
||||
} else {
|
||||
// VISITANTE:
|
||||
// 1. Garante que Upload está escondido
|
||||
btnUpload.classList.add('is-hidden');
|
||||
// 2. Garante que Login aparece
|
||||
btnLogin.classList.remove('is-hidden');
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("Erro ao verificar auth:", e);
|
||||
// Em caso de erro, assume visitante por segurança
|
||||
console.warn("Autenticação falhou ou visitante assumido:", e.message);
|
||||
// Em caso de erro (como o 503), assume visitante por segurança
|
||||
btnUpload.classList.add('is-hidden');
|
||||
btnLogin.classList.remove('is-hidden');
|
||||
}
|
||||
} else {
|
||||
console.error("Erro: Não encontrei os botões de Upload ou Login no HTML.");
|
||||
}
|
||||
// ===================================
|
||||
|
||||
// === DADOS E CONFIGURAÇÃO ===
|
||||
const manifestData = {{ site.data['samples-manifest'] | jsonify }};
|
||||
// 🔥 CORREÇÃO 2: Fallback para um objeto vazio "{}" caso o Jekyll não encontre o ficheiro json
|
||||
const rawManifest = {{ site.data['samples-manifest'] | jsonify }};
|
||||
const manifestData = rawManifest || {};
|
||||
const BASE_ASSETS_URL = "{{ '/src_mmpSearch/samples/' | relative_url }}";
|
||||
|
||||
// === ELEMENTOS DO DOM ===
|
||||
|
|
@ -354,13 +350,12 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
return filename.replace(/\.[^/.]+$/, "");
|
||||
}
|
||||
|
||||
// === LÓGICA DO NAVEGADOR DE ARQUIVOS ===
|
||||
function getFolderByPath(pathArray) {
|
||||
let folder = manifestData;
|
||||
for (const dir of pathArray) {
|
||||
if (folder[dir]) folder = folder[dir];
|
||||
if (folder && folder[dir]) folder = folder[dir];
|
||||
}
|
||||
return folder;
|
||||
return folder || {};
|
||||
}
|
||||
|
||||
function isAudioFile(filename) {
|
||||
|
|
@ -397,10 +392,16 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
const folders = [];
|
||||
const files = [];
|
||||
|
||||
// 🔥 CORREÇÃO 3: Proteção contra objetos inválidos no render
|
||||
if (!currentFolderObj || typeof currentFolderObj !== 'object') {
|
||||
browserView.innerHTML = `<div class="has-text-centered has-text-danger p-5"><strong>Erro:</strong> Manifesto de samples não encontrado ou vazio. Verifique o _data/samples-manifest.json</div>`;
|
||||
return;
|
||||
}
|
||||
|
||||
Object.keys(currentFolderObj).forEach(key => {
|
||||
if (key === '_isFile') return;
|
||||
const item = currentFolderObj[key];
|
||||
if (item._isFile) files.push(key);
|
||||
if (item && item._isFile) files.push(key);
|
||||
else folders.push(key);
|
||||
});
|
||||
|
||||
|
|
@ -455,6 +456,8 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
audioPlayer.play().catch(e => console.log('Erro ao tocar:', e));
|
||||
}
|
||||
|
||||
// === O restante do seu código JavaScript original pode continuar a partir daqui sem alterações (Filtros, Modais, Lógica de Gravação) ===
|
||||
|
||||
// === LÓGICA DE FILTRAGEM (ROBUSTA) ===
|
||||
function filterBySample(sampleName) {
|
||||
if (!sampleName) {
|
||||
|
|
@ -556,7 +559,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
// === LÓGICA DE UPLOAD & GRAVAÇÃO ===
|
||||
// ==========================================================
|
||||
const uploadModal = document.getElementById('upload-sample-modal');
|
||||
const btnOpenUpload = document.getElementById('btn-open-upload'); // Botão agora pode estar hidden
|
||||
const btnOpenUpload = document.getElementById('btn-open-upload');
|
||||
const btnCloseUpload = document.getElementById('close-upload-modal');
|
||||
const btnCancelUpload = document.getElementById('cancel-upload');
|
||||
const fileInput = document.getElementById('file-input-real');
|
||||
|
|
@ -584,7 +587,6 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
let audioBlob = null;
|
||||
let activeTab = 'file';
|
||||
|
||||
// Alternância de Abas
|
||||
function switchTab(mode) {
|
||||
activeTab = mode;
|
||||
if(mode === 'file') {
|
||||
|
|
@ -608,7 +610,6 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
// Lógica do Microfone
|
||||
recordBtn.onclick = async () => {
|
||||
if (!isRecording) {
|
||||
// INICIAR GRAVAÇÃO
|
||||
try {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
mediaRecorder = new MediaRecorder(stream);
|
||||
|
|
@ -617,7 +618,6 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
mediaRecorder.start();
|
||||
isRecording = true;
|
||||
|
||||
// UI Updates
|
||||
recordBtn.classList.add('is-recording');
|
||||
recordIndicator.classList.remove('is-hidden');
|
||||
recordPreview.classList.add('is-hidden');
|
||||
|
|
@ -644,7 +644,6 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
console.error(err);
|
||||
}
|
||||
} else {
|
||||
// PARAR GRAVAÇÃO
|
||||
stopRecordingLogic();
|
||||
}
|
||||
};
|
||||
|
|
@ -660,7 +659,6 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
uploadStatus.className = "help has-text-success";
|
||||
}
|
||||
|
||||
// Modal Open/Close
|
||||
function toggleUploadModal(show) {
|
||||
if(show) {
|
||||
uploadModal.classList.add('is-active');
|
||||
|
|
@ -700,7 +698,6 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
}
|
||||
formData.append('sample_file', fileInput.files[0]);
|
||||
} else {
|
||||
// ABA MICROFONE
|
||||
if (!audioBlob) {
|
||||
alert("Grave algo antes de enviar.");
|
||||
return;
|
||||
|
|
@ -713,10 +710,8 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
formData.append('sample_file', audioBlob, filename);
|
||||
}
|
||||
|
||||
// URL CORRIGIDA: Usando Proxy reverso (sem porta 33002)
|
||||
const API_URL = '/api/upload/sample';
|
||||
|
||||
// UI Loading
|
||||
confirmUploadBtn.classList.add('is-loading');
|
||||
uploadProgress.classList.remove('is-hidden');
|
||||
uploadStatus.classList.remove('is-hidden');
|
||||
|
|
|
|||
Loading…
Reference in New Issue