Merge pull request #2682 from Succubyss/messages-cmd_async /messages callback refactored to async

0456d753ded6d8a0ed24b7d57433d30b210a3627

Cohee <18619528+Cohee1207@users.noreply.github.com>

Signed
1 files changed, +22 -21Ignore whitespace
public/scripts/slash-commands.js+22 -21
@@ -1835,7 +1835,7 @@ async function popupCallback(args, value) {
18351835 return String(value);
18361836}
18371837
18381838async function getMessagesCallback(args, value) {
18391839 const includeNames = !isFalseBoolean(args?.names);
18401840 const includeHidden = isTrueBoolean(args?.hidden);
18411841 const role = args?.role;
@@ -1868,33 +1868,34 @@ function getMessagesCallback(args, value) {
18681868 throw new Error(`Invalid role provided. Expected one of: system, assistant, user. Got: ${role}`);
18691869 };
18701870
1871- const messages = [];
1871+ const processMessage = async (mesId) => {
1872-
1872+ const msg = chat[mesId];
1873- for (let messageId = range.start; messageId <= range.end; messageId++) {
1873+ if (!msg) {
1874- const message = chat[messageId];
1874+ console.warn(`WARN: No message found with ID ${mesId}`);
1875- if (!message) {
1875+ return null;
1876- console.warn(`WARN: No message found with ID ${messageId}`);
1877- continue;
18781876 }
18791877
18801878 if (role && !filterByRole(messagemsg)) {
18811879 console.debug(`/messages: Skipping message with ID ${messageIdmesId} due to role filter`);
18821880 continuereturn null;
18831881 }
18841882
18851883 if (!includeHidden && messagemsg.is_system) {
18861884 console.debug(`/messages: Skipping hidden message with ID ${messageIdmesId}`);
18871885 continuereturn null;
18881886 }
18891887
1890- if (includeNames) {
1888+ return includeNames ? `${msg.name}: ${msg.mes}` : msg.mes;
1891- messages.push(`${message.name}: ${message.mes}`);
1889+ };
1892- } else {
1890+
1893- messages.push(message.mes);
1891+ const messagePromises = [];
1894- }
1892+
1895- }
1893+ for (let rInd = range.start; rInd <= range.end; ++rInd)
1894+ messagePromises.push(processMessage(rInd));
1895+
1896+ const messages = await Promise.all(messagePromises);
18961897
18971898 return messages.filter(m => m !== null).join('\n\n');
18981899}
18991900
19001901async function runCallback(args, name) {