recent_topics: Handle mute/unmute update to topic.

* We don't remove topic data when it's muted. We will filter it
before rendering.
This commit is contained in:
Aman Agrawal 2020-05-15 17:57:36 +05:30 committed by Tim Abbott
parent 76b0c6de86
commit 04cdc89681
3 changed files with 24 additions and 0 deletions

View File

@ -207,4 +207,17 @@ run_test('basic assertions', () => {
assert.equal(Array.from(all_topics.keys()).toString(),
'1:topic-7,1:topic-3,1:topic-1,1:topic-6,1:topic-5,1:topic-4,1:topic-2');
verify_topic_data(all_topics, stream1, topic7, id, true, 0, true);
// unmute topic7
rt.update_topic_is_muted(stream1, topic7, false);
all_topics = rt.get();
verify_topic_data(all_topics, stream1, topic7, id, true, 0, false);
// mute topic7
rt.update_topic_is_muted(stream1, topic7, true);
all_topics = rt.get();
verify_topic_data(all_topics, stream1, topic7, id, true, 0, true);
// a topic gets muted which we are not tracking
assert.equal(rt.update_topic_is_muted(stream1, "topic-10", true), false);
});

View File

@ -112,6 +112,7 @@ exports.mute = function (stream_id, topic) {
title_text: i18n.t("Topic muted"),
undo_button_text: i18n.t("Unmute"),
});
recent_topics.update_topic_is_muted(stream_id, topic, true);
};
exports.unmute = function (stream_id, topic) {
@ -124,6 +125,7 @@ exports.unmute = function (stream_id, topic) {
exports.rerender();
exports.persist_unmute(stream_id, topic);
feedback_widget.dismiss();
recent_topics.update_topic_is_muted(stream_id, topic, false);
};
exports.toggle_mute = function (message) {

View File

@ -34,6 +34,15 @@ exports.process_message = function (msg) {
return true;
};
exports.update_topic_is_muted = function (stream_id, topic, is_muted) {
const key = stream_id + ":" + topic;
if (!topics.has(key)) {
return false;
}
const topic_data = topics.get(stream_id + ":" + topic);
topic_data.muted = is_muted;
};
function get_sorted_topics() {
// Sort all recent topics by last message time.
return new Map(Array.from(topics.entries()).sort(function (a, b) {