Ensure unique suggested sprite names

531999dc04c89c21232d6992619075139eec7249

Wolfsblvt <wolfsblvt@gmail.com>

1 files changed, +20 -2Showing whitespace changes
public/scripts/extensions/expressions/index.js+20 -2
@@ -727,6 +727,21 @@ function spriteFolderNameFromCharacter(char) {
727}727}
728728
729/**729/**
730 * Generates a unique sprite name by appending an index to the given expression. *
731 * @param {string} expression - The base expression to be used as the prefix for the sprite name.
732 * @param {ExpressionImage[]} existingFiles - An array of existing file objects, each containing a fileName property.
733 * @returns {string} - A unique sprite name with the format "expression-index".
734 */
735function generateUniqueSpriteName(expression, existingFiles) {
736 let index = existingFiles.length;
737 let newSpriteName;
738 do {
739 newSpriteName = `${expression}-${index++}`;
740 } while (existingFiles.some(file => withoutExtension(file.fileName) === newSpriteName));
741 return newSpriteName;
742}
743
744/**
730 * Slash command callback for /uploadsprite745 * Slash command callback for /uploadsprite
731 *746 *
732 * label= is required747 * label= is required
@@ -1725,9 +1740,10 @@ async function onClickExpressionUpload(event) {
17251740
1726 const message = await renderExtensionTemplateAsync(MODULE_NAME, 'templates/upload-expression', { expression, clickedFileName });1741 const message = await renderExtensionTemplateAsync(MODULE_NAME, 'templates/upload-expression', { expression, clickedFileName });
17271742
1728 spriteName = null;1743 spriteName = generateUniqueSpriteName(expression, existingFiles);
1744
1729 const input = await Popup.show.input(t`Upload Expression Sprite`, message,1745 const input = await Popup.show.input(t`Upload Expression Sprite`, message,
1730 `${expression}-${existingFiles.length}`, { customButtons: customButtons });1746 spriteName, { customButtons: customButtons });
17311747
1732 if (input) {1748 if (input) {
1733 if (!validateExpressionSpriteName(expression, input)) {1749 if (!validateExpressionSpriteName(expression, input)) {
@@ -1735,6 +1751,8 @@ async function onClickExpressionUpload(event) {
1735 return;1751 return;
1736 }1752 }
1737 spriteName = input;1753 spriteName = input;
1754 } else {
1755 spriteName = null;
1738 }1756 }
1739 }1757 }
1740 } else {1758 } else {