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 { delay } from "./utils.js"; | ||||
|  | ||||
| export { | ||||
|     loadPowerUserSettings, | ||||
|     loadMovingUIState, | ||||
| @@ -987,12 +989,47 @@ function doRandomChat() { | ||||
|  | ||||
| } | ||||
|  | ||||
| function doDelMode() { | ||||
|     setTimeout(() => { | ||||
|         $("#option_delete_mes").trigger('click') | ||||
|     }, 1); | ||||
| async function doDelMode(_, text) { | ||||
|  | ||||
|     //first enter delmode | ||||
|     $("#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(() => { | ||||
|     // Settings that go to settings.json | ||||
|     $("#collapse-newlines-checkbox").change(function () { | ||||
| @@ -1395,5 +1432,5 @@ $(document).ready(() => { | ||||
|     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('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