mirror of https://github.com/zulip/zulip.git
user_topics: Fix live-update bug in the 'SETTINGS / TOPICS' panel.
The change in the visibility_policy or status of a topic from the topic popover, message header bar, or recent conversations is not live-reflected in the 'SETTINGS / TOPICS' panel. This commit fixes the above-mentioned bug by updating the 'handle_topic_updates' function to update the settings panel.
This commit is contained in:
parent
08c952a2a3
commit
352c48f7c6
|
@ -1,6 +1,10 @@
|
|||
import $ from "jquery";
|
||||
|
||||
import * as message_lists from "./message_lists";
|
||||
import * as overlays from "./overlays";
|
||||
import * as popover_menus from "./popover_menus";
|
||||
import * as recent_topics_ui from "./recent_topics_ui";
|
||||
import * as settings_user_topics from "./settings_user_topics";
|
||||
import * as stream_list from "./stream_list";
|
||||
import * as sub_store from "./sub_store";
|
||||
import * as unread_ui from "./unread_ui";
|
||||
|
@ -21,6 +25,29 @@ export function handle_topic_updates(user_topic_event) {
|
|||
user_topic_event.stream_id,
|
||||
user_topic_event.topic_name,
|
||||
);
|
||||
|
||||
if (overlays.settings_open() && settings_user_topics.loaded) {
|
||||
const stream_id = user_topic_event.stream_id;
|
||||
const topic_name = user_topic_event.topic_name;
|
||||
const visibility_policy = user_topic_event.visibility_policy;
|
||||
|
||||
// Find the row with the specified stream_id and topic_name
|
||||
const $row = $('tr[data-stream-id="' + stream_id + '"][data-topic="' + topic_name + '"]');
|
||||
|
||||
if ($row.length) {
|
||||
// If the row exists, update the status only.
|
||||
// We don't call 'populate_list' in this case as it re-creates the panel (re-sorts by date updated +
|
||||
// removes topics with status set to 'Default for stream'), making it hard to review the changes
|
||||
// and undo if needed.
|
||||
const $status = $row.find("select.settings_user_topic_visibility_policy");
|
||||
$status.val(visibility_policy);
|
||||
} else {
|
||||
// If the row doesn't exist, the user must have set the visibility policy
|
||||
// via another tab. We call 'populate_list' to re-create the panel, hence
|
||||
// including the new row.
|
||||
settings_user_topics.populate_list();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function toggle_topic_visibility_policy(message) {
|
||||
|
|
Loading…
Reference in New Issue