js: Convert static/js/user_groups.js to ES6 module.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2021-02-27 15:42:57 -08:00
committed by Tim Abbott
parent 592cd780f5
commit 5a68bda15b
16 changed files with 43 additions and 40 deletions

View File

@@ -255,7 +255,6 @@
"upload": false, "upload": false,
"upload_widget": false, "upload_widget": false,
"user_events": false, "user_events": false,
"user_groups": false,
"poll_widget": false, "poll_widget": false,
"widgetize": false, "widgetize": false,
"zxcvbn": false "zxcvbn": false

View File

@@ -63,7 +63,9 @@ const typing_events = set_global("typing_events", {});
const ui = set_global("ui", {}); const ui = set_global("ui", {});
const unread_ops = set_global("unread_ops", {}); const unread_ops = set_global("unread_ops", {});
const user_events = set_global("user_events", {}); const user_events = set_global("user_events", {});
const user_groups = set_global("user_groups", {}); const user_groups = {__esModule: true};
rewiremock("../../static/js/user_groups").with(user_groups);
// page_params is highly coupled to dispatching now // page_params is highly coupled to dispatching now
const page_params = set_global("page_params", { const page_params = set_global("page_params", {

View File

@@ -25,7 +25,6 @@ const markdown_config = zrequire("markdown_config");
zrequire("hash_util"); zrequire("hash_util");
zrequire("message_store"); zrequire("message_store");
zrequire("stream_data"); zrequire("stream_data");
zrequire("user_groups");
const markdown = zrequire("markdown"); const markdown = zrequire("markdown");

View File

@@ -23,11 +23,13 @@ let create_item_handler;
const channel = {__esModule: true}; const channel = {__esModule: true};
rewiremock("../../static/js/channel").with(channel); rewiremock("../../static/js/channel").with(channel);
const typeahead_helper = set_global("typeahead_helper", {}); const typeahead_helper = set_global("typeahead_helper", {});
const user_groups = set_global("user_groups", { const user_groups = {
__esModule: true,
get_user_group_from_id: noop, get_user_group_from_id: noop,
remove: noop, remove: noop,
add: noop, add: noop,
}); };
rewiremock("../../static/js/user_groups").with(user_groups);
const ui_report = set_global("ui_report", {}); const ui_report = set_global("ui_report", {});
const page_params = set_global("page_params", {}); const page_params = set_global("page_params", {});

View File

@@ -119,7 +119,6 @@ zrequire("message_view_header");
zrequire("narrow_state"); zrequire("narrow_state");
zrequire("presence"); zrequire("presence");
zrequire("search_pill_widget"); zrequire("search_pill_widget");
zrequire("user_groups");
zrequire("unread"); zrequire("unread");
zrequire("bot_data"); zrequire("bot_data");
zrequire("markdown"); zrequire("markdown");

View File

@@ -18,7 +18,6 @@ import "../fold_dict";
import "../input_pill"; import "../input_pill";
import "../setup"; import "../setup";
import "../unread_ops"; import "../unread_ops";
import "../user_groups";
import "../unread"; import "../unread";
import "../topic_list"; import "../topic_list";
import "../pm_list_dom"; import "../pm_list_dom";

View File

@@ -14,6 +14,7 @@ const compose_pm_pill = require("./compose_pm_pill");
const people = require("./people"); const people = require("./people");
const rows = require("./rows"); const rows = require("./rows");
const settings_data = require("./settings_data"); const settings_data = require("./settings_data");
const user_groups = require("./user_groups");
const user_pill = require("./user_pill"); const user_pill = require("./user_pill");
//************************************ //************************************

View File

@@ -126,7 +126,6 @@ declare let unread_ops: any;
declare let upload: any; declare let upload: any;
declare let upload_widget: any; declare let upload_widget: any;
declare let user_events: any; declare let user_events: any;
declare let user_groups: any;
declare let widgetize: any; declare let widgetize: any;
interface JQuery { interface JQuery {

View File

@@ -1,4 +1,5 @@
import * as people from "./people"; import * as people from "./people";
import * as user_groups from "./user_groups";
/* /*
This config is in a separate file for partly This config is in a separate file for partly

View File

@@ -25,6 +25,7 @@ const people = require("./people");
const rows = require("./rows"); const rows = require("./rows");
const settings_config = require("./settings_config"); const settings_config = require("./settings_config");
const settings_data = require("./settings_data"); const settings_data = require("./settings_data");
const user_groups = require("./user_groups");
const user_status = require("./user_status"); const user_status = require("./user_status");
const user_status_ui = require("./user_status_ui"); const user_status_ui = require("./user_status_ui");
const util = require("./util"); const util = require("./util");

View File

@@ -6,6 +6,7 @@ import view_code_in_playground from "../templates/view_code_in_playground.hbs";
import * as people from "./people"; import * as people from "./people";
import * as rtl from "./rtl"; import * as rtl from "./rtl";
import * as settings_config from "./settings_config"; import * as settings_config from "./settings_config";
import * as user_groups from "./user_groups";
const {parseISO, isValid} = require("date-fns"); const {parseISO, isValid} = require("date-fns");

View File

@@ -5,6 +5,7 @@ import * as muting_ui from "./muting_ui";
import * as peer_data from "./peer_data"; import * as peer_data from "./peer_data";
import * as people from "./people"; import * as people from "./people";
import * as settings_config from "./settings_config"; import * as settings_config from "./settings_config";
import * as user_groups from "./user_groups";
import * as user_status from "./user_status"; import * as user_status from "./user_status";
export function dispatch_normal_event(event) { export function dispatch_normal_event(event) {

View File

@@ -8,6 +8,7 @@ const render_confirm_delete_user = require("../templates/confirm_delete_user.hbs
const channel = require("./channel"); const channel = require("./channel");
const people = require("./people"); const people = require("./people");
const pill_typeahead = require("./pill_typeahead"); const pill_typeahead = require("./pill_typeahead");
const user_groups = require("./user_groups");
const user_pill = require("./user_pill"); const user_pill = require("./user_pill");
const meta = { const meta = {

View File

@@ -11,6 +11,7 @@ const render_typeahead_list_item = require("../templates/typeahead_list_item.hbs
const people = require("./people"); const people = require("./people");
const pm_conversations = require("./pm_conversations"); const pm_conversations = require("./pm_conversations");
const settings_data = require("./settings_data"); const settings_data = require("./settings_data");
const user_groups = require("./user_groups");
const util = require("./util"); const util = require("./util");
// Returns an array of private message recipients, removing empty elements. // Returns an array of private message recipients, removing empty elements.

View File

@@ -26,6 +26,7 @@ const topic_zoom = require("./topic_zoom");
const tutorial = require("./tutorial"); const tutorial = require("./tutorial");
const typing = require("./typing"); const typing = require("./typing");
const unread_ui = require("./unread_ui"); const unread_ui = require("./unread_ui");
const user_groups = require("./user_groups");
const user_status = require("./user_status"); const user_status = require("./user_status");
const user_status_ui = require("./user_status_ui"); const user_status_ui = require("./user_status_ui");

View File

@@ -1,33 +1,31 @@
"use strict"; import {FoldDict} from "./fold_dict";
const {FoldDict} = require("./fold_dict");
let user_group_name_dict; let user_group_name_dict;
let user_group_by_id_dict; let user_group_by_id_dict;
// We have an init() function so that our automated tests // We have an init() function so that our automated tests
// can easily clear data. // can easily clear data.
exports.init = function () { export function init() {
user_group_name_dict = new FoldDict(); user_group_name_dict = new FoldDict();
user_group_by_id_dict = new Map(); user_group_by_id_dict = new Map();
}; }
// WE INITIALIZE DATA STRUCTURES HERE! // WE INITIALIZE DATA STRUCTURES HERE!
exports.init(); init();
exports.add = function (user_group) { export function add(user_group) {
// Reformat the user group members structure to be a set. // Reformat the user group members structure to be a set.
user_group.members = new Set(user_group.members); user_group.members = new Set(user_group.members);
user_group_name_dict.set(user_group.name, user_group); user_group_name_dict.set(user_group.name, user_group);
user_group_by_id_dict.set(user_group.id, user_group); user_group_by_id_dict.set(user_group.id, user_group);
}; }
exports.remove = function (user_group) { export function remove(user_group) {
user_group_name_dict.delete(user_group.name); user_group_name_dict.delete(user_group.name);
user_group_by_id_dict.delete(user_group.id); user_group_by_id_dict.delete(user_group.id);
}; }
exports.get_user_group_from_id = function (group_id, suppress_errors) { export function get_user_group_from_id(group_id, suppress_errors) {
if (!user_group_by_id_dict.has(group_id)) { if (!user_group_by_id_dict.has(group_id)) {
if (suppress_errors === undefined) { if (suppress_errors === undefined) {
blueslip.error("Unknown group_id in get_user_group_from_id: " + group_id); blueslip.error("Unknown group_id in get_user_group_from_id: " + group_id);
@@ -35,10 +33,10 @@ exports.get_user_group_from_id = function (group_id, suppress_errors) {
return undefined; return undefined;
} }
return user_group_by_id_dict.get(group_id); return user_group_by_id_dict.get(group_id);
}; }
exports.update = function (event) { export function update(event) {
const group = exports.get_user_group_from_id(event.group_id); const group = get_user_group_from_id(event.group_id);
if (event.data.name !== undefined) { if (event.data.name !== undefined) {
group.name = event.data.name; group.name = event.data.name;
user_group_name_dict.delete(group.name); user_group_name_dict.delete(group.name);
@@ -49,49 +47,47 @@ exports.update = function (event) {
user_group_name_dict.delete(group.name); user_group_name_dict.delete(group.name);
user_group_name_dict.set(group.name, group); user_group_name_dict.set(group.name, group);
} }
}; }
exports.get_user_group_from_name = function (name) { export function get_user_group_from_name(name) {
return user_group_name_dict.get(name); return user_group_name_dict.get(name);
}; }
exports.get_realm_user_groups = function () { export function get_realm_user_groups() {
return Array.from(user_group_by_id_dict.values()).sort((a, b) => a.id - b.id); return Array.from(user_group_by_id_dict.values()).sort((a, b) => a.id - b.id);
}; }
exports.is_member_of = function (user_group_id, user_id) { export function is_member_of(user_group_id, user_id) {
const user_group = user_group_by_id_dict.get(user_group_id); const user_group = user_group_by_id_dict.get(user_group_id);
if (user_group === undefined) { if (user_group === undefined) {
blueslip.error("Could not find user group with ID " + user_group_id); blueslip.error("Could not find user group with ID " + user_group_id);
return false; return false;
} }
return user_group.members.has(user_id); return user_group.members.has(user_id);
}; }
exports.add_members = function (user_group_id, user_ids) { export function add_members(user_group_id, user_ids) {
const user_group = user_group_by_id_dict.get(user_group_id); const user_group = user_group_by_id_dict.get(user_group_id);
for (const user_id of user_ids) { for (const user_id of user_ids) {
user_group.members.add(user_id); user_group.members.add(user_id);
} }
}; }
exports.remove_members = function (user_group_id, user_ids) { export function remove_members(user_group_id, user_ids) {
const user_group = user_group_by_id_dict.get(user_group_id); const user_group = user_group_by_id_dict.get(user_group_id);
for (const user_id of user_ids) { for (const user_id of user_ids) {
user_group.members.delete(user_id); user_group.members.delete(user_id);
} }
}; }
exports.initialize = function (params) { export function initialize(params) {
for (const user_group of params.realm_user_groups) { for (const user_group of params.realm_user_groups) {
exports.add(user_group); add(user_group);
} }
}; }
exports.is_user_group = function (item) { export function is_user_group(item) {
return item.members !== undefined; return item.members !== undefined;
}; }
window.user_groups = exports;