From e407c9472acd60f6cfdb0e0138e7a64d755d3514 Mon Sep 17 00:00:00 2001 From: Clark Winkelmann Date: Sat, 22 Sep 2018 06:55:19 +0200 Subject: [PATCH] Clean composer promises (#1439) * Remove unused login promise code * Make promise usage consistent across composer action methods --- .../core/js/src/forum/components/IndexPage.js | 38 ++++++------------- .../js/src/forum/utils/DiscussionControls.js | 2 + .../core/js/src/forum/utils/PostControls.js | 12 +++++- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/framework/core/js/src/forum/components/IndexPage.js b/framework/core/js/src/forum/components/IndexPage.js index 16648663c..014e486c1 100644 --- a/framework/core/js/src/forum/components/IndexPage.js +++ b/framework/core/js/src/forum/components/IndexPage.js @@ -159,7 +159,7 @@ export default class IndexPage extends Page { icon: 'fas fa-edit', className: 'Button Button--primary IndexPage-newDiscussion', itemClassName: 'App-primaryControl', - onclick: this.newDiscussion.bind(this), + onclick: this.newDiscussionAction.bind(this), disabled: !canStartDiscussion }) ); @@ -339,43 +339,29 @@ export default class IndexPage extends Page { } /** - * Log the user in and then open the composer for a new discussion. + * Open the composer for a new discussion or prompt the user to login. * * @return {Promise} */ - newDiscussion() { + newDiscussionAction() { const deferred = m.deferred(); if (app.session.user) { - this.composeNewDiscussion(deferred); + const component = new DiscussionComposer({ user: app.session.user }); + + app.composer.load(component); + app.composer.show(); + + deferred.resolve(component); } else { - app.modal.show( - new LogInModal({ - onlogin: this.composeNewDiscussion.bind(this, deferred) - }) - ); + deferred.reject(); + + app.modal.show(new LogInModal()); } return deferred.promise; } - /** - * Initialize the composer for a new discussion. - * - * @param {Deferred} deferred - * @return {Promise} - */ - composeNewDiscussion(deferred) { - const component = new DiscussionComposer({user: app.session.user}); - - app.composer.load(component); - app.composer.show(); - - deferred.resolve(component); - - return deferred.promise; - } - /** * Mark all discussions as read. * diff --git a/framework/core/js/src/forum/utils/DiscussionControls.js b/framework/core/js/src/forum/utils/DiscussionControls.js index 75f21a7e8..702782dbd 100644 --- a/framework/core/js/src/forum/utils/DiscussionControls.js +++ b/framework/core/js/src/forum/utils/DiscussionControls.js @@ -171,6 +171,8 @@ export default { deferred.reject(); } } else { + deferred.reject(); + app.modal.show(new LogInModal()); } diff --git a/framework/core/js/src/forum/utils/PostControls.js b/framework/core/js/src/forum/utils/PostControls.js index 574b039bf..4c313dbe8 100644 --- a/framework/core/js/src/forum/utils/PostControls.js +++ b/framework/core/js/src/forum/utils/PostControls.js @@ -111,10 +111,20 @@ export default { /** * Open the composer to edit a post. + * + * @return {Promise} */ editAction() { - app.composer.load(new EditPostComposer({ post: this })); + const deferred = m.deferred(); + + const component = new EditPostComposer({ post: this }); + + app.composer.load(component); app.composer.show(); + + deferred.resolve(component); + + return deferred.promise; }, /**