Fix backwards compatibility of AJAX failure callback
authorTim Düsterhus <duesterhus@woltlab.com>
Thu, 22 Apr 2021 12:39:20 +0000 (14:39 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Thu, 22 Apr 2021 12:39:20 +0000 (14:39 +0200)
Fixes #4088

ts/WoltLabSuite/Core/Ajax/Request.ts
wcfsetup/install/files/js/WoltLabSuite/Core/Ajax/Request.js

index 9a533ba1568e83ad30f92f3a71f80147252b0d4b..928010c51b23b18d236cbd26e42df55fc2cf4ff3 100644 (file)
@@ -278,7 +278,9 @@ class AjaxRequest {
 
     let showError = true;
     if (typeof options.failure === "function") {
-      showError = options.failure(data || {}, xhr.responseText || "", xhr, options.data!);
+      // undefined might be returned by legacy callbacks and must be treated as 'true'.
+      const result = options.failure(data || {}, xhr.responseText || "", xhr, options.data!) as boolean | undefined;
+      showError = result !== false;
     }
 
     if (options.ignoreError !== true && showError) {
index c00e0b67228deb1e0f4283121625c112f33793a6..37da9d0885265cbefccc1c969113f4a6db1a5b40 100644 (file)
@@ -233,7 +233,9 @@ define(["require", "exports", "tslib", "./Status", "../Core", "../Dom/Change/Lis
             }
             let showError = true;
             if (typeof options.failure === "function") {
-                showError = options.failure(data || {}, xhr.responseText || "", xhr, options.data);
+                // undefined might be returned by legacy callbacks and must be treated as 'true'.
+                const result = options.failure(data || {}, xhr.responseText || "", xhr, options.data);
+                showError = result !== false;
             }
             if (options.ignoreError !== true && showError) {
                 const html = this.getErrorHtml(data, xhr);