Merge pull request #2543 from LenAnderson/streaming-performance Remove DOM queries and jQuery during streaming

67f83250cd1207b48dc789b26bbf6b30d6ca5b56

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

Signed
1 files changed, +14 -5Ignore whitespace
public/script.js+14 -5
@@ -2797,6 +2797,10 @@ class StreamingProcessor {
27972797 constructor(type, force_name2, timeStarted, messageAlreadyGenerated) {
27982798 this.result = '';
27992799 this.messageId = -1;
2800+ this.messageDom = null;
2801+ this.messageTextDom = null;
2802+ this.messageTimerDom = null;
2803+ this.sendTextarea = document.querySelector('#send_textarea');
28002804 this.type = type;
28012805 this.force_name2 = force_name2;
28022806 this.isStopped = false;
@@ -2833,11 +2837,15 @@ class StreamingProcessor {
28332837 let messageId = -1;
28342838
28352839 if (this.type == 'impersonate') {
2836- $('#send_textarea').val('')[0].dispatchEvent(new Event('input', { bubbles: true }));
2840+ this.sendTextarea.value = '';
2841+ this.sendTextarea.dispatchEvent(new Event('input', { bubbles: true }));
28372842 }
28382843 else {
28392844 await saveReply(this.type, text, true);
28402845 messageId = chat.length - 1;
2846+ this.messageDom = document.querySelector(`#chat .mes[mesid="${messageId}"]`);
2847+ this.messageTextDom = this.messageDom.querySelector('.mes_text');
2848+ this.messageTimerDom = this.messageDom.querySelector('.mes_timer');
28412849 this.showMessageButtons(messageId);
28422850 }
28432851
@@ -2869,7 +2877,8 @@ class StreamingProcessor {
28692877 }
28702878
28712879 if (isImpersonate) {
2872- $('#send_textarea').val(processedText)[0].dispatchEvent(new Event('input', { bubbles: true }));
2880+ this.sendTextarea.value = processedText;
2881+ this.sendTextarea.dispatchEvent(new Event('input', { bubbles: true }));
28732882 }
28742883 else {
28752884 let currentTime = new Date();
@@ -2902,9 +2911,9 @@ class StreamingProcessor {
29022911 chat[messageId].is_user,
29032912 messageId,
29042913 );
2905- const mesText = $(`#chat .mes[mesid="${messageId}"] .mes_text`);
2914+ this.messageTextDom.innerHTML = formattedText;
2906- mesText.html(formattedText);
2915+ this.messageTimerDom.textContent = timePassed.timerValue;
2907- $(`#chat .mes[mesid="${messageId}"] .mes_timer`).text(timePassed.timerValue).attr('title', timePassed.timerTitle);
2916+ this.messageTimerDom.title = timePassed.timerTitle;
29082917 this.setFirstSwipe(messageId);
29092918 }
29102919