js: Split out muted_users_ui from muting_ui module.

This commit is contained in:
Priyank Patel
2021-07-08 18:28:14 +00:00
committed by Tim Abbott
parent 4cd2fab7b0
commit 05c3164bb8
8 changed files with 86 additions and 75 deletions

View File

@@ -33,6 +33,7 @@ const message_events = mock_esm("../../static/js/message_events");
const message_list = mock_esm("../../static/js/message_list");
const message_lists = mock_esm("../../static/js/message_lists");
const muting_ui = mock_esm("../../static/js/muting_ui");
const muted_users_ui = mock_esm("../../static/js/muted_users_ui");
const night_mode = mock_esm("../../static/js/night_mode");
const notifications = mock_esm("../../static/js/notifications");
const reactions = mock_esm("../../static/js/reactions");
@@ -245,7 +246,7 @@ run_test("muted_users", ({override}) => {
const event = event_fixtures.muted_users;
const stub = make_stub();
override(muting_ui, "handle_user_updates", stub.f);
override(muted_users_ui, "handle_user_updates", stub.f);
dispatch(event);
assert.equal(stub.num_calls, 1);
const args = stub.get_args("muted_users");

View File

@@ -6,7 +6,7 @@ const {mock_esm, zrequire} = require("../zjsunit/namespace");
const {run_test} = require("../zjsunit/test");
const $ = require("../zjsunit/zjquery");
const muting_ui = mock_esm("../../static/js/muting_ui");
const muted_users_ui = mock_esm("../../static/js/muted_users_ui");
const settings_muted_users = zrequire("settings_muted_users");
const muted_users = zrequire("muted_users");
@@ -59,7 +59,7 @@ run_test("settings", ({override}) => {
};
let unmute_user_called = false;
muting_ui.unmute_user = (user_id) => {
muted_users_ui.unmute_user = (user_id) => {
assert.equal(user_id, 5);
unmute_user_called = true;
};

View File

@@ -0,0 +1,74 @@
import $ from "jquery";
import render_confirm_mute_user from "../templates/confirm_dialog/confirm_mute_user.hbs";
import * as activity from "./activity";
import * as channel from "./channel";
import * as confirm_dialog from "./confirm_dialog";
import {$t} from "./i18n";
import * as message_lists from "./message_lists";
import * as muted_users from "./muted_users";
import * as overlays from "./overlays";
import * as people from "./people";
import * as pm_list from "./pm_list";
import * as popovers from "./popovers";
import * as recent_topics_ui from "./recent_topics_ui";
import * as settings_muted_users from "./settings_muted_users";
export function mute_user(user_id) {
channel.post({
url: "/json/users/me/muted_users/" + user_id,
idempotent: true,
});
}
export function confirm_mute_user(user_id) {
function on_click() {
mute_user(user_id);
}
const modal_parent = $(".mute-user-modal-holder");
const html_body = render_confirm_mute_user({
user_name: people.get_full_name(user_id),
});
confirm_dialog.launch({
parent: modal_parent,
html_heading: $t({defaultMessage: "Mute user"}),
help_link: "/help/mute-a-user",
html_body,
html_submit_button: $t({defaultMessage: "Confirm"}),
on_click,
});
}
export function unmute_user(user_id) {
channel.del({
url: "/json/users/me/muted_users/" + user_id,
idempotent: true,
});
}
export function rerender_for_muted_user() {
message_lists.current.update_muting_and_rerender();
if (message_lists.current !== message_lists.home) {
message_lists.home.update_muting_and_rerender();
}
if (overlays.settings_open() && settings_muted_users.loaded) {
settings_muted_users.populate_list();
}
activity.redraw();
pm_list.update_private_messages();
// If a user is (un)muted, we want to update their avatars on the recent topics
// participants column.
recent_topics_ui.complete_rerender();
}
export function handle_user_updates(muted_user_ids) {
popovers.hide_all();
muted_users.set_muted_users(muted_user_ids);
rerender_for_muted_user();
}

View File

@@ -1,24 +1,15 @@
import $ from "jquery";
import _ from "lodash";
import render_confirm_mute_user from "../templates/confirm_dialog/confirm_mute_user.hbs";
import render_topic_muted from "../templates/topic_muted.hbs";
import * as activity from "./activity";
import * as channel from "./channel";
import * as confirm_dialog from "./confirm_dialog";
import * as feedback_widget from "./feedback_widget";
import {$t} from "./i18n";
import * as message_lists from "./message_lists";
import * as muted_topics from "./muted_topics";
import * as muted_users from "./muted_users";
import * as overlays from "./overlays";
import * as people from "./people";
import * as pm_list from "./pm_list";
import * as popovers from "./popovers";
import * as recent_topics_ui from "./recent_topics_ui";
import * as settings_muted_topics from "./settings_muted_topics";
import * as settings_muted_users from "./settings_muted_users";
import * as stream_data from "./stream_data";
import * as stream_list from "./stream_list";
import * as stream_popover from "./stream_popover";
@@ -123,61 +114,3 @@ export function toggle_topic_mute(message) {
mute_topic(stream_id, topic, true);
}
}
export function mute_user(user_id) {
channel.post({
url: "/json/users/me/muted_users/" + user_id,
idempotent: true,
});
}
export function confirm_mute_user(user_id) {
function on_click() {
mute_user(user_id);
}
const modal_parent = $(".mute-user-modal-holder");
const html_body = render_confirm_mute_user({
user_name: people.get_full_name(user_id),
});
confirm_dialog.launch({
parent: modal_parent,
html_heading: $t({defaultMessage: "Mute user"}),
help_link: "/help/mute-a-user",
html_body,
html_submit_button: $t({defaultMessage: "Confirm"}),
on_click,
});
}
export function unmute_user(user_id) {
channel.del({
url: "/json/users/me/muted_users/" + user_id,
idempotent: true,
});
}
export function rerender_for_muted_user() {
message_lists.current.update_muting_and_rerender();
if (message_lists.current !== message_lists.home) {
message_lists.home.update_muting_and_rerender();
}
if (overlays.settings_open() && settings_muted_users.loaded) {
settings_muted_users.populate_list();
}
activity.redraw();
pm_list.update_private_messages();
// If a user is (un)muted, we want to update their avatars on the recent topics
// participants column.
recent_topics_ui.complete_rerender();
}
export function handle_user_updates(muted_user_ids) {
popovers.hide_all();
muted_users.set_muted_users(muted_user_ids);
rerender_for_muted_user();
}

View File

@@ -30,6 +30,7 @@ import * as message_lists from "./message_lists";
import * as message_viewport from "./message_viewport";
import * as muted_topics from "./muted_topics";
import * as muted_users from "./muted_users";
import * as muted_users_ui from "./muted_users_ui";
import * as muting_ui from "./muting_ui";
import * as narrow from "./narrow";
import * as narrow_state from "./narrow_state";
@@ -978,14 +979,14 @@ export function register_click_handlers() {
hide_user_sidebar_popover();
e.stopPropagation();
e.preventDefault();
muting_ui.confirm_mute_user(user_id);
muted_users_ui.confirm_mute_user(user_id);
});
$("body").on("click", ".info_popover_actions .sidebar-popover-unmute-user", (e) => {
const user_id = elem_to_user_id($(e.target).parents("ul"));
hide_message_info_popover();
hide_user_sidebar_popover();
muting_ui.unmute_user(user_id);
muted_users_ui.unmute_user(user_id);
e.stopPropagation();
e.preventDefault();
});

View File

@@ -20,6 +20,7 @@ import * as message_events from "./message_events";
import * as message_flags from "./message_flags";
import * as message_list from "./message_list";
import * as message_lists from "./message_lists";
import * as muted_users_ui from "./muted_users_ui";
import * as muting_ui from "./muting_ui";
import * as narrow_state from "./narrow_state";
import * as navbar_alerts from "./navbar_alerts";
@@ -138,7 +139,7 @@ export function dispatch_normal_event(event) {
break;
case "muted_users":
muting_ui.handle_user_updates(event.muted_users);
muted_users_ui.handle_user_updates(event.muted_users);
break;
case "presence":

View File

@@ -4,7 +4,7 @@ import render_muted_user_ui_row from "../templates/muted_user_ui_row.hbs";
import * as ListWidget from "./list_widget";
import * as muted_users from "./muted_users";
import * as muting_ui from "./muting_ui";
import * as muted_users_ui from "./muted_users_ui";
import * as people from "./people";
import * as ui from "./ui";
@@ -45,7 +45,7 @@ export function set_up() {
const user_id = Number.parseInt($row.attr("data-user-id"), 10);
e.stopPropagation();
muting_ui.unmute_user(user_id);
muted_users_ui.unmute_user(user_id);
});
populate_list();

View File

@@ -95,6 +95,7 @@ EXEMPT_FILES = {
"static/js/message_util.js",
"static/js/message_viewport.js",
"static/js/muting_ui.js",
"static/js/muted_users_ui.js",
"static/js/narrow.js",
"static/js/navigate.js",
"static/js/night_mode.ts",