From 8e53c2a2c3006a0e0a5fcdf48457ba1cbfdfcf35 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Thu, 28 Jan 2021 20:17:46 +0200 Subject: [PATCH] FIX: Invisible is not the opposite of visible (#11881) If visible is undefined, then invisible should be too. --- .../javascripts/discourse/app/models/topic.js | 8 ++++++-- .../discourse/tests/unit/models/topic-test.js | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/app/models/topic.js b/app/assets/javascripts/discourse/app/models/topic.js index 6de4b88f73e..95b147922a0 100644 --- a/app/assets/javascripts/discourse/app/models/topic.js +++ b/app/assets/javascripts/discourse/app/models/topic.js @@ -1,4 +1,4 @@ -import { and, equal, not, notEmpty, or } from "@ember/object/computed"; +import { and, equal, notEmpty, or } from "@ember/object/computed"; import { fmt, propertyEqual } from "discourse/lib/computed"; import ActionSummary from "discourse/models/action-summary"; import Category from "discourse/models/category"; @@ -210,7 +210,11 @@ const Topic = RestModel.extend({ }); }, - invisible: not("visible"), + @discourseComputed("visible") + invisible(visible) { + return visible !== undefined ? !visible : undefined; + }, + deleted: notEmpty("deleted_at"), @discourseComputed("id") diff --git a/app/assets/javascripts/discourse/tests/unit/models/topic-test.js b/app/assets/javascripts/discourse/tests/unit/models/topic-test.js index cbad413691c..c451f5e1070 100644 --- a/app/assets/javascripts/discourse/tests/unit/models/topic-test.js +++ b/app/assets/javascripts/discourse/tests/unit/models/topic-test.js @@ -163,4 +163,18 @@ discourseModule("Unit | Model | topic", function () { "supports emojis" ); }); + + test("visible & invisible", function (assert) { + const topic = Topic.create(); + assert.equal(topic.visible, undefined); + assert.equal(topic.invisible, undefined); + + const visibleTopic = Topic.create({ visible: true }); + assert.equal(visibleTopic.visible, true); + assert.equal(visibleTopic.invisible, false); + + const invisibleTopic = Topic.create({ visible: false }); + assert.equal(invisibleTopic.visible, false); + assert.equal(invisibleTopic.invisible, true); + }); });