(original_onmessage, event)
| 746 | var buffer = []; |
| 747 | |
| 748 | async function processMessage(original_onmessage, event) { |
| 749 | if (!is_on) |
| 750 | original_onmessage(event); |
| 751 | |
| 752 | var response = new ChatEvent(payload, event); |
| 753 | if (response.is_valid) { |
| 754 | await response.process(response_blocked); |
| 755 | |
| 756 | if (mod_result < response.mod_result) { |
| 757 | mod_result = response.mod_result; |
| 758 | updateDeModMessageState(mod_result); |
| 759 | } |
| 760 | |
| 761 | response_blocked = response.is_blocked; |
| 762 | payload = response.payload; |
| 763 | |
| 764 | if (response.has_body) { |
| 765 | last_response = response.clone(); |
| 766 | last_response.sequence_id += sequence_shift; |
| 767 | } |
| 768 | |
| 769 | if (response_blocked) { |
| 770 | if (response.is_done) { |
| 771 | if (last_response != null) { |
| 772 | console.log("[DEMOD] Response blocked, redownloading from history."); |
| 773 | var latest = await redownloadLatest(); |
| 774 | last_response.replace(latest); |
| 775 | buffer.push(last_response); |
| 776 | sequence_shift++; |
| 777 | } |
| 778 | } |
| 779 | } |
| 780 | |
| 781 | response.sequence_id += sequence_shift; |
| 782 | buffer.push(response); |
| 783 | |
| 784 | var entry; |
| 785 | try { |
| 786 | for (entry of buffer) { |
| 787 | var entry_event = entry.getEvent(); |
| 788 | original_onmessage(entry_event); |
| 789 | } |
| 790 | buffer.length = 0; |
| 791 | } catch (e) { |
| 792 | console.log("[DEMOD] Failed to send parsed response: " + entry.response_data + "\n\nWith body: " + entry.response_body); |
| 793 | } |
| 794 | } |
| 795 | else { |
| 796 | original_onmessage(event); |
| 797 | } |
| 798 | }; |
| 799 | |
| 800 | var ws_proxy = { |
| 801 | set: function (target, prop, v) { |
no test coverage detected