mirror of
https://github.com/zulip/zulip.git
synced 2026-06-30 21:11:04 +08:00
stream_events: Loop over stream group settings for update_property.
This commit is contained in:
parent
a5a56be15b
commit
173c09e32b
@ -20,6 +20,7 @@ import * as peer_data from "./peer_data.ts";
|
||||
import * as people from "./people.ts";
|
||||
import * as recent_view_ui from "./recent_view_ui.ts";
|
||||
import * as settings_notifications from "./settings_notifications.ts";
|
||||
import {realm} from "./state_data.ts";
|
||||
import * as stream_color_events from "./stream_color_events.ts";
|
||||
import * as stream_create from "./stream_create.ts";
|
||||
import * as stream_data from "./stream_data.ts";
|
||||
@ -27,8 +28,10 @@ import * as stream_list from "./stream_list.ts";
|
||||
import * as stream_muting from "./stream_muting.ts";
|
||||
import * as stream_settings_api from "./stream_settings_api.ts";
|
||||
import * as stream_settings_ui from "./stream_settings_ui.ts";
|
||||
import {stream_permission_group_settings_schema} from "./stream_types.ts";
|
||||
import * as sub_store from "./sub_store.ts";
|
||||
import type {StreamSubscription} from "./sub_store.ts";
|
||||
import {group_setting_value_schema} from "./types.ts";
|
||||
import * as unread_ui from "./unread_ui.ts";
|
||||
import * as user_profile from "./user_profile.ts";
|
||||
|
||||
@ -81,6 +84,15 @@ export function update_property<P extends keyof UpdatableStreamProperties>(
|
||||
return;
|
||||
}
|
||||
|
||||
if (Object.keys(realm.server_supported_permission_settings.stream).includes(property)) {
|
||||
stream_settings_ui.update_stream_permission_group_setting(
|
||||
stream_permission_group_settings_schema.parse(property),
|
||||
sub,
|
||||
group_setting_value_schema.parse(value),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
const update_stream_specific_notification_setting =
|
||||
(property: keyof sub_store.StreamSpecificNotificationSettings) =>
|
||||
(value: boolean | null) => {
|
||||
@ -145,24 +157,10 @@ export function update_property<P extends keyof UpdatableStreamProperties>(
|
||||
message_retention_days(value) {
|
||||
stream_settings_ui.update_message_retention_setting(sub, value);
|
||||
},
|
||||
can_remove_subscribers_group(value) {
|
||||
stream_settings_ui.update_stream_permission_group_setting(
|
||||
"can_remove_subscribers_group",
|
||||
sub,
|
||||
value,
|
||||
);
|
||||
},
|
||||
is_recently_active(value) {
|
||||
update_stream_setting(sub, value, "is_recently_active");
|
||||
stream_list.update_streams_sidebar();
|
||||
},
|
||||
can_administer_channel_group(value) {
|
||||
stream_settings_ui.update_stream_permission_group_setting(
|
||||
"can_administer_channel_group",
|
||||
sub,
|
||||
value,
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
if (Object.hasOwn(updaters, property) && updaters[property] !== undefined) {
|
||||
|
||||
40
web/tests/lib/example_settings.cjs
Normal file
40
web/tests/lib/example_settings.cjs
Normal file
@ -0,0 +1,40 @@
|
||||
"use strict";
|
||||
|
||||
exports.server_supported_permission_settings = {
|
||||
stream: {
|
||||
can_administer_channel_group: {
|
||||
require_system_group: true,
|
||||
allow_internet_group: false,
|
||||
allow_nobody_group: true,
|
||||
allow_everyone_group: false,
|
||||
default_group_name: "stream_creator_or_nobody",
|
||||
allowed_system_groups: [],
|
||||
},
|
||||
can_remove_subscribers_group: {
|
||||
require_system_group: true,
|
||||
allow_internet_group: false,
|
||||
allow_nobody_group: false,
|
||||
allow_everyone_group: true,
|
||||
default_group_name: "role:administrators",
|
||||
allowed_system_groups: [],
|
||||
},
|
||||
},
|
||||
realm: {
|
||||
create_multiuse_invite_group: {
|
||||
require_system_group: true,
|
||||
allow_internet_group: false,
|
||||
allow_nobody_group: true,
|
||||
allow_everyone_group: false,
|
||||
default_group_name: "role:administrators",
|
||||
allowed_system_groups: [],
|
||||
},
|
||||
can_access_all_users_group: {
|
||||
require_system_group: true,
|
||||
allow_internet_group: false,
|
||||
allow_nobody_group: false,
|
||||
allow_everyone_group: true,
|
||||
default_group_name: "role:everyone",
|
||||
allowed_system_groups: ["role:everyone", "role:members"],
|
||||
},
|
||||
},
|
||||
};
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
const assert = require("node:assert/strict");
|
||||
|
||||
const example_settings = require("./lib/example_settings.cjs");
|
||||
const {mock_esm, zrequire} = require("./lib/namespace.cjs");
|
||||
const {make_stub} = require("./lib/stub.cjs");
|
||||
const {run_test, noop} = require("./lib/test.cjs");
|
||||
@ -52,8 +53,9 @@ const stream_create = zrequire("stream_create");
|
||||
const stream_data = zrequire("stream_data");
|
||||
const stream_events = zrequire("stream_events");
|
||||
|
||||
const realm = {};
|
||||
set_current_user({});
|
||||
set_realm({});
|
||||
set_realm(realm);
|
||||
|
||||
const george = {
|
||||
email: "george@zulip.com",
|
||||
@ -106,7 +108,11 @@ function test(label, f) {
|
||||
test("update_property", ({override}) => {
|
||||
override(compose_recipient, "possibly_update_stream_name_in_compose", noop);
|
||||
override(compose_recipient, "on_compose_select_recipient_update", noop);
|
||||
|
||||
override(
|
||||
realm,
|
||||
"server_supported_permission_settings",
|
||||
example_settings.server_supported_permission_settings,
|
||||
);
|
||||
const sub = {...frontend};
|
||||
stream_data.add_sub(sub);
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
const assert = require("node:assert/strict");
|
||||
|
||||
const example_settings = require("./lib/example_settings.cjs");
|
||||
const {zrequire} = require("./lib/namespace.cjs");
|
||||
const {run_test} = require("./lib/test.cjs");
|
||||
const blueslip = require("./lib/zblueslip.cjs");
|
||||
@ -542,44 +543,11 @@ run_test("get_realm_user_groups_for_dropdown_list_widget", ({override}) => {
|
||||
direct_subgroup_ids: new Set([4, 5]),
|
||||
};
|
||||
|
||||
override(realm, "server_supported_permission_settings", {
|
||||
stream: {
|
||||
can_administer_channel_group: {
|
||||
require_system_group: true,
|
||||
allow_internet_group: false,
|
||||
allow_nobody_group: true,
|
||||
allow_everyone_group: false,
|
||||
default_group_name: "stream_creator_or_nobody",
|
||||
allowed_system_groups: [],
|
||||
},
|
||||
can_remove_subscribers_group: {
|
||||
require_system_group: true,
|
||||
allow_internet_group: false,
|
||||
allow_nobody_group: false,
|
||||
allow_everyone_group: true,
|
||||
default_group_name: "role:administrators",
|
||||
allowed_system_groups: [],
|
||||
},
|
||||
},
|
||||
realm: {
|
||||
create_multiuse_invite_group: {
|
||||
require_system_group: true,
|
||||
allow_internet_group: false,
|
||||
allow_nobody_group: true,
|
||||
allow_everyone_group: false,
|
||||
default_group_name: "role:administrators",
|
||||
allowed_system_groups: [],
|
||||
},
|
||||
can_access_all_users_group: {
|
||||
require_system_group: true,
|
||||
allow_internet_group: false,
|
||||
allow_nobody_group: false,
|
||||
allow_everyone_group: true,
|
||||
default_group_name: "role:everyone",
|
||||
allowed_system_groups: ["role:everyone", "role:members"],
|
||||
},
|
||||
},
|
||||
});
|
||||
override(
|
||||
realm,
|
||||
"server_supported_permission_settings",
|
||||
example_settings.server_supported_permission_settings,
|
||||
);
|
||||
|
||||
let expected_groups_list = [
|
||||
{name: "translated: Admins, moderators, members and guests", unique_id: 6},
|
||||
|
||||
Loading…
Reference in New Issue
Block a user