simplify
This commit is contained in:
		
							parent
							
								
									3f9d1860aa
								
							
						
					
					
						commit
						7607a73373
					
				@ -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 BaseLayout from '../../layouts/BaseLayout.astro';
 | 
				
			||||||
import { withAuth } from '../../utils/auth.js';
 | 
					import { withAuth } from '../../utils/auth.js';
 | 
				
			||||||
import { getToolsData } from '../../utils/dataService.js';
 | 
					import { getToolsData } from '../../utils/dataService.js';
 | 
				
			||||||
@ -242,7 +242,6 @@ class KnowledgebaseForm {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  constructor() {
 | 
					  constructor() {
 | 
				
			||||||
    this.init();
 | 
					    this.init();
 | 
				
			||||||
    this.checkUploadStatus();
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private init() {
 | 
					  private init() {
 | 
				
			||||||
@ -313,7 +312,7 @@ class KnowledgebaseForm {
 | 
				
			|||||||
      // Client-side validation before upload
 | 
					      // Client-side validation before upload
 | 
				
			||||||
      const validation = this.validateFileBeforeUpload(file);
 | 
					      const validation = this.validateFileBeforeUpload(file);
 | 
				
			||||||
      if (!validation.valid) {
 | 
					      if (!validation.valid) {
 | 
				
			||||||
        this.showMessage('error', `Cannot upload ${file.name}: ${validation.error}`);
 | 
					        console.log('[UPLOAD]Cannot upload ', file.name, ' Error: ', validation.error);
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -409,7 +408,6 @@ class KnowledgebaseForm {
 | 
				
			|||||||
        fileItem.url = responseData.url;
 | 
					        fileItem.url = responseData.url;
 | 
				
			||||||
        this.renderFileList();
 | 
					        this.renderFileList();
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        this.showMessage('success', `Successfully uploaded ${fileItem.name}`);
 | 
					 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if (responseData && responseData.details) {
 | 
					        if (responseData && responseData.details) {
 | 
				
			||||||
@ -424,7 +422,6 @@ class KnowledgebaseForm {
 | 
				
			|||||||
        ? error.message 
 | 
					        ? error.message 
 | 
				
			||||||
        : 'Unknown upload error';
 | 
					        : 'Unknown upload error';
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
      this.showMessage('error', `Failed to upload ${fileItem.name}: ${errorMessage}`);
 | 
					 | 
				
			||||||
      this.removeFile(fileId);
 | 
					      this.removeFile(fileId);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -496,7 +493,6 @@ class KnowledgebaseForm {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    } catch (error) {
 | 
					    } catch (error) {
 | 
				
			||||||
      console.error('[KB FORM] Submission error:', error);
 | 
					      console.error('[KB FORM] Submission error:', error);
 | 
				
			||||||
      this.showMessage('error', 'Submission failed. Please try again.');
 | 
					 | 
				
			||||||
    } finally {
 | 
					    } finally {
 | 
				
			||||||
      this.isSubmitting = false;
 | 
					      this.isSubmitting = false;
 | 
				
			||||||
      (this.elements.submitBtn as HTMLButtonElement).disabled = false;
 | 
					      (this.elements.submitBtn as HTMLButtonElement).disabled = false;
 | 
				
			||||||
@ -525,65 +521,6 @@ class KnowledgebaseForm {
 | 
				
			|||||||
    this.renderFileList();
 | 
					    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) {
 | 
					  public removeFileById(fileId: string) {
 | 
				
			||||||
    this.removeFile(fileId);
 | 
					    this.removeFile(fileId);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user