mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	js: Split out muted_users_ui from muting_ui module.
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							4cd2fab7b0
						
					
				
				
					commit
					05c3164bb8
				
			@@ -33,6 +33,7 @@ const message_events = mock_esm("../../static/js/message_events");
 | 
				
			|||||||
const message_list = mock_esm("../../static/js/message_list");
 | 
					const message_list = mock_esm("../../static/js/message_list");
 | 
				
			||||||
const message_lists = mock_esm("../../static/js/message_lists");
 | 
					const message_lists = mock_esm("../../static/js/message_lists");
 | 
				
			||||||
const muting_ui = mock_esm("../../static/js/muting_ui");
 | 
					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 night_mode = mock_esm("../../static/js/night_mode");
 | 
				
			||||||
const notifications = mock_esm("../../static/js/notifications");
 | 
					const notifications = mock_esm("../../static/js/notifications");
 | 
				
			||||||
const reactions = mock_esm("../../static/js/reactions");
 | 
					const reactions = mock_esm("../../static/js/reactions");
 | 
				
			||||||
@@ -245,7 +246,7 @@ run_test("muted_users", ({override}) => {
 | 
				
			|||||||
    const event = event_fixtures.muted_users;
 | 
					    const event = event_fixtures.muted_users;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const stub = make_stub();
 | 
					    const stub = make_stub();
 | 
				
			||||||
    override(muting_ui, "handle_user_updates", stub.f);
 | 
					    override(muted_users_ui, "handle_user_updates", stub.f);
 | 
				
			||||||
    dispatch(event);
 | 
					    dispatch(event);
 | 
				
			||||||
    assert.equal(stub.num_calls, 1);
 | 
					    assert.equal(stub.num_calls, 1);
 | 
				
			||||||
    const args = stub.get_args("muted_users");
 | 
					    const args = stub.get_args("muted_users");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ const {mock_esm, zrequire} = require("../zjsunit/namespace");
 | 
				
			|||||||
const {run_test} = require("../zjsunit/test");
 | 
					const {run_test} = require("../zjsunit/test");
 | 
				
			||||||
const $ = require("../zjsunit/zjquery");
 | 
					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 settings_muted_users = zrequire("settings_muted_users");
 | 
				
			||||||
const muted_users = zrequire("muted_users");
 | 
					const muted_users = zrequire("muted_users");
 | 
				
			||||||
@@ -59,7 +59,7 @@ run_test("settings", ({override}) => {
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let unmute_user_called = false;
 | 
					    let unmute_user_called = false;
 | 
				
			||||||
    muting_ui.unmute_user = (user_id) => {
 | 
					    muted_users_ui.unmute_user = (user_id) => {
 | 
				
			||||||
        assert.equal(user_id, 5);
 | 
					        assert.equal(user_id, 5);
 | 
				
			||||||
        unmute_user_called = true;
 | 
					        unmute_user_called = true;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										74
									
								
								static/js/muted_users_ui.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								static/js/muted_users_ui.js
									
									
									
									
									
										Normal 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();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,24 +1,15 @@
 | 
				
			|||||||
import $ from "jquery";
 | 
					 | 
				
			||||||
import _ from "lodash";
 | 
					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 render_topic_muted from "../templates/topic_muted.hbs";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import * as activity from "./activity";
 | 
					 | 
				
			||||||
import * as channel from "./channel";
 | 
					import * as channel from "./channel";
 | 
				
			||||||
import * as confirm_dialog from "./confirm_dialog";
 | 
					 | 
				
			||||||
import * as feedback_widget from "./feedback_widget";
 | 
					import * as feedback_widget from "./feedback_widget";
 | 
				
			||||||
import {$t} from "./i18n";
 | 
					import {$t} from "./i18n";
 | 
				
			||||||
import * as message_lists from "./message_lists";
 | 
					import * as message_lists from "./message_lists";
 | 
				
			||||||
import * as muted_topics from "./muted_topics";
 | 
					import * as muted_topics from "./muted_topics";
 | 
				
			||||||
import * as muted_users from "./muted_users";
 | 
					 | 
				
			||||||
import * as overlays from "./overlays";
 | 
					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 recent_topics_ui from "./recent_topics_ui";
 | 
				
			||||||
import * as settings_muted_topics from "./settings_muted_topics";
 | 
					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_data from "./stream_data";
 | 
				
			||||||
import * as stream_list from "./stream_list";
 | 
					import * as stream_list from "./stream_list";
 | 
				
			||||||
import * as stream_popover from "./stream_popover";
 | 
					import * as stream_popover from "./stream_popover";
 | 
				
			||||||
@@ -123,61 +114,3 @@ export function toggle_topic_mute(message) {
 | 
				
			|||||||
        mute_topic(stream_id, topic, true);
 | 
					        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();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,6 +30,7 @@ import * as message_lists from "./message_lists";
 | 
				
			|||||||
import * as message_viewport from "./message_viewport";
 | 
					import * as message_viewport from "./message_viewport";
 | 
				
			||||||
import * as muted_topics from "./muted_topics";
 | 
					import * as muted_topics from "./muted_topics";
 | 
				
			||||||
import * as muted_users from "./muted_users";
 | 
					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 muting_ui from "./muting_ui";
 | 
				
			||||||
import * as narrow from "./narrow";
 | 
					import * as narrow from "./narrow";
 | 
				
			||||||
import * as narrow_state from "./narrow_state";
 | 
					import * as narrow_state from "./narrow_state";
 | 
				
			||||||
@@ -978,14 +979,14 @@ export function register_click_handlers() {
 | 
				
			|||||||
        hide_user_sidebar_popover();
 | 
					        hide_user_sidebar_popover();
 | 
				
			||||||
        e.stopPropagation();
 | 
					        e.stopPropagation();
 | 
				
			||||||
        e.preventDefault();
 | 
					        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) => {
 | 
					    $("body").on("click", ".info_popover_actions .sidebar-popover-unmute-user", (e) => {
 | 
				
			||||||
        const user_id = elem_to_user_id($(e.target).parents("ul"));
 | 
					        const user_id = elem_to_user_id($(e.target).parents("ul"));
 | 
				
			||||||
        hide_message_info_popover();
 | 
					        hide_message_info_popover();
 | 
				
			||||||
        hide_user_sidebar_popover();
 | 
					        hide_user_sidebar_popover();
 | 
				
			||||||
        muting_ui.unmute_user(user_id);
 | 
					        muted_users_ui.unmute_user(user_id);
 | 
				
			||||||
        e.stopPropagation();
 | 
					        e.stopPropagation();
 | 
				
			||||||
        e.preventDefault();
 | 
					        e.preventDefault();
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import * as message_events from "./message_events";
 | 
				
			|||||||
import * as message_flags from "./message_flags";
 | 
					import * as message_flags from "./message_flags";
 | 
				
			||||||
import * as message_list from "./message_list";
 | 
					import * as message_list from "./message_list";
 | 
				
			||||||
import * as message_lists from "./message_lists";
 | 
					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 muting_ui from "./muting_ui";
 | 
				
			||||||
import * as narrow_state from "./narrow_state";
 | 
					import * as narrow_state from "./narrow_state";
 | 
				
			||||||
import * as navbar_alerts from "./navbar_alerts";
 | 
					import * as navbar_alerts from "./navbar_alerts";
 | 
				
			||||||
@@ -138,7 +139,7 @@ export function dispatch_normal_event(event) {
 | 
				
			|||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        case "muted_users":
 | 
					        case "muted_users":
 | 
				
			||||||
            muting_ui.handle_user_updates(event.muted_users);
 | 
					            muted_users_ui.handle_user_updates(event.muted_users);
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        case "presence":
 | 
					        case "presence":
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 ListWidget from "./list_widget";
 | 
				
			||||||
import * as muted_users from "./muted_users";
 | 
					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 people from "./people";
 | 
				
			||||||
import * as ui from "./ui";
 | 
					import * as ui from "./ui";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -45,7 +45,7 @@ export function set_up() {
 | 
				
			|||||||
        const user_id = Number.parseInt($row.attr("data-user-id"), 10);
 | 
					        const user_id = Number.parseInt($row.attr("data-user-id"), 10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        e.stopPropagation();
 | 
					        e.stopPropagation();
 | 
				
			||||||
        muting_ui.unmute_user(user_id);
 | 
					        muted_users_ui.unmute_user(user_id);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    populate_list();
 | 
					    populate_list();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -95,6 +95,7 @@ EXEMPT_FILES = {
 | 
				
			|||||||
    "static/js/message_util.js",
 | 
					    "static/js/message_util.js",
 | 
				
			||||||
    "static/js/message_viewport.js",
 | 
					    "static/js/message_viewport.js",
 | 
				
			||||||
    "static/js/muting_ui.js",
 | 
					    "static/js/muting_ui.js",
 | 
				
			||||||
 | 
					    "static/js/muted_users_ui.js",
 | 
				
			||||||
    "static/js/narrow.js",
 | 
					    "static/js/narrow.js",
 | 
				
			||||||
    "static/js/navigate.js",
 | 
					    "static/js/navigate.js",
 | 
				
			||||||
    "static/js/night_mode.ts",
 | 
					    "static/js/night_mode.ts",
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user