mirror of
				https://github.com/SillyTavern/SillyTavern.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	Implement data clean-up dialog (#4072)
* [wip] Add user data cleanup service * Add clean-up report viewer * Fix review comments * Add function comments * Implement item actions * Fix UI styles * Add placeholder for empty results, update category description view * Add displayEmptyPlaceholder method to show message when results list is empty * Adjust menu buttons row * Delete char-scoped data bank attachments on character deletion * Data Bank: Handle character attachments on rename * Remove line breaks in description strings * Drop the category when the last item is deleted * Skip invalid hashes instead of bailing
This commit is contained in:
		@@ -216,8 +216,37 @@ function cleanUpAttachments() {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Clean up character attachments when a character is deleted.
 | 
			
		||||
 * @param {{character: import('../../char-data.js').v1CharData}} data Event data
 | 
			
		||||
 */
 | 
			
		||||
function cleanUpCharacterAttachments(data) {
 | 
			
		||||
    const avatar = data?.character?.avatar;
 | 
			
		||||
    if (!avatar) return;
 | 
			
		||||
    if (Array.isArray(extension_settings?.character_attachments?.[avatar])) {
 | 
			
		||||
        delete extension_settings.character_attachments[avatar];
 | 
			
		||||
        saveSettingsDebounced();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Handle character rename event to update character attachments.
 | 
			
		||||
 * @param {string} oldAvatar Old avatar name
 | 
			
		||||
 * @param {string} newAvatar New avatar name
 | 
			
		||||
 */
 | 
			
		||||
function handleCharacterRename(oldAvatar, newAvatar) {
 | 
			
		||||
    if (!oldAvatar || !newAvatar) return;
 | 
			
		||||
    if (Array.isArray(extension_settings?.character_attachments?.[oldAvatar])) {
 | 
			
		||||
        extension_settings.character_attachments[newAvatar] = extension_settings.character_attachments[oldAvatar];
 | 
			
		||||
        delete extension_settings.character_attachments[oldAvatar];
 | 
			
		||||
        saveSettingsDebounced();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
jQuery(async () => {
 | 
			
		||||
    eventSource.on(event_types.APP_READY, cleanUpAttachments);
 | 
			
		||||
    eventSource.on(event_types.CHARACTER_DELETED, cleanUpCharacterAttachments);
 | 
			
		||||
    eventSource.on(event_types.CHARACTER_RENAMED, handleCharacterRename);
 | 
			
		||||
    const manageButton = await renderExtensionTemplateAsync('attachments', 'manage-button', {});
 | 
			
		||||
    const attachButton = await renderExtensionTemplateAsync('attachments', 'attach-button', {});
 | 
			
		||||
    $('#data_bank_wand_container').append(manageButton);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user