[Feat] New settings passwd UX & Config enc support

This commit is contained in:
Minoricew
2025-06-05 00:35:50 +08:00
parent fbc5cf1f57
commit 7c8d3d4fbc
33 changed files with 2006 additions and 675 deletions

47
src/aura/utils/eventBus.js Executable file
View File

@@ -0,0 +1,47 @@
class EventBus {
constructor() {
this.listeners = new Map();
}
on(eventName, callback) {
if (!this.listeners.has(eventName)) {
this.listeners.set(eventName, new Set());
}
this.listeners.get(eventName).add(callback);
return () => this.off(eventName, callback);
}
off(eventName, callback) {
if (this.listeners.has(eventName)) {
this.listeners.get(eventName).delete(callback);
if (this.listeners.get(eventName).size === 0) {
this.listeners.delete(eventName);
}
}
}
emit(eventName, ...args) {
if (this.listeners.has(eventName)) {
this.listeners.get(eventName).forEach((callback) => {
try {
callback(...args);
} catch (error) {
console.error(
`[HugoAura / EventBus] Error in ${eventName} callback:`,
error
);
}
});
}
}
once(eventName, callback) {
const onceCallback = (...args) => {
callback(...args);
this.off(eventName, onceCallback);
};
return this.on(eventName, onceCallback);
}
}
module.exports = EventBus;