PERF: Use already loaded post when quoting or opening draft.

This commit is contained in:
Bianca Nenciu 2019-06-10 14:23:17 +03:00 committed by Guo Xiang Tan
parent 7b17eb06da
commit 9168ffc201

View File

@ -254,47 +254,51 @@ export default Ember.Controller.extend(bufferedProperty("model"), {
}, },
selectText(postId, buffer) { selectText(postId, buffer) {
return this.get("model.postStream") const loadedPost = this.get("model.postStream").findLoadedPost(postId);
.loadPost(postId) const promise = loadedPost
.then(post => { ? Ember.RSVP.resolve(loadedPost)
const composer = this.composer; : this.get("model.postStream").loadPost(postId);
const viewOpen = composer.get("model.viewOpen");
const quotedText = Quote.build(post, buffer);
// If we can't create a post, delegate to reply as new topic return promise.then(post => {
if (!viewOpen && !this.get("model.details.can_create_post")) { const composer = this.composer;
this.send("replyAsNewTopic", post, quotedText); const viewOpen = composer.get("model.viewOpen");
return; const quotedText = Quote.build(post, buffer);
}
const composerOpts = { // If we can't create a post, delegate to reply as new topic
action: Composer.REPLY, if (!viewOpen && !this.get("model.details.can_create_post")) {
draftKey: post.get("topic.draft_key") this.send("replyAsNewTopic", post, quotedText);
}; return;
}
if (post.get("post_number") === 1) { const composerOpts = {
composerOpts.topic = post.get("topic"); action: Composer.REPLY,
} else { draftSequence: post.get("topic.draft_sequence"),
composerOpts.post = post; draftKey: post.get("topic.draft_key")
} };
// If the composer is associated with a different post, we don't change it. if (post.get("post_number") === 1) {
const composerPost = composer.get("model.post"); composerOpts.topic = post.get("topic");
if (composerPost && composerPost.get("id") !== this.get("post.id")) { } else {
composerOpts.post = composerPost; composerOpts.post = post;
} }
composerOpts.quote = quotedText; // If the composer is associated with a different post, we don't change it.
if (composer.get("model.viewOpen")) { const composerPost = composer.get("model.post");
this.appEvents.trigger("composer:insert-block", quotedText); if (composerPost && composerPost.get("id") !== this.get("post.id")) {
} else if (composer.get("model.viewDraft")) { composerOpts.post = composerPost;
const model = composer.get("model"); }
model.set("reply", model.get("reply") + quotedText);
composer.send("openIfDraft"); composerOpts.quote = quotedText;
} else { if (composer.get("model.viewOpen")) {
composer.open(composerOpts); this.appEvents.trigger("composer:insert-block", quotedText);
} } else if (composer.get("model.viewDraft")) {
}); const model = composer.get("model");
model.set("reply", model.get("reply") + quotedText);
composer.send("openIfDraft");
} else {
composer.open(composerOpts);
}
});
}, },
fillGapBefore(args) { fillGapBefore(args) {