Squish the last bugs
| @@ -20,7 +20,7 @@ function getExtensionActionCallback(action) { | |||
| 20 | return ''; | 20 | return ''; |
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | const reload = isTrueBoolean(args?.reload); | 23 | const reload = !isFalseBoolean(args?.reload); |
| 24 | const internalExtensionName = findExtension(extensionName); | 24 | const internalExtensionName = findExtension(extensionName); |
| 25 | if (!internalExtensionName) { | 25 | if (!internalExtensionName) { |
| 26 | toastr.warning(`Extension ${extensionName} does not exist.`); | 26 | toastr.warning(`Extension ${extensionName} does not exist.`); |
| @@ -43,7 +43,14 @@ function getExtensionActionCallback(action) { | |||
| 43 | action = isEnabled ? 'disable' : 'enable'; | 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 | if (action === 'enable') { | 55 | if (action === 'enable') { |
| 49 | await enableExtension(internalExtensionName, reload); | 56 | await enableExtension(internalExtensionName, reload); |
| @@ -53,6 +60,12 @@ function getExtensionActionCallback(action) { | |||
| 53 | 60 | ||
| 54 | toastr.success(`Extension ${extensionName} ${action}d.`); | 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 | return internalExtensionName; | 69 | return internalExtensionName; |
| 57 | }; | 70 | }; |
| 58 | } | 71 | } |
| @@ -88,6 +101,7 @@ export function registerExtensionSlashCommands() { | |||
| 88 | SlashCommandParser.addCommandObject(SlashCommand.fromProps({ | 101 | SlashCommandParser.addCommandObject(SlashCommand.fromProps({ |
| 89 | name: 'extension-enable', | 102 | name: 'extension-enable', |
| 90 | callback: getExtensionActionCallback('enable'), | 103 | callback: getExtensionActionCallback('enable'), |
| 104 | returns: 'The internal extension name', | ||
| 91 | namedArgumentList: [ | 105 | namedArgumentList: [ |
| 92 | SlashCommandNamedArgument.fromProps({ | 106 | SlashCommandNamedArgument.fromProps({ |
| 93 | name: 'reload', | 107 | name: 'reload', |
| @@ -127,7 +141,8 @@ export function registerExtensionSlashCommands() { | |||
| 127 | })); | 141 | })); |
| 128 | SlashCommandParser.addCommandObject(SlashCommand.fromProps({ | 142 | SlashCommandParser.addCommandObject(SlashCommand.fromProps({ |
| 129 | name: 'extension-disable', | 143 | name: 'extension-disable', |
| 130 | callback: getExtensionActionCallback('enable'), | 144 | callback: getExtensionActionCallback('disable'), |
| 145 | returns: 'The internal extension name', | ||
| 131 | namedArgumentList: [ | 146 | namedArgumentList: [ |
| 132 | SlashCommandNamedArgument.fromProps({ | 147 | SlashCommandNamedArgument.fromProps({ |
| 133 | name: 'reload', | 148 | name: 'reload', |
| @@ -177,6 +192,7 @@ export function registerExtensionSlashCommands() { | |||
| 177 | 192 | ||
| 178 | return await getExtensionActionCallback(action)(args, extensionName); | 193 | return await getExtensionActionCallback(action)(args, extensionName); |
| 179 | }, | 194 | }, |
| 195 | returns: 'The internal extension name', | ||
| 180 | namedArgumentList: [ | 196 | namedArgumentList: [ |
| 181 | SlashCommandNamedArgument.fromProps({ | 197 | SlashCommandNamedArgument.fromProps({ |
| 182 | name: 'reload', | 198 | name: 'reload', |
| @@ -236,6 +252,7 @@ export function registerExtensionSlashCommands() { | |||
| 236 | const isEnabled = !extension_settings.disabledExtensions.includes(internalExtensionName); | 252 | const isEnabled = !extension_settings.disabledExtensions.includes(internalExtensionName); |
| 237 | return String(isEnabled); | 253 | return String(isEnabled); |
| 238 | }, | 254 | }, |
| 255 | returns: '<code>true</code>/<code>false</code> - The state of the extension, whether it is enabled.', | ||
| 239 | unnamedArgumentList: [ | 256 | unnamedArgumentList: [ |
| 240 | SlashCommandArgument.fromProps({ | 257 | SlashCommandArgument.fromProps({ |
| 241 | description: 'Extension name', | 258 | description: 'Extension name', |
| @@ -267,6 +284,7 @@ export function registerExtensionSlashCommands() { | |||
| 267 | const exists = findExtension(extensionName) !== undefined; | 284 | const exists = findExtension(extensionName) !== undefined; |
| 268 | return exists ? 'true' : 'false'; | 285 | return exists ? 'true' : 'false'; |
| 269 | }, | 286 | }, |
| 287 | returns: '<code>true</code>/<code>false</code> - Whether the extension exists and is installed.', | ||
| 270 | unnamedArgumentList: [ | 288 | unnamedArgumentList: [ |
| 271 | SlashCommandArgument.fromProps({ | 289 | SlashCommandArgument.fromProps({ |
| 272 | description: 'Extension name', | 290 | description: 'Extension name', |