mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 22:43:42 +00:00
We now rely on set_up() methods to call their own module-specific versions of maybe_disable_widgets() in the codepath for admin_sections.load_admin_section(). And then for live updates, we just explicitly call all four modules that support maybe_disable_widgets(). This should make switching between sections slightly faster, and it also reduces the risk of module A messing with module B's state. (Granted, we have lots of other ways that modules can mess with each other's state.)
103 lines
2.3 KiB
JavaScript
103 lines
2.3 KiB
JavaScript
var admin_sections = (function () {
|
|
|
|
var exports = {};
|
|
|
|
var is_loaded = new Dict(); // section -> bool
|
|
|
|
exports.load_admin_section = function (name) {
|
|
var section;
|
|
|
|
switch (name) {
|
|
case 'organization-profile':
|
|
case 'organization-settings':
|
|
case 'organization-permissions':
|
|
case 'auth-methods':
|
|
section = 'org';
|
|
break;
|
|
case 'emoji-settings':
|
|
section = 'emoji';
|
|
break;
|
|
case 'bot-list-admin':
|
|
case 'user-list-admin':
|
|
case 'deactivated-users-admin':
|
|
section = 'users';
|
|
break;
|
|
case 'default-streams-list':
|
|
section = 'streams';
|
|
break;
|
|
case 'filter-settings':
|
|
section = 'filters';
|
|
break;
|
|
case 'invites-list-admin':
|
|
section = 'invites';
|
|
break;
|
|
case 'user-groups-admin':
|
|
section = 'user-groups';
|
|
break;
|
|
case 'profile-field-settings':
|
|
section = 'profile-fields';
|
|
break;
|
|
default:
|
|
blueslip.error('Unknown admin id ' + name);
|
|
return;
|
|
}
|
|
|
|
if (is_loaded.get(section)) {
|
|
// We only load sections once (unless somebody calls
|
|
// reset_sections).
|
|
return;
|
|
}
|
|
|
|
switch (section) {
|
|
case 'org':
|
|
settings_org.set_up();
|
|
break;
|
|
case 'emoji':
|
|
settings_emoji.set_up();
|
|
break;
|
|
case 'users':
|
|
settings_users.set_up();
|
|
break;
|
|
case 'streams':
|
|
settings_streams.set_up();
|
|
break;
|
|
case 'filters':
|
|
settings_filters.set_up();
|
|
break;
|
|
case 'invites':
|
|
settings_invites.set_up();
|
|
break;
|
|
case 'user-groups':
|
|
settings_user_groups.set_up();
|
|
break;
|
|
case 'profile-fields':
|
|
settings_profile_fields.set_up();
|
|
break;
|
|
default:
|
|
blueslip.error('programming error for section ' + section);
|
|
return;
|
|
}
|
|
|
|
is_loaded.set(section, true);
|
|
};
|
|
|
|
exports.reset_sections = function () {
|
|
is_loaded.clear();
|
|
settings_org.reset();
|
|
settings_emoji.reset();
|
|
settings_users.reset();
|
|
settings_streams.reset();
|
|
settings_filters.reset();
|
|
settings_invites.reset();
|
|
settings_user_groups.reset();
|
|
settings_profile_fields.reset();
|
|
};
|
|
|
|
return exports;
|
|
}());
|
|
|
|
if (typeof module !== 'undefined') {
|
|
module.exports = admin_sections;
|
|
}
|
|
window.admin_sections = admin_sections;
|