mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Prevent 'no such file or directory' error when mass deleting characters
This commit is contained in:
@ -6,7 +6,7 @@ import {
|
|||||||
deleteCharacter,
|
deleteCharacter,
|
||||||
event_types,
|
event_types,
|
||||||
eventSource,
|
eventSource,
|
||||||
getCharacters,
|
getCharacters, getPastCharacterChats,
|
||||||
getRequestHeaders,
|
getRequestHeaders,
|
||||||
printCharacters,
|
printCharacters,
|
||||||
this_chid,
|
this_chid,
|
||||||
@ -119,31 +119,20 @@ class CharacterContextMenu {
|
|||||||
return fetch('/api/characters/delete', {
|
return fetch('/api/characters/delete', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: getRequestHeaders(),
|
headers: getRequestHeaders(),
|
||||||
body: JSON.stringify({ avatar_url: character.avatar, delete_chats: deleteChats }),
|
body: JSON.stringify({avatar_url: character.avatar, delete_chats: deleteChats}),
|
||||||
cache: 'no-cache',
|
cache: 'no-cache',
|
||||||
}).then(response => {
|
}).then(response => {
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
return deleteCharacter(character.name, character.avatar, false).then(() => {
|
return deleteCharacter(character.name, character.avatar, false).then(() => {
|
||||||
if (deleteChats) {
|
eventSource.emit('characterDeleted', {id: characterId, character: characters[characterId]});
|
||||||
return fetch('/api/characters/chats', {
|
if (deleteChats) getPastCharacterChats(characterId).then(pastChats => {
|
||||||
method: 'POST',
|
for (const chat of pastChats) {
|
||||||
body: JSON.stringify({ avatar_url: character.avatar }),
|
const name = chat.file_name.replace('.jsonl', '');
|
||||||
headers: getRequestHeaders(),
|
eventSource.emit(event_types.CHAT_DELETED, name);
|
||||||
}).then((response) => {
|
}
|
||||||
let data = response.json();
|
});
|
||||||
data = Object.values(data);
|
|
||||||
const pastChats = data.sort((a, b) => a['file_name'].localeCompare(b['file_name'])).reverse();
|
|
||||||
|
|
||||||
for (const chat of pastChats) {
|
|
||||||
const name = chat.file_name.replace('.jsonl', '');
|
|
||||||
eventSource.emit(event_types.CHAT_DELETED, name);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
eventSource.emit('characterDeleted', { id: this_chid, character: characters[this_chid] });
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -473,18 +462,18 @@ class BulkEditOverlay {
|
|||||||
this.isLongPress = true;
|
this.isLongPress = true;
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (this.isLongPress && !cancel) {
|
if (this.isLongPress && !cancel) {
|
||||||
if (this.state === BulkEditOverlayState.browse) {
|
if (this.state === BulkEditOverlayState.browse) {
|
||||||
this.selectState();
|
this.selectState();
|
||||||
} else if (this.state === BulkEditOverlayState.select) {
|
} else if (this.state === BulkEditOverlayState.select) {
|
||||||
this.#contextMenuOpen = true;
|
this.#contextMenuOpen = true;
|
||||||
CharacterContextMenu.show(...this.#getContextMenuPosition(event));
|
CharacterContextMenu.show(...this.#getContextMenuPosition(event));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
this.container.removeEventListener('mouseup', cancelHold);
|
this.container.removeEventListener('mouseup', cancelHold);
|
||||||
this.container.removeEventListener('touchend', cancelHold);
|
this.container.removeEventListener('touchend', cancelHold);
|
||||||
},
|
},
|
||||||
BulkEditOverlay.longPressDelay);
|
BulkEditOverlay.longPressDelay);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -626,12 +615,11 @@ class BulkEditOverlay {
|
|||||||
|
|
||||||
showLoader();
|
showLoader();
|
||||||
toastr.info('We\'re deleting your characters, please wait...', 'Working on it');
|
toastr.info('We\'re deleting your characters, please wait...', 'Working on it');
|
||||||
Promise.all(this.selectedCharacters.map(async characterId => CharacterContextMenu.delete(characterId, deleteChats)))
|
Promise.allSettled(this.selectedCharacters.map(async characterId => CharacterContextMenu.delete(characterId, deleteChats)))
|
||||||
.then(() => getCharacters())
|
.then(() => getCharacters())
|
||||||
.then(() => this.browseState())
|
.then(() => this.browseState())
|
||||||
.finally(() => hideLoader());
|
.finally(() => hideLoader());
|
||||||
},
|
});
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user