Handle invalid post ids in editor route

No issue
-fail fast if an invalid post id is passed into the
 editor route to prevent an unnecessary network request
 for all posts
-if post id is valid but post does not exist, transition
 to Content screen instead of returning an invalid model
This commit is contained in:
Jason Williams 2014-06-09 00:18:39 +00:00
parent 4406d350c4
commit 78a7c389b6

View File

@ -5,16 +5,32 @@ var EditorRoute = AuthenticatedRoute.extend(styleBody, {
classNames: ['editor'],
model: function (params) {
var post = this.store.getById('post', params.post_id);
var self = this,
post,
postId;
postId = Number(params.post_id);
if (!Number.isInteger(postId) || !Number.isFinite(postId) || postId <= 0) {
this.transitionTo('posts.index');
}
post = this.store.getById('post', postId);
if (post) {
return post;
}
return this.store.filter('post', { status: 'all', staticPages: 'all' }, function (post) {
return post.get('id') === params.post_id;
return post.get('id') === postId;
}).then(function (records) {
return records.get('firstObject');
var post = records.get('firstObject');
if (post) {
return post;
}
return self.transitionTo('posts.index');
});
}
});