FEATURE: Make plugin compatible with redesigned user messages (#399)

This commit is contained in:
Alan Guo Xiang Tan 2022-12-07 06:22:14 +08:00 committed by GitHub
parent 889df32cc6
commit feca27b6bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 95 additions and 1 deletions

View File

@ -1,6 +1,8 @@
export default { export default {
resource: "user.userPrivateMessages", resource: "user.userPrivateMessages",
map() { map() {
this.route("assigned"); this.route("assigned", { path: "/assigned" }, function () {
this.route("index", { path: "/" });
});
}, },
}; };

View File

@ -0,0 +1,20 @@
import I18n from "I18n";
import { withPluginApi } from "discourse/lib/plugin-api";
export default {
name: "assign-extend-user-messages",
initialize(container) {
withPluginApi("1.5.0", (api) => {
const currentUser = container.lookup("service:current-user");
if (currentUser?.can_assign && api.addUserMessagesNavigationDropdownRow) {
api.addUserMessagesNavigationDropdownRow(
"userPrivateMessages.assigned",
I18n.t("discourse_assign.assigned"),
"user-plus"
);
}
});
},
};

View File

@ -0,0 +1,10 @@
<UserNav::MessagesSecondaryNav>
<li class="messages-assigned-latest">
<LinkTo @route="userPrivateMessages.assigned.index">
{{d-icon "envelope"}}
<span>{{i18n "categories.latest"}}</span>
</LinkTo>
</li>
</UserNav::MessagesSecondaryNav>
{{outlet}}

View File

@ -0,0 +1,62 @@
import I18n from "I18n";
import {
acceptance,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
import { click, currentURL, visit } from "@ember/test-helpers";
import AssignedTopics from "../fixtures/assigned-topics-fixtures";
import { cloneJSON } from "discourse-common/lib/object";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import { test } from "qunit";
acceptance("User Private Messages | Discourse Assign", function (needs) {
needs.user({
can_assign: true,
});
needs.settings({ assign_enabled: true, assigns_user_url_path: "/" });
needs.pretender((server, helper) => {
const assignments = cloneJSON(
AssignedTopics["/topics/messages-assigned/eviltrout.json"]
);
server.get("/topics/private-messages-assigned/eviltrout.json", () =>
helper.response(assignments)
);
});
test("viewing assigned messages", async function (assert) {
await visit("/u/eviltrout/messages");
await click(".assigned-messages a");
assert.strictEqual(
currentURL(),
"/u/eviltrout/messages/assigned",
"transitioned to the assigned page"
);
});
test("viewing assigned messages when redesigned user page nav has been enabled", async function (assert) {
updateCurrentUser({ redesigned_user_page_nav_enabled: true });
await visit("/u/eviltrout/messages");
const messagesDropdown = selectKit(".user-nav-messages-dropdown");
await messagesDropdown.expand();
await messagesDropdown.selectRowByName(I18n.t("discourse_assign.assigned"));
assert.strictEqual(
currentURL(),
"/u/eviltrout/messages/assigned",
"transitioned to the assigned page"
);
assert.strictEqual(
messagesDropdown.header().name(),
I18n.t("discourse_assign.assigned"),
"assigned messages is selected in the dropdown"
);
});
});