diff --git a/js/forum/src/components/index-page.js b/js/forum/src/components/index-page.js index 6fc133f9f..5ec57cc5d 100644 --- a/js/forum/src/components/index-page.js +++ b/js/forum/src/components/index-page.js @@ -339,16 +339,30 @@ export default class IndexPage extends Component { /** * Initialize the composer for a new discussion. * - * @todo return a promise - * @return void + * @return {Promise} */ newDiscussion() { + var deferred = m.deferred(); + if (app.session.user()) { - app.composer.load(new DiscussionComposer({ user: app.session.user() })); - app.composer.show(); - return true; + this.composeNewDiscussion(deferred); + } else { + app.modal.show( + new LoginModal({ onlogin: this.composeNewDiscussion.bind(this, deferred) }) + ); } - app.modal.show(new LoginModal({ onlogin: this.newDiscussion.bind(this) })); + + return deferred.promise; + } + + composeNewDiscussion(deferred) { + // @todo check global permissions + var component = new DiscussionComposer({ user: app.session.user() }); + app.composer.load(component); + app.composer.show(); + deferred.resolve(component); + + return deferred.promise; } /**