feat(integration): extract SillyTavern event handlers to dedicated module
- Create src/systems/integration/sillytavern.js with all event handlers - Move commitTrackerData() (deferred from Epic 1) - Move sendPlotProgression() to plotProgression.js - Move updateGenerationModeUI() to layout.js - Add registerAllEvents() and unregisterAllEvents() to events.js - Centralize event registration in index.js initialization This completes Epic 6: Integration Layer Extraction ~340 lines extracted from index.js index.js reduced from ~783 lines to 423 lines
This commit is contained in:
@@ -45,3 +45,44 @@ export function emit(eventType, ...args) {
|
||||
* Re-export event types for convenience
|
||||
*/
|
||||
export { event_types };
|
||||
|
||||
// Store registered handlers for cleanup
|
||||
const registeredHandlers = new Map();
|
||||
|
||||
/**
|
||||
* Registers all extension event handlers
|
||||
* @param {Object} handlers - Map of event types to handler functions or arrays of handler functions
|
||||
* @example
|
||||
* registerAllEvents({
|
||||
* [event_types.MESSAGE_SENT]: onMessageSent,
|
||||
* [event_types.CHAT_CHANGED]: [onCharacterChanged, updatePersonaAvatar]
|
||||
* });
|
||||
*/
|
||||
export function registerAllEvents(handlers) {
|
||||
for (const [eventType, handler] of Object.entries(handlers)) {
|
||||
// Handler can be a single function or an array of functions
|
||||
const handlerArray = Array.isArray(handler) ? handler : [handler];
|
||||
|
||||
for (const handlerFn of handlerArray) {
|
||||
eventSource.on(eventType, handlerFn);
|
||||
|
||||
// Store for later cleanup
|
||||
if (!registeredHandlers.has(eventType)) {
|
||||
registeredHandlers.set(eventType, []);
|
||||
}
|
||||
registeredHandlers.get(eventType).push(handlerFn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters all extension event handlers (for cleanup/reload)
|
||||
*/
|
||||
export function unregisterAllEvents() {
|
||||
for (const [eventType, handlers] of registeredHandlers.entries()) {
|
||||
for (const handler of handlers) {
|
||||
eventSource.off(eventType, handler);
|
||||
}
|
||||
}
|
||||
registeredHandlers.clear();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user