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); + }); });