FIX: Don't try to create an empty tag when updating a topic (#8481)

Fixes an issue where updates to the first post in a topic would be visible only for staff.

Before, because the empty tag would find its way to `PostRevisor`, `TopicsController#update` would create a hidden revision, and later `PostsController#update` would only update that revision.

After this change, `TopicsController` doesn't create a revision at all (unless necessary), so `PostsController` can create it (and correctly decide whether the revision should be hidden or not).
This commit is contained in:
Jarek Radosz 2019-12-09 19:55:08 +01:00 committed by GitHub
parent 34ccd9ecbb
commit b5236591e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 8 deletions

View File

@ -660,8 +660,6 @@ Topic.reopenClass({
},
update(topic, props) {
props = JSON.parse(JSON.stringify(props)) || {};
// We support `category_id` and `categoryId` for compatibility
if (typeof props.categoryId !== "undefined") {
props.category_id = props.categoryId;
@ -673,11 +671,11 @@ Topic.reopenClass({
delete props.category_id;
}
if (props.tags && props.tags.length === 0) {
props.tags = [""];
}
return ajax(topic.get("url"), { type: "PUT", data: props }).then(result => {
return ajax(topic.get("url"), {
type: "PUT",
data: JSON.stringify(props),
contentType: "application/json"
}).then(result => {
// The title can be cleaned up server side
props.title = result.basic_topic.title;
props.fancy_title = result.basic_topic.fancy_title;

View File

@ -397,7 +397,13 @@ export default function() {
this.get("/t/500.json", () => response(502, {}));
this.put("/t/:slug/:id", request => {
const data = parsePostData(request.requestBody);
const isJSON = request.requestHeaders["Content-Type"].includes(
"application/json"
);
const data = isJSON
? JSON.parse(request.requestBody)
: parsePostData(request.requestBody);
return response(200, {
basic_topic: {