diff --git a/app/assets/javascripts/discourse/app/models/topic-tracking-state.js b/app/assets/javascripts/discourse/app/models/topic-tracking-state.js index 003710decb9..4fa65a43b59 100644 --- a/app/assets/javascripts/discourse/app/models/topic-tracking-state.js +++ b/app/assets/javascripts/discourse/app/models/topic-tracking-state.js @@ -207,7 +207,7 @@ const TopicTrackingState = EmberObject.extend({ } } - if (filterTag && !data.payload.tags.includes(filterTag)) { + if (filterTag && !data.payload.tags?.includes(filterTag)) { return; } diff --git a/app/assets/javascripts/discourse/tests/unit/models/topic-tracking-state-test.js b/app/assets/javascripts/discourse/tests/unit/models/topic-tracking-state-test.js index 434972596ac..482ea1a0d88 100644 --- a/app/assets/javascripts/discourse/tests/unit/models/topic-tracking-state-test.js +++ b/app/assets/javascripts/discourse/tests/unit/models/topic-tracking-state-test.js @@ -104,6 +104,16 @@ discourseModule("Unit | Model | topic-tracking-state", function (hooks) { 0, "pending tag new counts" ); + + // Ensure it is not throwing an error when filterTag is set and message payload is missing tags + trackingState.trackIncoming("tag/test/l/latest"); + trackingState.notifyIncoming({ + message_type: "new_topic", + topic_id: 4, + payload: { category_id: 2 }, + }); + const testTagCount = trackingState.countTags(["test"]); + assert.strictEqual(testTagCount["test"].unreadCount, 0); }); test("tag counts - with total", function (assert) {