131 lines
5.2 KiB
JavaScript
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);
|
|
}
|