mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
/delmode alias /del + args for N msgs deletion
This commit is contained in:
@@ -27,6 +27,8 @@ import {
|
|||||||
|
|
||||||
import { registerSlashCommand } from "./slash-commands.js";
|
import { registerSlashCommand } from "./slash-commands.js";
|
||||||
|
|
||||||
|
import { delay } from "./utils.js";
|
||||||
|
|
||||||
export {
|
export {
|
||||||
loadPowerUserSettings,
|
loadPowerUserSettings,
|
||||||
loadMovingUIState,
|
loadMovingUIState,
|
||||||
@@ -987,12 +989,47 @@ function doRandomChat() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function doDelMode() {
|
async function doDelMode(_, text) {
|
||||||
setTimeout(() => {
|
|
||||||
$("#option_delete_mes").trigger('click')
|
//first enter delmode
|
||||||
}, 1);
|
$("#option_delete_mes").trigger('click')
|
||||||
|
|
||||||
|
//reject invalid args
|
||||||
|
if (text && isNaN(text)) {
|
||||||
|
toastr.warning('Must enter a number or nothing.')
|
||||||
|
await delay(300) //unsure why 300 is neccessary here, but any shorter and it wont see the delmode UI
|
||||||
|
$("#dialogue_del_mes_cancel").trigger('click');
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//parse valid args
|
||||||
|
if (text) {
|
||||||
|
await delay(300) //same as above, need event signal for 'entered del mode'
|
||||||
|
console.debug('parsing msgs to del')
|
||||||
|
let numMesToDel = Number(text).toFixed(0)
|
||||||
|
let lastMesID = $('.last_mes').attr('mesid')
|
||||||
|
let oldestMesIDToDel = lastMesID - numMesToDel + 1;
|
||||||
|
|
||||||
|
//disallow targeting first message
|
||||||
|
if (oldestMesIDToDel <= 0) {
|
||||||
|
oldestMesIDToDel = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
let oldestMesToDel = $('#chat').find(`.mes[mesid=${oldestMesIDToDel}]`)
|
||||||
|
let oldestDelMesCheckbox = $(oldestMesToDel).find('.del_checkbox');
|
||||||
|
let newLastMesID = oldestMesIDToDel - 1;
|
||||||
|
console.debug(`DelMesReport -- numMesToDel: ${numMesToDel}, lastMesID: ${lastMesID}, oldestMesIDToDel:${oldestMesIDToDel}, newLastMesID: ${newLastMesID}`)
|
||||||
|
oldestDelMesCheckbox.trigger('click');
|
||||||
|
let trueNumberOfDeletedMessage = lastMesID - oldestMesIDToDel + 1
|
||||||
|
|
||||||
|
//await delay(1)
|
||||||
|
$('#dialogue_del_mes_ok').trigger('click');
|
||||||
|
toastr.success(`Deleted ${trueNumberOfDeletedMessage} messages.`)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$(document).ready(() => {
|
$(document).ready(() => {
|
||||||
// Settings that go to settings.json
|
// Settings that go to settings.json
|
||||||
$("#collapse-newlines-checkbox").change(function () {
|
$("#collapse-newlines-checkbox").change(function () {
|
||||||
@@ -1395,5 +1432,5 @@ $(document).ready(() => {
|
|||||||
registerSlashCommand('vn', toggleWaifu, ['vn'], ' – swaps Visual Novel Mode On/Off', false, true);
|
registerSlashCommand('vn', toggleWaifu, ['vn'], ' – swaps Visual Novel Mode On/Off', false, true);
|
||||||
registerSlashCommand('newchat', doNewChat, ['newchat'], ' – start a new chat with current character', true, true);
|
registerSlashCommand('newchat', doNewChat, ['newchat'], ' – start a new chat with current character', true, true);
|
||||||
registerSlashCommand('random', doRandomChat, ['random'], ' – start a new chat with a random character', true, true);
|
registerSlashCommand('random', doRandomChat, ['random'], ' – start a new chat with a random character', true, true);
|
||||||
registerSlashCommand('delmode', doDelMode, ['delmode'], ' – enter message deletion mode', true, true);
|
registerSlashCommand('delmode', doDelMode, ['del'], ' – enter message deletion mode', true, true);
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user