FIX: Dismiss notifications on middle click (#9098)

This commit is contained in:
Bianca Nenciu 2020-03-17 17:48:12 +02:00 committed by GitHub
parent 1b2019e7eb
commit 43b38dbbc2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 65 additions and 0 deletions

View File

@ -13,6 +13,7 @@ import {
import { setTransientHeader } from "discourse/lib/ajax";
import { userPath } from "discourse/lib/url";
import { iconNode } from "discourse-common/lib/icon-library";
import { ajax } from "discourse/lib/ajax";
export const DefaultNotificationItem = createWidget(
"default-notification-item",
@ -154,6 +155,17 @@ export const DefaultNotificationItem = createWidget(
);
}
});
},
mouseUp(event) {
// dismiss notification on middle click
if (event.which === 2 && !this.attrs.read) {
this.attrs.set("read", true);
ajax("/notifications/mark-read", {
method: "PUT",
data: this.attrs.id
});
}
}
}
);

View File

@ -0,0 +1,53 @@
import EmberObject from "@ember/object";
import pretender from "helpers/create-pretender";
import { moduleForWidget, widgetTest } from "helpers/widget-test";
moduleForWidget("default-notification-item");
widgetTest("sets notification as read on middle click", {
template: '{{mount-widget widget="default-notification-item" args=args}}',
beforeEach() {
this.set(
"args",
EmberObject.create({
id: 3,
user_id: 1,
notification_type: 6,
read: false,
created_at: "2020-01-01T12:00:00.000Z",
post_number: 1,
topic_id: 10,
fancy_title: "Greetings!",
slug: "greetings",
data: {
topic_title: "Greetings!",
original_post_id: 14,
original_post_type: 1,
original_username: "discobot",
revision_number: null,
display_username: "discobot"
}
})
);
},
async test(assert) {
let requests = 0;
pretender.put("/notifications/mark-read", () => {
++requests;
return [200, { "Content-Type": "application/json" }, { success: true }];
});
assert.equal(find("li.read").length, 0);
await $(document).trigger(
$.Event("mouseup", {
target: find("li")[0],
button: 1,
which: 2
})
);
assert.equal(find("li.read").length, 1);
assert.equal(requests, 1);
}
});