From ff21651d649a031dbdbcf22b98e9714e98bd4dc1 Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Tue, 8 Nov 2022 10:16:05 +1100 Subject: [PATCH] FIX: topic tracking stage error when no tags (#18901) When topic Tag is tracked and payload doesn't contain tags, it was throwing an error. --- .../discourse/app/models/topic-tracking-state.js | 2 +- .../tests/unit/models/topic-tracking-state-test.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) 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) {