FIX: Make select all and below skip small actions. (#7425)

This commit is contained in:
Dan Ungureanu 2019-05-06 16:22:11 +03:00 committed by GitHub
parent a40dcbde9b
commit 33e06dd796
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 5 deletions

View File

@ -173,11 +173,32 @@ export default Ember.Controller.extend(bufferedProperty("model"), {
},
_updateSelectedPostIds(postIds) {
this.get("selectedPostIds").pushObjects(postIds);
const smallActionsPostIds = this._smallActionPostIds();
this.get("selectedPostIds").pushObjects(
postIds.filter(postId => !smallActionsPostIds.has(postId))
);
this.set("selectedPostIds", [...new Set(this.get("selectedPostIds"))]);
this._forceRefreshPostStream();
},
_smallActionPostIds() {
const smallActionsPostIds = new Set();
const posts = this.get("model.postStream.posts");
if (posts) {
const small_action = this.site.get("post_types.small_action");
const whisper = this.site.get("post_types.whisper");
posts.forEach(post => {
if (
post.post_type === small_action ||
(!post.cooked && post.post_type === whisper)
) {
smallActionsPostIds.add(post.id);
}
});
}
return smallActionsPostIds;
},
_loadPostIds(post) {
if (this.get("loadingPostIds")) return;
@ -664,7 +685,12 @@ export default Ember.Controller.extend(bufferedProperty("model"), {
},
selectAll() {
this.set("selectedPostIds", [...this.get("model.postStream.stream")]);
const smallActionsPostIds = this._smallActionPostIds();
this.set("selectedPostIds", [
...this.get("model.postStream.stream").filter(
postId => !smallActionsPostIds.has(postId)
)
]);
this._forceRefreshPostStream();
},

View File

@ -467,10 +467,22 @@ QUnit.test("togglePostSelection", function(assert) {
// });
QUnit.test("selectBelow", function(assert) {
const postStream = { stream: [1, 2, 3, 4, 5] };
const site = Ember.Object.create({
post_types: { small_action: 3, whisper: 4 }
});
const postStream = {
stream: [1, 2, 3, 4, 5, 6, 7, 8],
posts: [
{ id: 5, cooked: "whisper post", post_type: 4 },
{ id: 6, cooked: "a small action", post_type: 3 },
{ id: 7, cooked: "", post_type: 4 }
]
};
const model = Topic.create({ postStream });
const controller = this.subject({ model });
const selectedPostIds = controller.get("selectedPostIds");
const controller = this.subject({ site, model });
let selectedPostIds = controller.get("selectedPostIds");
assert.equal(selectedPostIds[0], undefined, "no posts selected by default");
@ -479,6 +491,7 @@ QUnit.test("selectBelow", function(assert) {
assert.equal(selectedPostIds[0], 3, "selected post #3");
assert.equal(selectedPostIds[1], 4, "also selected 1st post below post #3");
assert.equal(selectedPostIds[2], 5, "also selected 2nd post below post #3");
assert.equal(selectedPostIds[3], 8, "also selected 3rd post below post #3");
});
QUnit.test("topVisibleChanged", function(assert) {