Prevent rollover on keyboard left swipe if repeating (#3644)

* Prevent rollover on keyboard left swipe if repeating
Closes #3636

* Ditto for right swipe

* Remove goofy comment leftover
This commit is contained in:
Cohee
2025-03-09 16:12:24 +02:00
committed by GitHub
2 changed files with 28 additions and 7 deletions

View File

@@ -8746,11 +8746,17 @@ function formatSwipeCounter(current, total) {
return `${current}\u200b/\u200b${total}`;
}
function swipe_left() { // when we swipe left..but no generation.
/**
* Handles the swipe to the left event.
* @param {JQuery.Event} _event Event.
* @param {object} params Additional parameters.
* @param {string} [params.source] The source of the swipe event.
* @param {boolean} [params.repeated] Is the swipe event repeated.
*/
function swipe_left(_event, { source, repeated } = {}) {
if (chat.length - 1 === Number(this_edit_mes_id)) {
closeMessageEditor();
}
if (isStreamingEnabled() && streamingProcessor) {
streamingProcessor.onStopStreaming();
}
@@ -8758,6 +8764,11 @@ function swipe_left() { // when we swipe left..but no generation.
// Make sure ad-hoc changes to extras are saved before swiping away
syncMesToSwipe();
// If the user is holding down the key and we're at the first swipe, don't do anything
if (source === 'keyboard' && repeated && chat[chat.length - 1].swipe_id === 0) {
return;
}
const swipe_duration = 120;
const swipe_range = '700px';
chat[chat.length - 1]['swipe_id']--;
@@ -8883,8 +8894,14 @@ function swipe_left() { // when we swipe left..but no generation.
}
}
// when we click swipe right button
const swipe_right = () => {
/**
* Handles the swipe to the right event.
* @param {JQuery.Event} _event Event.
* @param {object} params Additional parameters.
* @param {string} [params.source] The source of the swipe event.
* @param {boolean} [params.repeated] Is the swipe event repeated.
*/
function swipe_right(_event, { source, repeated } = {}) {
if (chat.length - 1 === Number(this_edit_mes_id)) {
closeMessageEditor();
}
@@ -8917,6 +8934,10 @@ const swipe_right = () => {
if (chat.length === 1 && chat[0]['swipe_id'] !== undefined && chat[0]['swipe_id'] === chat[0]['swipes'].length - 1) { // if swipe_right is called on the last alternate greeting, loop back around
chat[0]['swipe_id'] = 0;
} else {
// If the user is holding down the key and we're at the last swipe, don't do anything
if (source === 'keyboard' && repeated && chat[chat.length - 1].swipe_id === chat[chat.length - 1].swipes.length - 1) {
return;
}
chat[chat.length - 1]['swipe_id']++; // make new slot in array
}
if (chat[chat.length - 1].extra) {
@@ -9065,7 +9086,7 @@ const swipe_right = () => {
},
});
}
};
}
export const CONNECT_API_MAP = {
// Default APIs not contined inside text gen / chat gen

View File

@@ -1143,7 +1143,7 @@ export function initRossMods() {
$('#shadow_select_chat_popup').css('display') === 'none' &&
!isInputElementInFocus()
) {
$('.swipe_left:last').click();
$('.swipe_left:last').trigger('click', { source: 'keyboard', repeated: event.repeat });
return;
}
}
@@ -1156,7 +1156,7 @@ export function initRossMods() {
$('#shadow_select_chat_popup').css('display') === 'none' &&
!isInputElementInFocus()
) {
$('.swipe_right:last').click();
$('.swipe_right:last').trigger('click', { source: 'keyboard', repeated: event.repeat });
return;
}
}