From dedfead59e2529f19f53d795b97e98802786d6b6 Mon Sep 17 00:00:00 2001 From: tomt610 Date: Thu, 8 Jan 2026 22:12:06 +0000 Subject: [PATCH] Add event emission when tracker update completes Emits 'rpg_companion_update_complete' event after updateRPGData() finishes. This allows other extensions (like Context Prewarm) to hook into the completion of tracker updates and perform actions afterward. The event is emitted in the finally block, so it fires regardless of success or failure, after isGenerating is reset. --- src/systems/generation/apiClient.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/systems/generation/apiClient.js b/src/systems/generation/apiClient.js index d46abd8..1cbabc1 100644 --- a/src/systems/generation/apiClient.js +++ b/src/systems/generation/apiClient.js @@ -3,8 +3,12 @@ * Handles API calls for RPG tracker generation */ -import { generateRaw, chat } from '../../../../../../../script.js'; +import { generateRaw, chat, eventSource } from '../../../../../../../script.js'; import { executeSlashCommandsOnChatInput } from '../../../../../../../scripts/slash-commands.js'; + +// Custom event name for when RPG Companion finishes updating tracker data +// Other extensions can listen for this event to know when RPG Companion is done +export const RPG_COMPANION_UPDATE_COMPLETE = 'rpg_companion_update_complete'; import { extensionSettings, lastGeneratedData, @@ -397,6 +401,10 @@ export async function updateRPGData(renderUserStats, renderInfoBox, renderThough // This ensures the flag persists through both main generation AND tracker generation // console.log('[RPG Companion] 🔄 Tracker generation complete - resetting lastActionWasSwipe to false'); setLastActionWasSwipe(false); + + // Emit event for other extensions to know RPG Companion has finished updating + console.debug('[RPG Companion] Emitting RPG_COMPANION_UPDATE_COMPLETE event'); + eventSource.emit(RPG_COMPANION_UPDATE_COMPLETE); } }