Add 'setspriteoverride' optional 'name' argument

0dd32775d60d63880dc6adc63c69921ff9bd207d

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +23 -2Ignore whitespace
public/scripts/extensions/expressions/index.js+23 -2
@@ -667,7 +667,14 @@ export async function sendExpressionCall(spriteFolderName, expression, { force =
667667 }
668668}
669669
670-async function setSpriteFolderCommand(_, folder) {
670+/**
671+ * Slash command callback for /setspritefolder
672+ * @param {object} param Command parameters
673+ * @param {string} param.name Character name override
674+ * @param {string} folder Folder path, can be full or partial with leading slash
675+ * @returns {Promise<string>} Empty string
676+ */
677+async function setSpriteFolderCommand({ name }, folder) {
671678 if (!folder) {
672679 console.log('Clearing sprite set');
673680 folder = '';
@@ -675,8 +682,12 @@ async function setSpriteFolderCommand(_, folder) {
675682
676683 if (folder.startsWith('/') || folder.startsWith('\\')) {
677684 const currentLastMessage = getLastCharacterMessage();
685+ if (currentLastMessage.name === null && !name) {
686+ toastr.error('At least one character message is required to set a sprites subfolder.', 'Provide the name with "name=" argument.');
687+ return '';
688+ }
678689 folder = folder.slice(1);
679690 folder = `${name || currentLastMessage.name}/${folder}`;
680691 }
681692
682693 $('#expression_override').val(folder.trim());
@@ -2322,6 +2333,16 @@ function migrateSettings() {
23222333 name: 'expression-folder-override',
23232334 aliases: ['spriteoverride', 'costume'],
23242335 callback: setSpriteFolderCommand,
2336+ namedArgumentList:[
2337+ SlashCommandNamedArgument.fromProps({
2338+ name: 'name',
2339+ description: 'Character name to set a subfolder for. If not provided, the character who last sent a message will be used.',
2340+ typeList: [ARGUMENT_TYPE.STRING],
2341+ enumProvider: commonEnumProviders.characters('character'),
2342+ isRequired: false,
2343+ acceptsMultiple: false,
2344+ }),
2345+ ],
23252346 unnamedArgumentList: [
23262347 new SlashCommandArgument(
23272348 'optional folder', [ARGUMENT_TYPE.STRING], false,