Squish the last bugs
| @@ -20,7 +20,7 @@ function getExtensionActionCallback(action) { | ||
| 20 | 20 | return ''; |
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | const reload = isTrueBoolean!isFalseBoolean(args?.reload); |
| 24 | 24 | const internalExtensionName = findExtension(extensionName); |
| 25 | 25 | if (!internalExtensionName) { |
| 26 | 26 | toastr.warning(`Extension ${extensionName} does not exist.`); |
| @@ -43,7 +43,14 @@ function getExtensionActionCallback(action) { | ||
| 43 | 43 | action = isEnabled ? 'disable' : 'enable'; |
| 44 | 44 | } |
| 45 | 45 | |
| 46 | - reload && toastr.info(`${action.charAt(0).toUpperCase() + action.slice(1)}ing extension ${extensionName} and reloading...`); | |
| 46 | + if (reload) { | |
| 47 | + toastr.info(`${action.charAt(0).toUpperCase() + action.slice(1)}ing extension ${extensionName} and reloading...`); | |
| 48 | + | |
| 49 | + // Clear input, so it doesn't stay because the command didn't "finish", | |
| 50 | + // and wait for a bit to both show the toast and let the clear bubble through. | |
| 51 | + $('#send_textarea').val('')[0].dispatchEvent(new Event('input', { bubbles: true })); | |
| 52 | + await new Promise(resolve => setTimeout(resolve, 100)); | |
| 53 | + } | |
| 47 | 54 | |
| 48 | 55 | if (action === 'enable') { |
| 49 | 56 | await enableExtension(internalExtensionName, reload); |
| @@ -53,6 +60,12 @@ function getExtensionActionCallback(action) { | ||
| 53 | 60 | |
| 54 | 61 | toastr.success(`Extension ${extensionName} ${action}d.`); |
| 55 | 62 | |
| 63 | + | |
| 64 | + console.info(`Extension ${action}ed: ${extensionName}`); | |
| 65 | + if (!reload) { | |
| 66 | + console.info('Reload not requested, so page needs to be reloaded manually for changes to take effect.'); | |
| 67 | + } | |
| 68 | + | |
| 56 | 69 | return internalExtensionName; |
| 57 | 70 | }; |
| 58 | 71 | } |
| @@ -88,6 +101,7 @@ export function registerExtensionSlashCommands() { | ||
| 88 | 101 | SlashCommandParser.addCommandObject(SlashCommand.fromProps({ |
| 89 | 102 | name: 'extension-enable', |
| 90 | 103 | callback: getExtensionActionCallback('enable'), |
| 104 | + returns: 'The internal extension name', | |
| 91 | 105 | namedArgumentList: [ |
| 92 | 106 | SlashCommandNamedArgument.fromProps({ |
| 93 | 107 | name: 'reload', |
| @@ -127,7 +141,8 @@ export function registerExtensionSlashCommands() { | ||
| 127 | 141 | })); |
| 128 | 142 | SlashCommandParser.addCommandObject(SlashCommand.fromProps({ |
| 129 | 143 | name: 'extension-disable', |
| 130 | 144 | callback: getExtensionActionCallback('enabledisable'), |
| 145 | + returns: 'The internal extension name', | |
| 131 | 146 | namedArgumentList: [ |
| 132 | 147 | SlashCommandNamedArgument.fromProps({ |
| 133 | 148 | name: 'reload', |
| @@ -177,6 +192,7 @@ export function registerExtensionSlashCommands() { | ||
| 177 | 192 | |
| 178 | 193 | return await getExtensionActionCallback(action)(args, extensionName); |
| 179 | 194 | }, |
| 195 | + returns: 'The internal extension name', | |
| 180 | 196 | namedArgumentList: [ |
| 181 | 197 | SlashCommandNamedArgument.fromProps({ |
| 182 | 198 | name: 'reload', |
| @@ -236,6 +252,7 @@ export function registerExtensionSlashCommands() { | ||
| 236 | 252 | const isEnabled = !extension_settings.disabledExtensions.includes(internalExtensionName); |
| 237 | 253 | return String(isEnabled); |
| 238 | 254 | }, |
| 255 | + returns: '<code>true</code>/<code>false</code> - The state of the extension, whether it is enabled.', | |
| 239 | 256 | unnamedArgumentList: [ |
| 240 | 257 | SlashCommandArgument.fromProps({ |
| 241 | 258 | description: 'Extension name', |
| @@ -267,6 +284,7 @@ export function registerExtensionSlashCommands() { | ||
| 267 | 284 | const exists = findExtension(extensionName) !== undefined; |
| 268 | 285 | return exists ? 'true' : 'false'; |
| 269 | 286 | }, |
| 287 | + returns: '<code>true</code>/<code>false</code> - Whether the extension exists and is installed.', | |
| 270 | 288 | unnamedArgumentList: [ |
| 271 | 289 | SlashCommandArgument.fromProps({ |
| 272 | 290 | description: 'Extension name', |