diff --git a/framework/core/js/forum/src/components/composer-discussion.js b/framework/core/js/forum/src/components/composer-discussion.js index f6f31d0d5..5186406d4 100644 --- a/framework/core/js/forum/src/components/composer-discussion.js +++ b/framework/core/js/forum/src/components/composer-discussion.js @@ -50,14 +50,18 @@ export default class ComposerDiscussion extends ComposerBody { return (this.title() || this.content()) && !confirm(this.props.confirmExit); } - onsubmit(content) { + data() { + return { + title: this.title(), + content: this.content() + }; + } + + onsubmit() { this.loading(true); m.redraw(); - var data = { - title: this.title(), - content: content - }; + var data = this.data(); app.store.createRecord('discussions').save(data).then(discussion => { app.composer.hide(); diff --git a/framework/core/src/Core/Commands/StartDiscussionCommand.php b/framework/core/src/Core/Commands/StartDiscussionCommand.php index 6d4e32b13..f5f0d8afe 100644 --- a/framework/core/src/Core/Commands/StartDiscussionCommand.php +++ b/framework/core/src/Core/Commands/StartDiscussionCommand.php @@ -2,19 +2,16 @@ class StartDiscussionCommand { - public $title; - - public $content; - public $user; public $forum; - public function __construct($title, $content, $user, $forum) + public $data; + + public function __construct($user, $forum, $data) { - $this->title = $title; - $this->content = $content; $this->user = $user; $this->forum = $forum; + $this->data = $data; } } diff --git a/framework/core/src/Core/Handlers/Commands/StartDiscussionCommandHandler.php b/framework/core/src/Core/Handlers/Commands/StartDiscussionCommandHandler.php index 810df4cc7..262e33137 100644 --- a/framework/core/src/Core/Handlers/Commands/StartDiscussionCommandHandler.php +++ b/framework/core/src/Core/Handlers/Commands/StartDiscussionCommandHandler.php @@ -26,7 +26,7 @@ class StartDiscussionCommandHandler // an opportunity to alter the discussion entity based on data in the // command they may have passed through in the controller. $discussion = Discussion::start( - $command->title, + array_get($command->data, 'title'), $command->user ); @@ -41,13 +41,9 @@ class StartDiscussionCommandHandler // will trigger a domain event that is slightly semantically incorrect // in this situation (PostWasPosted), we may need to reconsider someday. $post = $this->bus->dispatch( - new PostReplyCommand($discussion->id, $command->content, $command->user) + new PostReplyCommand($discussion->id, array_get($command->data, 'content'), $command->user) ); - // The discussion may have been updated by the PostReplyCommand; we need - // to refresh its data. - $discussion = $post->discussion; - - return $discussion; + return $post->discussion; } }