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) {
1835 return String(value);1835 return String(value);
1836}1836}
18371837
1838function getMessagesCallback(args, value) {1838async function getMessagesCallback(args, value) {
1839 const includeNames = !isFalseBoolean(args?.names);1839 const includeNames = !isFalseBoolean(args?.names);
1840 const includeHidden = isTrueBoolean(args?.hidden);1840 const includeHidden = isTrueBoolean(args?.hidden);
1841 const role = args?.role;1841 const role = args?.role;
@@ -1868,30 +1868,36 @@ function getMessagesCallback(args, value) {
1868 throw new Error(`Invalid role provided. Expected one of: system, assistant, user. Got: ${role}`);1868 throw new Error(`Invalid role provided. Expected one of: system, assistant, user. Got: ${role}`);
1869 };1869 };
18701870
1871 const messages = [];1871 const processMessage = async (mesId) => {
18721872 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;
1878 }1876 }
18791877
1880 if (role && !filterByRole(message)) {1878 if (role && !filterByRole(msg)) {
1881 console.debug(`/messages: Skipping message with ID ${messageId} due to role filter`);1879 console.debug(`/messages: Skipping message with ID ${mesId} due to role filter`);
1882 continue;1880 return null;
1883 }1881 }
18841882
1885 if (!includeHidden && message.is_system) {1883 if (!includeHidden && msg.is_system) {
1886 console.debug(`/messages: Skipping hidden message with ID ${messageId}`);1884 console.debug(`/messages: Skipping hidden message with ID ${mesId}`);
1887 continue;1885 return null;
1888 }1886 }
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);
1895 }1901 }
18961902
1897 return messages.join('\n\n');1903 return messages.join('\n\n');