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