mirror of
https://github.com/zulip/zulip.git
synced 2025-10-31 20:13:46 +00:00
If you have two browsers open for the same account, muting in one browser will now be reflected in the other browser. This got regressed when changing the approach from collapsing to hiding. The new code should be less brittle, as we encapsulate re-rendering in muting.rerender(). (imported from commit 4e65e265b64513d38f518770453b7436cb92b4ca)
51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
var muting_ui = (function () {
|
|
|
|
var exports = {};
|
|
|
|
function timestamp_ms() {
|
|
return (new Date()).getTime();
|
|
}
|
|
|
|
var last_topic_update = 0;
|
|
|
|
exports.rerender = function () {
|
|
current_msg_list.rerender_after_muting_changes();
|
|
if (current_msg_list !== home_msg_list) {
|
|
home_msg_list.rerender_after_muting_changes();
|
|
}
|
|
};
|
|
|
|
exports.persist_and_rerender = function () {
|
|
// Optimistically rerender our new muting preferences. The back
|
|
// end should eventually save it, and if it doesn't, it's a recoverable
|
|
// error--the user can just mute the topic again, and the topic might
|
|
// die down before the next reload anyway, making the muting moot.
|
|
exports.rerender();
|
|
var data = {
|
|
muted_topics: JSON.stringify(muting.get_muted_topics())
|
|
};
|
|
last_topic_update = timestamp_ms();
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: '/json/set_muted_topics',
|
|
data: data,
|
|
dataType: 'json'
|
|
});
|
|
};
|
|
|
|
exports.handle_updates = function (muted_topics) {
|
|
if (timestamp_ms() < last_topic_update + 1000) {
|
|
// This topic update is either the one that we just rendered, or,
|
|
// much less likely, it's coming from another device and would probably
|
|
// be overwriting this device's preferences with stale data.
|
|
return;
|
|
}
|
|
|
|
muting.set_muted_topics(muted_topics);
|
|
exports.rerender();
|
|
};
|
|
|
|
return exports;
|
|
}());
|
|
|