This commit is contained in:
overcuriousity 2025-08-09 15:22:11 +02:00
parent 3f9d1860aa
commit 7607a73373

View File

@ -1,5 +1,5 @@
---
// src/pages/contribute/knowledgebase.astro - SIMPLIFIED: Issues only, minimal validation
// src/pages/contribute/knowledgebase.astro
import BaseLayout from '../../layouts/BaseLayout.astro';
import { withAuth } from '../../utils/auth.js';
import { getToolsData } from '../../utils/dataService.js';
@ -242,7 +242,6 @@ class KnowledgebaseForm {
constructor() {
this.init();
this.checkUploadStatus();
}
private init() {
@ -313,7 +312,7 @@ class KnowledgebaseForm {
// Client-side validation before upload
const validation = this.validateFileBeforeUpload(file);
if (!validation.valid) {
this.showMessage('error', `Cannot upload ${file.name}: ${validation.error}`);
console.log('[UPLOAD]Cannot upload ', file.name, ' Error: ', validation.error);
return;
}
@ -409,7 +408,6 @@ class KnowledgebaseForm {
fileItem.url = responseData.url;
this.renderFileList();
this.showMessage('success', `Successfully uploaded ${fileItem.name}`);
} else {
if (responseData && responseData.details) {
@ -424,7 +422,6 @@ class KnowledgebaseForm {
? error.message
: 'Unknown upload error';
this.showMessage('error', `Failed to upload ${fileItem.name}: ${errorMessage}`);
this.removeFile(fileId);
}
}
@ -496,7 +493,6 @@ class KnowledgebaseForm {
} catch (error) {
console.error('[KB FORM] Submission error:', error);
this.showMessage('error', 'Submission failed. Please try again.');
} finally {
this.isSubmitting = false;
(this.elements.submitBtn as HTMLButtonElement).disabled = false;
@ -525,65 +521,6 @@ class KnowledgebaseForm {
this.renderFileList();
}
private showMessage(type: 'success' | 'error' | 'warning', message: string, details?: string) {
const container = document.getElementById('message-container');
if (!container) return;
const messageEl = document.createElement('div');
messageEl.className = `message message-${type}`;
// Create message content with optional details
const messageContent = document.createElement('div');
messageContent.className = 'message-content';
messageContent.textContent = message;
messageEl.appendChild(messageContent);
// Add details if provided
if (details) {
const detailsEl = document.createElement('div');
detailsEl.className = 'message-details';
detailsEl.textContent = details;
messageEl.appendChild(detailsEl);
}
// Add close button
const closeBtn = document.createElement('button');
closeBtn.className = 'message-close';
closeBtn.innerHTML = '×';
closeBtn.onclick = () => messageEl.remove();
messageEl.appendChild(closeBtn);
container.appendChild(messageEl);
// Auto-remove after 10 seconds for errors (to give time to read), 5 seconds for others
const timeout = type === 'error' ? 10000 : 5000;
setTimeout(() => {
if (messageEl.parentNode) {
messageEl.remove();
}
}, timeout);
}
private async checkUploadStatus() {
try {
console.log('[DIAGNOSTIC] Checking upload endpoint status');
const response = await fetch('/api/upload/media', { method: 'GET' });
const status = await response.json();
console.log('[DIAGNOSTIC] Upload status:', status);
if (!status.storage?.nextcloud?.configured && !status.storage?.local?.available) {
this.showMessage('warning', 'No upload storage configured. Check server configuration.');
}
return status;
} catch (error) {
console.error('[DIAGNOSTIC] Failed to check upload status:', error);
this.showMessage('error', 'Could not connect to upload service');
return null;
}
}
public removeFileById(fileId: string) {
this.removeFile(fileId);
}