From 41dfa00d3a2142fe003226f94c17cc35f9dd0cc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Saquetim?= Date: Wed, 26 Mar 2025 21:48:26 -0300 Subject: [PATCH] DEV: Remove the legacy widget post menu code --- .../solved-accept-answer-button.gjs | 22 ++++---- .../solved-unaccept-answer-button.gjs | 23 ++++---- .../initializers/extend-for-solved-button.js | 55 +------------------ .../discourse-solved-post-menu-test.js | 1 - .../discourse-solved-widget-post-menu-test.js | 48 ---------------- 5 files changed, 21 insertions(+), 128 deletions(-) delete mode 100644 test/javascripts/acceptance/discourse-solved-widget-post-menu-test.js diff --git a/assets/javascripts/discourse/components/solved-accept-answer-button.gjs b/assets/javascripts/discourse/components/solved-accept-answer-button.gjs index 6141336..57c0766 100644 --- a/assets/javascripts/discourse/components/solved-accept-answer-button.gjs +++ b/assets/javascripts/discourse/components/solved-accept-answer-button.gjs @@ -19,7 +19,16 @@ export default class SolvedAcceptAnswerButton extends Component { @action acceptAnswer() { - acceptAnswer(this.args.post, this.appEvents, this.currentUser); + const post = this.args.post; + + acceptPost(post, this.currentUser); + + this.appEvents.trigger("discourse-solved:solution-toggled", post); + + post.get("topic.postStream.posts").forEach((p) => { + p.set("topic_accepted_answer", true); + this.appEvents.trigger("post-stream:refresh", { id: p.id }); + }); } } -export function acceptAnswer(post, appEvents, acceptingUser) { - // TODO (glimmer-post-menu): Remove this exported function and move the code into the button action after the widget code is removed - acceptPost(post, acceptingUser); - - appEvents.trigger("discourse-solved:solution-toggled", post); - - post.get("topic.postStream.posts").forEach((p) => { - p.set("topic_accepted_answer", true); - appEvents.trigger("post-stream:refresh", { id: p.id }); - }); -} function acceptPost(post, acceptingUser) { const topic = post.topic; diff --git a/assets/javascripts/discourse/components/solved-unaccept-answer-button.gjs b/assets/javascripts/discourse/components/solved-unaccept-answer-button.gjs index 5f125d5..3c47156 100644 --- a/assets/javascripts/discourse/components/solved-unaccept-answer-button.gjs +++ b/assets/javascripts/discourse/components/solved-unaccept-answer-button.gjs @@ -10,18 +10,6 @@ import { formatUsername } from "discourse/lib/utilities"; import { i18n } from "discourse-i18n"; import DTooltip from "float-kit/components/d-tooltip"; -export function unacceptAnswer(post, appEvents) { - // TODO (glimmer-post-menu): Remove this exported function and move the code into the button action after the widget code is removed - unacceptPost(post); - - appEvents.trigger("discourse-solved:solution-toggled", post); - - post.get("topic.postStream.posts").forEach((p) => { - p.set("topic_accepted_answer", false); - appEvents.trigger("post-stream:refresh", { id: p.id }); - }); -} - function unacceptPost(post) { if (!post.can_unaccept_answer) { return; @@ -48,7 +36,16 @@ export default class SolvedUnacceptAnswerButton extends Component { @action unacceptAnswer() { - unacceptAnswer(this.args.post, this.appEvents); + const post = this.args.post; + + unacceptPost(post); + + this.appEvents.trigger("discourse-solved:solution-toggled", post); + + post.get("topic.postStream.posts").forEach((p) => { + p.set("topic_accepted_answer", false); + this.appEvents.trigger("post-stream:refresh", { id: p.id }); + }); } get solvedBy() { diff --git a/assets/javascripts/discourse/initializers/extend-for-solved-button.js b/assets/javascripts/discourse/initializers/extend-for-solved-button.js index 22fd23b..1825e27 100644 --- a/assets/javascripts/discourse/initializers/extend-for-solved-button.js +++ b/assets/javascripts/discourse/initializers/extend-for-solved-button.js @@ -72,7 +72,7 @@ function initializeWithApi(api) { } function customizePostMenu(api) { - const transformerRegistered = api.registerValueTransformer( + api.registerValueTransformer( "post-menu-buttons", ({ value: dag, @@ -109,59 +109,6 @@ function customizePostMenu(api) { ); } ); - - const silencedKey = - transformerRegistered && "discourse.post-menu-widget-overrides"; - - withSilencedDeprecations(silencedKey, () => customizeWidgetPostMenu(api)); -} - -function customizeWidgetPostMenu(api) { - const currentUser = api.getCurrentUser(); - - api.addPostMenuButton("solved", (attrs) => { - if (attrs.can_accept_answer) { - const isOp = currentUser?.id === attrs.topicCreatedById; - - return { - action: "acceptAnswer", - icon: "far-square-check", - className: "unaccepted", - title: "solved.accept_answer", - label: isOp ? "solved.solution" : null, - position: attrs.topic_accepted_answer ? "second-last-hidden" : "first", - }; - } else if (attrs.accepted_answer) { - if (attrs.can_unaccept_answer) { - return { - action: "unacceptAnswer", - icon: "square-check", - title: "solved.unaccept_answer", - className: "accepted fade-out", - position: "first", - label: "solved.solution", - }; - } else { - return { - className: "hidden", - disabled: "true", - position: "first", - beforeButton(h) { - return h( - "span.accepted-text", - { - title: i18n("solved.accepted_description"), - }, - [ - h("span", iconNode("check")), - h("span.accepted-label", i18n("solved.solution")), - ] - ); - }, - }; - } - } - }); } export default { diff --git a/test/javascripts/acceptance/discourse-solved-post-menu-test.js b/test/javascripts/acceptance/discourse-solved-post-menu-test.js index a8c7be9..8b3c24c 100644 --- a/test/javascripts/acceptance/discourse-solved-post-menu-test.js +++ b/test/javascripts/acceptance/discourse-solved-post-menu-test.js @@ -10,7 +10,6 @@ acceptance( needs.user({ admin: true }); needs.settings({ - glimmer_post_menu_mode: "enabled", solved_enabled: true, allow_solved_on_all_topics: true, }); diff --git a/test/javascripts/acceptance/discourse-solved-widget-post-menu-test.js b/test/javascripts/acceptance/discourse-solved-widget-post-menu-test.js deleted file mode 100644 index 2733541..0000000 --- a/test/javascripts/acceptance/discourse-solved-widget-post-menu-test.js +++ /dev/null @@ -1,48 +0,0 @@ -import { click, visit } from "@ember/test-helpers"; -import { test } from "qunit"; -import { acceptance } from "discourse/tests/helpers/qunit-helpers"; -import { i18n } from "discourse-i18n"; -import { postStreamWithAcceptedAnswerExcerpt } from "../helpers/discourse-solved-helpers"; - -acceptance( - "Discourse Solved | Widget Post Menu |Accept and Unaccept", - function (needs) { - needs.user({ admin: true }); - - needs.settings({ - glimmer_post_menu_mode: "disabled", - solved_enabled: true, - allow_solved_on_all_topics: true, - }); - - needs.pretender((server, helper) => { - server.post("/solution/accept", () => helper.response({ success: "OK" })); - server.post("/solution/unaccept", () => - helper.response({ success: "OK" }) - ); - - server.get("/t/12.json", () => - helper.response(postStreamWithAcceptedAnswerExcerpt(null)) - ); - }); - - test("accepting and unaccepting a post works", async function (assert) { - await visit("/t/without-excerpt/12"); - - assert - .dom("#post_2 .accepted") - .exists("Unaccept button is visible") - .hasText(i18n("solved.solution"), "Unaccept button has correct text"); - - await click("#post_2 .accepted"); - - assert.dom("#post_2 .unaccepted").exists("Accept button is visible"); - - await click("#post_2 .unaccepted"); - - assert - .dom("#post_2 .accepted") - .exists("Unaccept button is visible again"); - }); - } -);