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 EmberObject from "@ember/object";
|
||||||
import { ajax } from "discourse/lib/ajax";
|
import { ajax } from "discourse/lib/ajax";
|
||||||
import Topic from "discourse/models/topic";
|
import Topic from "discourse/models/topic";
|
||||||
|
import User from "discourse/models/user";
|
||||||
import { getDocs } from "../../lib/get-docs";
|
import { getDocs } from "../../lib/get-docs";
|
||||||
|
|
||||||
const Docs = EmberObject.extend({});
|
const Docs = EmberObject.extend({});
|
||||||
|
@ -41,6 +42,9 @@ Docs.reopenClass({
|
||||||
(topic) => Topic.create(topic)
|
(topic) => Topic.create(topic)
|
||||||
);
|
);
|
||||||
data.topic = Topic.create(data.topic);
|
data.topic = Topic.create(data.topic);
|
||||||
|
data.topic.post_stream?.posts.forEach((post) =>
|
||||||
|
this._initUserModels(post)
|
||||||
|
);
|
||||||
return data;
|
return data;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -53,6 +57,12 @@ Docs.reopenClass({
|
||||||
return data;
|
return data;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_initUserModels(post) {
|
||||||
|
if (post.mentioned_users) {
|
||||||
|
post.mentioned_users = post.mentioned_users.map((u) => User.create(u));
|
||||||
|
}
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default Docs;
|
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