mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Ensure unique suggested sprite names
This commit is contained in:
@ -726,6 +726,21 @@ function spriteFolderNameFromCharacter(char) {
|
|||||||
return expressionOverride?.path ? expressionOverride.path : avatarFileName;
|
return expressionOverride?.path ? expressionOverride.path : avatarFileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a unique sprite name by appending an index to the given expression. *
|
||||||
|
* @param {string} expression - The base expression to be used as the prefix for the sprite name.
|
||||||
|
* @param {ExpressionImage[]} existingFiles - An array of existing file objects, each containing a fileName property.
|
||||||
|
* @returns {string} - A unique sprite name with the format "expression-index".
|
||||||
|
*/
|
||||||
|
function generateUniqueSpriteName(expression, existingFiles) {
|
||||||
|
let index = existingFiles.length;
|
||||||
|
let newSpriteName;
|
||||||
|
do {
|
||||||
|
newSpriteName = `${expression}-${index++}`;
|
||||||
|
} while (existingFiles.some(file => withoutExtension(file.fileName) === newSpriteName));
|
||||||
|
return newSpriteName;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Slash command callback for /uploadsprite
|
* Slash command callback for /uploadsprite
|
||||||
*
|
*
|
||||||
@ -1725,9 +1740,10 @@ async function onClickExpressionUpload(event) {
|
|||||||
|
|
||||||
const message = await renderExtensionTemplateAsync(MODULE_NAME, 'templates/upload-expression', { expression, clickedFileName });
|
const message = await renderExtensionTemplateAsync(MODULE_NAME, 'templates/upload-expression', { expression, clickedFileName });
|
||||||
|
|
||||||
spriteName = null;
|
spriteName = generateUniqueSpriteName(expression, existingFiles);
|
||||||
|
|
||||||
const input = await Popup.show.input(t`Upload Expression Sprite`, message,
|
const input = await Popup.show.input(t`Upload Expression Sprite`, message,
|
||||||
`${expression}-${existingFiles.length}`, { customButtons: customButtons });
|
spriteName, { customButtons: customButtons });
|
||||||
|
|
||||||
if (input) {
|
if (input) {
|
||||||
if (!validateExpressionSpriteName(expression, input)) {
|
if (!validateExpressionSpriteName(expression, input)) {
|
||||||
@ -1735,6 +1751,8 @@ async function onClickExpressionUpload(event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
spriteName = input;
|
spriteName = input;
|
||||||
|
} else {
|
||||||
|
spriteName = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user