Properly stop group auto mode generation with stop button

This commit is contained in:
SillyLossy
2023-06-03 01:44:40 +03:00
parent 15d88d3df2
commit cf9e87ed25
2 changed files with 20 additions and 5 deletions

View File

@ -424,6 +424,7 @@ export const event_types = {
MESSAGE_DELETED: 'message_deleted', MESSAGE_DELETED: 'message_deleted',
IMPERSONATE_READY: 'impersonate_ready', IMPERSONATE_READY: 'impersonate_ready',
CHAT_CHANGED: 'chat_id_changed', CHAT_CHANGED: 'chat_id_changed',
GENERATION_STOPPED: 'generation_stopped',
} }
export const eventSource = new EventEmitter(); export const eventSource = new EventEmitter();
@ -6707,6 +6708,7 @@ $(document).ready(function () {
abortController.abort(); abortController.abort();
hideStopButton(); hideStopButton();
} }
eventSource.emit(event_types.GENERATION_STOPPED);
}); });
$('.drawer-toggle').click(function () { $('.drawer-toggle').click(function () {

View File

@ -386,16 +386,16 @@ async function generateGroupWrapper(by_auto_mode, type = null, params = {}) {
return; return;
} }
if (is_group_generating) {
return false;
}
// Auto-navigate back to group menu // Auto-navigate back to group menu
if (menu_type !== "group_edit") { if (menu_type !== "group_edit") {
select_group_chats(selected_group); select_group_chats(selected_group);
await delay(1); await delay(1);
} }
if (is_group_generating) {
return false;
}
const group = groups.find((x) => x.id === selected_group); const group = groups.find((x) => x.id === selected_group);
let typingIndicator = $("#chat .typing_indicator"); let typingIndicator = $("#chat .typing_indicator");
@ -815,6 +815,8 @@ export async function editGroup(id, immediately, reload = true) {
saveGroupDebounced(group); saveGroupDebounced(group);
} }
let groupAutoModeAbortController = null;
async function groupChatAutoModeWorker() { async function groupChatAutoModeWorker() {
if (!is_group_automode_enabled || online_status === "no_connection") { if (!is_group_automode_enabled || online_status === "no_connection") {
return; return;
@ -830,7 +832,8 @@ async function groupChatAutoModeWorker() {
return; return;
} }
await generateGroupWrapper(true); groupAutoModeAbortController = new AbortController();
await generateGroupWrapper(true, 'auto', { signal: groupAutoModeAbortController.signal });
} }
async function modifyGroupMember(chat_id, groupMember, isDelete) { async function modifyGroupMember(chat_id, groupMember, isDelete) {
@ -1403,6 +1406,15 @@ function onGroupScenarioRemoveClick() {
$(this).closest('.group_scenario').find('.group_chat_scenario').val('').trigger('input'); $(this).closest('.group_scenario').find('.group_chat_scenario').val('').trigger('input');
} }
function stopAutoModeGeneration() {
if (groupAutoModeAbortController) {
groupAutoModeAbortController.abort();
}
is_group_automode_enabled = false;
$("#rm_group_automode").prop("checked", false);
}
jQuery(() => { jQuery(() => {
$(document).on("click", ".group_select", selectGroup); $(document).on("click", ".group_select", selectGroup);
$(document).on("input", ".group_chat_scenario", onGroupScenarioInput); $(document).on("input", ".group_chat_scenario", onGroupScenarioInput);
@ -1414,5 +1426,6 @@ jQuery(() => {
$("#rm_group_automode").on("input", function () { $("#rm_group_automode").on("input", function () {
const value = $(this).prop("checked"); const value = $(this).prop("checked");
is_group_automode_enabled = value; is_group_automode_enabled = value;
eventSource.once(event_types.GENERATION_STOPPED, stopAutoModeGeneration);
}); });
}); });