Files
docupulse/static/js/rooms/room.js
2025-05-28 11:37:25 +02:00

131 lines
5.2 KiB
JavaScript

console.log('[RoomManager] Script loaded');
// Main room.js file - Coordinates all room functionality
import { FileManager } from './fileManager.js';
import { ViewManager } from './viewManager.js';
import { UploadManager } from './uploadManager.js';
import { SearchManager } from './searchManager.js';
import { ModalManager } from './modalManager.js';
console.log('[RoomManager] All modules imported successfully');
class RoomManager {
constructor(config) {
console.log('[RoomManager] Initializing with config:', config);
this.roomId = config.roomId;
this.canDelete = config.canDelete;
this.canShare = config.canShare;
this.canUpload = config.canUpload;
this.canDownload = config.canDownload;
this.canRename = config.canRename;
this.canMove = config.canMove;
console.log('[RoomManager] Creating manager instances...');
// Initialize managers
this.fileManager = new FileManager(this);
this.viewManager = new ViewManager(this);
this.uploadManager = new UploadManager(this);
this.searchManager = new SearchManager(this);
this.modalManager = new ModalManager(this);
console.log('[RoomManager] All managers initialized');
// Initialize the room
this.initialize();
}
async initialize() {
console.log('[RoomManager] Starting initialization...');
// Get current path from URL
this.currentPath = this.getPathFromUrl();
console.log('[RoomManager] Current path:', this.currentPath);
try {
console.log('[RoomManager] Initializing view...');
// Initialize view and fetch files
await this.viewManager.initializeView();
console.log('[RoomManager] View initialized');
console.log('[RoomManager] Fetching files...');
await this.fileManager.fetchFiles();
console.log('[RoomManager] Files fetched');
console.log('[RoomManager] Initializing search...');
// Initialize search
this.searchManager.initialize();
console.log('[RoomManager] Search initialized');
console.log('[RoomManager] Setting up event listeners...');
// Initialize event listeners
this.initializeEventListeners();
console.log('[RoomManager] Event listeners initialized');
console.log('[RoomManager] Initialization complete');
} catch (error) {
console.error('[RoomManager] Error during initialization:', error);
}
}
getPathFromUrl() {
const urlParams = new URLSearchParams(window.location.search);
const path = urlParams.get('path') || '';
console.log('[RoomManager] Getting path from URL:', path);
return path;
}
initializeEventListeners() {
console.log('[RoomManager] Setting up event listeners');
// Add any global event listeners here
}
}
// Initialize the room manager when the script loads
function initializeRoom() {
console.log('[RoomManager] Starting room initialization...');
try {
// Wait for all meta tags to be available
const requiredMetaTags = [
'room-id',
'can-delete',
'can-share',
'can-upload',
'can-download',
'can-rename',
'can-move'
];
console.log('[RoomManager] Checking required meta tags...');
const missingTags = requiredMetaTags.filter(tag => !document.querySelector(`meta[name="${tag}"]`));
if (missingTags.length > 0) {
console.error('[RoomManager] Missing required meta tags:', missingTags);
return;
}
console.log('[RoomManager] All meta tags found, creating config...');
const config = {
roomId: document.querySelector('meta[name="room-id"]').getAttribute('content'),
canDelete: document.querySelector('meta[name="can-delete"]').getAttribute('content') === 'true',
canShare: document.querySelector('meta[name="can-share"]').getAttribute('content') === 'true',
canUpload: document.querySelector('meta[name="can-upload"]').getAttribute('content') === 'true',
canDownload: document.querySelector('meta[name="can-download"]').getAttribute('content') === 'true',
canRename: document.querySelector('meta[name="can-rename"]').getAttribute('content') === 'true',
canMove: document.querySelector('meta[name="can-move"]').getAttribute('content') === 'true'
};
console.log('[RoomManager] Config created:', config);
window.roomManager = new RoomManager(config);
} catch (error) {
console.error('[RoomManager] Error during initialization:', error);
}
}
// Wait for DOM to be fully loaded
if (document.readyState === 'loading') {
console.log('[RoomManager] DOM still loading, waiting for DOMContentLoaded...');
document.addEventListener('DOMContentLoaded', initializeRoom);
} else {
console.log('[RoomManager] DOM already loaded, initializing with delay...');
// If DOM is already loaded, wait a bit to ensure all scripts are loaded
setTimeout(initializeRoom, 0);
}