Enable Discovery debug logging for production troubleshooting

- Add DISCOVERY_LOG_LEVEL=debug
- Add DISCOVERY_SHOW_PROGRESS=true
- Temporary changes for debugging InitializerProcessor fixes on production
This commit is contained in:
2025-08-11 20:13:26 +02:00
parent 59fd3dd3b1
commit 55a330b223
3683 changed files with 2956207 additions and 16948 deletions

View File

@@ -1,23 +1,121 @@
// modules/ui/UIManager.js
import { Modal } from './components/Modal.js';
import { Lightbox } from './components/Lightbox.js';
import { Logger } from '../../core/logger.js';
/**
* @typedef {Object} UIComponentProps
* @property {string} [content] - HTML content for the component
* @property {Function} [onClose] - Callback when component closes
*/
/**
* Available UI components
* @type {Object<string, Function>}
*/
const components = {
modal: Modal,
lightbox: Lightbox,
};
/**
* Active component instances (singletons)
* @type {Object<string, Object>}
*/
const activeInstances = {};
/**
* UI Manager for creating and managing UI components
* @namespace UIManager
*/
export const UIManager = {
/**
* Open a UI component (reuses existing instance for singletons)
* @param {string} type - Component type (e.g., 'modal', 'lightbox')
* @param {UIComponentProps} [props={}] - Component properties
* @returns {Object|null} Component instance or null if type unknown
*/
open(type, props = {}) {
const Component = components[type];
if (!Component) {
console.warn(`[UIManager] Unknown type: ${type}`);
Logger.warn(`[UIManager] Unknown type: ${type}`);
return null;
}
// For lightbox, reuse existing instance for efficiency
if (type === 'lightbox') {
if (activeInstances.lightbox) {
Logger.info('[UIManager] Reusing existing lightbox instance');
// Update content and reopen
activeInstances.lightbox.updateContent(props.content || '');
// Always call open() to ensure it's shown, regardless of current state
activeInstances.lightbox.open();
return activeInstances.lightbox;
} else {
Logger.info('[UIManager] Creating new lightbox instance');
// Create new instance and store it
const instance = new Component({
...props,
onClose: () => {
// Don't delete the instance, just close it for reuse
Logger.info('[UIManager] Lightbox closed, instance kept for reuse');
if (props.onClose) props.onClose();
}
});
activeInstances.lightbox = instance;
instance.open();
return instance;
}
}
// For other components, create new instances
const instance = new Component(props);
instance.open();
return instance;
},
/**
* Close a UI component instance
* @param {Object} instance - Component instance to close
*/
close(instance) {
if (instance?.close) instance.close();
},
/**
* Close a component by type
* @param {string} type - Component type to close
*/
closeByType(type) {
if (activeInstances[type]) {
this.close(activeInstances[type]);
}
},
/**
* Check if a component is currently open
* @param {string} type - Component type to check
* @returns {boolean}
*/
isOpen(type) {
return activeInstances[type]?.isOpen() || false;
},
/**
* Destroy all active instances (cleanup)
*/
destroyAll() {
Object.values(activeInstances).forEach(instance => {
if (instance?.destroy) {
instance.destroy();
}
});
Object.keys(activeInstances).forEach(key => {
delete activeInstances[key];
});
}
};