From 97fb65cd9112396bb46ca623a830f0cdc536181a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Joshua=20R=C3=BCsweg?= Date: Tue, 21 Aug 2018 22:27:07 +0200 Subject: [PATCH] Add promises support for MessageInlineEditor See #2743 See #2742 See WoltLab/com.woltlab.wbb#280 --- .../Core/Ui/Message/InlineEditor.js | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/wcfsetup/install/files/js/WoltLabSuite/Core/Ui/Message/InlineEditor.js b/wcfsetup/install/files/js/WoltLabSuite/Core/Ui/Message/InlineEditor.js index bed5ace1c8..12588f8160 100644 --- a/wcfsetup/install/files/js/WoltLabSuite/Core/Ui/Message/InlineEditor.js +++ b/wcfsetup/install/files/js/WoltLabSuite/Core/Ui/Message/InlineEditor.js @@ -494,19 +494,24 @@ define( EventHandler.fire('com.woltlab.wcf.redactor2', 'getText_' + id, parameters.data); - if (!this._validate(parameters)) { - // validation failed - return; - } - - EventHandler.fire('com.woltlab.wcf.redactor2', 'submit_' + id, parameters); + var validateResult = this._validate(parameters); - Ajax.api(this, { - actionName: 'save', - parameters: parameters - }); + if (!(validateResult instanceof Promise)) { + validateResult = Promise.resolve(validateResult); + } - this._hideEditor(); + validateResult.then(function (result) { + if (!result) return; + + EventHandler.fire('com.woltlab.wcf.redactor2', 'submit_' + id, parameters); + + Ajax.api(this, { + actionName: 'save', + parameters: parameters + }); + + this._hideEditor(); + }.bind(this)); }, /** @@ -523,11 +528,16 @@ define( var data = { api: this, parameters: parameters, - valid: true + valid: true, + promise: null }; EventHandler.fire('com.woltlab.wcf.redactor2', 'validate_' + this._getEditorId(), data); + if (data.valid !== false && data.promise !== null) { + return data.promise; + } + return (data.valid !== false); }, -- 2.20.1