From 3a5604cb467fef530e2d2af78d90a9b5a1cae99f Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 1 Aug 2018 10:05:46 -0400 Subject: [PATCH] FIX: Apply username formatter to solved post --- .../extend-for-solved-button.js.es6 | 183 ++++++++++-------- 1 file changed, 105 insertions(+), 78 deletions(-) diff --git a/assets/javascripts/discourse/initializers/extend-for-solved-button.js.es6 b/assets/javascripts/discourse/initializers/extend-for-solved-button.js.es6 index e484922..af66e96 100644 --- a/assets/javascripts/discourse/initializers/extend-for-solved-button.js.es6 +++ b/assets/javascripts/discourse/initializers/extend-for-solved-button.js.es6 @@ -1,24 +1,27 @@ -import Topic from 'discourse/models/topic'; -import User from 'discourse/models/user'; -import TopicStatus from 'discourse/raw-views/topic-status'; -import { popupAjaxError } from 'discourse/lib/ajax-error'; -import { withPluginApi } from 'discourse/lib/plugin-api'; -import { ajax } from 'discourse/lib/ajax'; -import PostCooked from 'discourse/widgets/post-cooked'; +import Topic from "discourse/models/topic"; +import User from "discourse/models/user"; +import TopicStatus from "discourse/raw-views/topic-status"; +import { popupAjaxError } from "discourse/lib/ajax-error"; +import { withPluginApi } from "discourse/lib/plugin-api"; +import { ajax } from "discourse/lib/ajax"; +import PostCooked from "discourse/widgets/post-cooked"; +import { formatUsername } from "discourse/lib/utilities"; function clearAccepted(topic) { - const posts = topic.get('postStream.posts'); + const posts = topic.get("postStream.posts"); posts.forEach(post => { - if (post.get('post_number') > 1 ) { - post.set('accepted_answer',false); - post.set('can_accept_answer',true); - post.set('can_unaccept_answer',false); + if (post.get("post_number") > 1) { + post.set("accepted_answer", false); + post.set("can_accept_answer", true); + post.set("can_unaccept_answer", false); } }); } function unacceptPost(post) { - if (!post.get('can_unaccept_answer')) { return; } + if (!post.get("can_unaccept_answer")) { + return; + } const topic = post.topic; post.setProperties({ @@ -26,11 +29,11 @@ function unacceptPost(post) { can_unaccept_answer: false, accepted_answer: false }); - topic.set('accepted_answer', undefined); + topic.set("accepted_answer", undefined); ajax("/solution/unaccept", { - type: 'POST', - data: { id: post.get('id') } + type: "POST", + data: { id: post.get("id") } }).catch(popupAjaxError); } @@ -45,83 +48,96 @@ function acceptPost(post) { accepted_answer: true }); - topic.set('accepted_answer', { - username: post.get('username'), - post_number: post.get('post_number'), - excerpt: post.get('cooked'), + topic.set("accepted_answer", { + username: post.get("username"), + post_number: post.get("post_number"), + excerpt: post.get("cooked") }); ajax("/solution/accept", { - type: 'POST', - data: { id: post.get('id') } + type: "POST", + data: { id: post.get("id") } }).catch(popupAjaxError); } function initializeWithApi(api) { const currentUser = api.getCurrentUser(); - api.includePostAttributes('can_accept_answer', 'can_unaccept_answer', 'accepted_answer'); + api.includePostAttributes( + "can_accept_answer", + "can_unaccept_answer", + "accepted_answer" + ); if (api.addDiscoveryQueryParam) { - api.addDiscoveryQueryParam('solved', {replace: true, refreshModel: true}); + api.addDiscoveryQueryParam("solved", { replace: true, refreshModel: true }); } - api.addPostMenuButton('solved', attrs => { + api.addPostMenuButton("solved", attrs => { const canAccept = attrs.can_accept_answer; const canUnaccept = attrs.can_unaccept_answer; const accepted = attrs.accepted_answer; const isOp = currentUser && currentUser.id === attrs.topicCreatedById; - const position = (!accepted && canAccept && !isOp) ? 'second-last-hidden' : 'first'; + const position = + !accepted && canAccept && !isOp ? "second-last-hidden" : "first"; if (canAccept) { return { - action: 'acceptAnswer', - icon: 'check-square-o', - className: 'unaccepted', - title: 'solved.accept_answer', + action: "acceptAnswer", + icon: "check-square-o", + className: "unaccepted", + title: "solved.accept_answer", position }; } else if (canUnaccept || accepted) { - const title = canUnaccept ? 'solved.unaccept_answer' : 'solved.accepted_answer'; + const title = canUnaccept + ? "solved.unaccept_answer" + : "solved.accepted_answer"; return { - action: 'unacceptAnswer', - icon: 'check-square', + action: "unacceptAnswer", + icon: "check-square", title, - className: 'accepted fade-out', + className: "accepted fade-out", position, beforeButton(h) { - return h('span.accepted-text', I18n.t('solved.solution')); + return h("span.accepted-text", I18n.t("solved.solution")); } }; } }); - api.decorateWidget('post-contents:after-cooked', dec => { + api.decorateWidget("post-contents:after-cooked", dec => { if (dec.attrs.post_number === 1) { const postModel = dec.getModel(); if (postModel) { - const topic = postModel.get('topic'); - if (topic.get('accepted_answer')) { - const hasExcerpt = !!topic.get('accepted_answer').excerpt; + const topic = postModel.get("topic"); + if (topic.get("accepted_answer")) { + const hasExcerpt = !!topic.get("accepted_answer").excerpt; const withExcerpt = ` -