FEATURE: Make user status on mentions on docs live (#117)
This makes status on mentions in docs receive live updates from the server.
This commit is contained in:
parent
f4c8e72293
commit
a5823e3a05
|
@ -1,6 +1,7 @@
|
|||
import EmberObject from "@ember/object";
|
||||
import { ajax } from "discourse/lib/ajax";
|
||||
import Topic from "discourse/models/topic";
|
||||
import User from "discourse/models/user";
|
||||
import { getDocs } from "../../lib/get-docs";
|
||||
|
||||
const Docs = EmberObject.extend({});
|
||||
|
@ -41,6 +42,9 @@ Docs.reopenClass({
|
|||
(topic) => Topic.create(topic)
|
||||
);
|
||||
data.topic = Topic.create(data.topic);
|
||||
data.topic.post_stream?.posts.forEach((post) =>
|
||||
this._initUserModels(post)
|
||||
);
|
||||
return data;
|
||||
});
|
||||
},
|
||||
|
@ -53,6 +57,12 @@ Docs.reopenClass({
|
|||
return data;
|
||||
});
|
||||
},
|
||||
|
||||
_initUserModels(post) {
|
||||
if (post.mentioned_users) {
|
||||
post.mentioned_users = post.mentioned_users.map((u) => User.create(u));
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export default Docs;
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
import {
|
||||
acceptance,
|
||||
publishToMessageBus,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { test } from "qunit";
|
||||
import docsFixtures from "../fixtures/docs";
|
||||
import { visit } from "@ember/test-helpers";
|
||||
|
||||
acceptance("Docs - user status", function (needs) {
|
||||
needs.user();
|
||||
needs.site({ docs_path: "docs" });
|
||||
needs.settings({
|
||||
docs_enabled: true,
|
||||
});
|
||||
|
||||
const mentionedUserId = 1;
|
||||
|
||||
needs.pretender((server, helper) => {
|
||||
server.get("/docs.json", () => {
|
||||
docsFixtures.topic = {
|
||||
post_stream: {
|
||||
posts: [
|
||||
{
|
||||
id: 427,
|
||||
topic_id: 1,
|
||||
username: "admin1",
|
||||
cooked:
|
||||
'<p>This is a document.</p>\n<p>I am mentioning another user <a class="mention" href="/u/andrei4">@andrei4</a></p>',
|
||||
mentioned_users: [
|
||||
{
|
||||
id: mentionedUserId,
|
||||
username: "andrei4",
|
||||
name: "andrei",
|
||||
avatar_template:
|
||||
"/letter_avatar_proxy/v4/letter/a/a87d85/{size}.png",
|
||||
assign_icon: "user-plus",
|
||||
assign_path: "/u/andrei4/activity/assigned",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
stream: [427],
|
||||
},
|
||||
};
|
||||
|
||||
return helper.response(docsFixtures);
|
||||
});
|
||||
});
|
||||
|
||||
test("user status on mentions is live", async function (assert) {
|
||||
await visit("/docs?topic=1");
|
||||
assert.dom(".mention .user-status").doesNotExist();
|
||||
|
||||
const newStatus = { emoji: "surfing_man", description: "surfing" };
|
||||
await publishToMessageBus(`/user-status`, { [mentionedUserId]: newStatus });
|
||||
assert
|
||||
.dom(".mention .user-status")
|
||||
.hasAttribute("title", newStatus.description);
|
||||
|
||||
await publishToMessageBus(`/user-status`, { [mentionedUserId]: null });
|
||||
assert.dom(".mention .user-status").doesNotExist();
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue