getMessagesCallback: refactor to async

5e354f22c5f9ac36d37b67c8caa7126ab5049273

Succubyss <87207237+Succubyss@users.noreply.github.com>

1 files changed, +25 -19Ignore whitespace
public/scripts/slash-commands.js+25 -19
@@ -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,30 +1868,36 @@ 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 = new Array(range.end - range.start + 1);
1894- }
1892+
1893+ for (let rInd = range.start; rInd <= range.end; ++rInd)
1894+ messagePromises[rInd - range.start] = processMessage(rInd);
1895+
1896+ const messages = await Promise.all(messagePromises);
1897+
1898+ for (let i = 0; i < messages.length; /**/ ) {
1899+ if (messages[i] !== null) ++i;
1900+ else messages.splice(i, 1);
18951901 }
18961902
18971903 return messages.join('\n\n');