From 52aea58a5253f644c700ea886364c4dc6709dafd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Saquetim?= Date: Tue, 29 Apr 2025 19:59:36 -0300 Subject: [PATCH] Fix the expansion of the accepted answer --- .../components/solved-accepted-answer.gjs | 99 ++++++++++++++++--- assets/stylesheets/solutions.scss | 7 +- 2 files changed, 90 insertions(+), 16 deletions(-) diff --git a/assets/javascripts/discourse/components/solved-accepted-answer.gjs b/assets/javascripts/discourse/components/solved-accepted-answer.gjs index 84961ce..d34a4df 100644 --- a/assets/javascripts/discourse/components/solved-accepted-answer.gjs +++ b/assets/javascripts/discourse/components/solved-accepted-answer.gjs @@ -1,7 +1,14 @@ import Component from "@glimmer/component"; +import { tracked } from "@glimmer/tracking"; +import { on } from "@ember/modifier"; +import { action } from "@ember/object"; import { service } from "@ember/service"; import { htmlSafe } from "@ember/template"; +import AsyncContent from "discourse/components/async-content"; +import PostCookedHtml from "discourse/components/post/cooked-html"; import concatClass from "discourse/helpers/concat-class"; +import icon from "discourse/helpers/d-icon"; +import { ajax } from "discourse/lib/ajax"; import { iconHTML } from "discourse/lib/icon-library"; import { formatUsername } from "discourse/lib/utilities"; import { i18n } from "discourse-i18n"; @@ -10,17 +17,27 @@ export default class SolvedAcceptedAnswer extends Component { @service siteSettings; @service store; + @tracked expanded = false; + + get acceptedAnswer() { + return this.topic.accepted_answer; + } + + get quoteId() { + return `accepted-answer-${this.topic.id}-${this.acceptedAnswer.post_number}`; + } + get topic() { return this.args.post.topic; } get hasExcerpt() { - return !!this.topic.accepted_answer.excerpt; + return !!this.acceptedAnswer.excerpt; } get htmlAccepter() { - const username = this.topic.accepted_answer.accepter_username; - const name = this.topic.accepted_answer.accepter_name; + const username = this.acceptedAnswer.accepter_username; + const name = this.acceptedAnswer.accepter_name; if (!this.siteSettings.show_who_marked_solved) { return; @@ -39,14 +56,10 @@ export default class SolvedAcceptedAnswer extends Component { ); } - get htmlExcerpt() { - return htmlSafe(this.topic.accepted_answer.excerpt); - } - get htmlSolvedBy() { - const username = this.topic.accepted_answer.username; - const name = this.topic.accepted_answer.name; - const postNumber = this.topic.accepted_answer.post_number; + const username = this.acceptedAnswer.username; + const name = this.acceptedAnswer.name; + const postNumber = this.acceptedAnswer.post_number; if (!username || !postNumber) { return; @@ -69,13 +82,39 @@ export default class SolvedAcceptedAnswer extends Component { return htmlSafe(i18n("solved.accepted_html", data)); } + @action + toggleExpandedPost() { + if (!this.hasExcerpt) { + return; + } + + this.expanded = !this.expanded; + } + + @action + async loadExpandedAcceptedAnswer(postNumber) { + const acceptedAnswer = await ajax( + `/posts/by_number/${this.topic.id}/${postNumber}` + ); + + return this.store.createRecord("post", acceptedAnswer); + } +