queue all auto-executes until APP_READY
This commit is contained in:
parent
617cabd7b5
commit
6fe17a1bed
|
@ -58,6 +58,10 @@ const defaultSettings = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/** @type {Boolean}*/
|
||||||
|
let isReady = false;
|
||||||
|
/** @type {Function[]}*/
|
||||||
|
let executeQueue = [];
|
||||||
/** @type {QuickReplySettings}*/
|
/** @type {QuickReplySettings}*/
|
||||||
let settings;
|
let settings;
|
||||||
/** @type {SettingsUi} */
|
/** @type {SettingsUi} */
|
||||||
|
@ -144,6 +148,16 @@ const loadSettings = async () => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const executeIfReadyElseQueue = async (functionToCall, args) => {
|
||||||
|
if (isReady) {
|
||||||
|
log('calling', { functionToCall, args });
|
||||||
|
await functionToCall(...args);
|
||||||
|
} else {
|
||||||
|
log('queueing', { functionToCall, args });
|
||||||
|
executeQueue.push(async()=>await functionToCall(...args));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -183,9 +197,20 @@ const init = async () => {
|
||||||
slash.init();
|
slash.init();
|
||||||
autoExec = new AutoExecuteHandler(settings);
|
autoExec = new AutoExecuteHandler(settings);
|
||||||
|
|
||||||
|
log('executing startup');
|
||||||
await autoExec.handleStartup();
|
await autoExec.handleStartup();
|
||||||
|
log('/executing startup');
|
||||||
|
|
||||||
|
log(`executing queue (${executeQueue.length} items)`);
|
||||||
|
while (executeQueue.length > 0) {
|
||||||
|
const func = executeQueue.shift();
|
||||||
|
await func();
|
||||||
|
}
|
||||||
|
log('/executing queue');
|
||||||
|
isReady = true;
|
||||||
|
log('READY');
|
||||||
};
|
};
|
||||||
await init();
|
init();
|
||||||
|
|
||||||
const onChatChanged = async (chatIdx) => {
|
const onChatChanged = async (chatIdx) => {
|
||||||
log('CHAT_CHANGED', chatIdx);
|
log('CHAT_CHANGED', chatIdx);
|
||||||
|
@ -199,14 +224,14 @@ const onChatChanged = async (chatIdx) => {
|
||||||
|
|
||||||
await autoExec.handleChatChanged();
|
await autoExec.handleChatChanged();
|
||||||
};
|
};
|
||||||
eventSource.on(event_types.CHAT_CHANGED, onChatChanged);
|
eventSource.on(event_types.CHAT_CHANGED, (...args)=>executeIfReadyElseQueue(onChatChanged, args));
|
||||||
|
|
||||||
const onUserMessage = async () => {
|
const onUserMessage = async () => {
|
||||||
await autoExec.handleUser();
|
await autoExec.handleUser();
|
||||||
};
|
};
|
||||||
eventSource.on(event_types.USER_MESSAGE_RENDERED, onUserMessage);
|
eventSource.on(event_types.USER_MESSAGE_RENDERED, (...args)=>executeIfReadyElseQueue(onUserMessage, args));
|
||||||
|
|
||||||
const onAiMessage = async () => {
|
const onAiMessage = async () => {
|
||||||
await autoExec.handleAi();
|
await autoExec.handleAi();
|
||||||
};
|
};
|
||||||
eventSource.on(event_types.CHARACTER_MESSAGE_RENDERED, onAiMessage);
|
eventSource.on(event_types.CHARACTER_MESSAGE_RENDERED, (...args)=>executeIfReadyElseQueue(onAiMessage, args));
|
||||||
|
|
Loading…
Reference in New Issue