mirror of https://github.com/zulip/zulip.git
settings: Add user_can_create_web_public_streams function.
This commit adds user_can_create_web_public_streams function in settings_data.js which will be used in further commits to disable or hide the UI elements for creating web-public streams.
This commit is contained in:
parent
56a8443f05
commit
443d8b6a65
|
@ -283,3 +283,49 @@ run_test("user_can_invite_others_to_realm_nobody_case", () => {
|
|||
settings_config.invite_to_realm_policy_values.nobody.code;
|
||||
assert.equal(settings_data.user_can_invite_others_to_realm(), false);
|
||||
});
|
||||
|
||||
run_test("user_can_create_web_public_streams", () => {
|
||||
page_params.is_owner = true;
|
||||
page_params.server_web_public_streams_enabled = true;
|
||||
page_params.realm_enable_spectator_access = true;
|
||||
page_params.realm_create_web_public_stream_policy =
|
||||
settings_config.create_web_public_stream_policy_values.nobody.code;
|
||||
assert.equal(settings_data.user_can_create_web_public_streams(), false);
|
||||
|
||||
page_params.realm_create_web_public_stream_policy =
|
||||
settings_config.create_web_public_stream_policy_values.by_owners_only.code;
|
||||
assert.equal(settings_data.user_can_create_web_public_streams(), true);
|
||||
|
||||
page_params.realm_enable_spectator_access = false;
|
||||
page_params.server_web_public_streams_enabled = true;
|
||||
assert.equal(settings_data.user_can_create_web_public_streams(), false);
|
||||
|
||||
page_params.realm_enable_spectator_access = true;
|
||||
page_params.server_web_public_streams_enabled = false;
|
||||
assert.equal(settings_data.user_can_create_web_public_streams(), false);
|
||||
|
||||
page_params.realm_enable_spectator_access = false;
|
||||
page_params.server_web_public_streams_enabled = false;
|
||||
assert.equal(settings_data.user_can_create_web_public_streams(), false);
|
||||
|
||||
page_params.realm_enable_spectator_access = true;
|
||||
page_params.server_web_public_streams_enabled = true;
|
||||
page_params.is_owner = false;
|
||||
page_params.is_admin = true;
|
||||
assert.equal(settings_data.user_can_create_web_public_streams(), false);
|
||||
|
||||
page_params.realm_create_web_public_stream_policy =
|
||||
settings_config.create_web_public_stream_policy_values.by_admins_only.code;
|
||||
assert.equal(settings_data.user_can_create_web_public_streams(), true);
|
||||
|
||||
page_params.is_admin = false;
|
||||
page_params.is_moderator = true;
|
||||
assert.equal(settings_data.user_can_create_web_public_streams(), false);
|
||||
|
||||
page_params.realm_create_web_public_stream_policy =
|
||||
settings_config.create_web_public_stream_policy_values.by_moderators_only.code;
|
||||
assert.equal(settings_data.user_can_create_web_public_streams(), true);
|
||||
|
||||
page_params.is_moderator = false;
|
||||
assert.equal(settings_data.user_can_create_web_public_streams(), false);
|
||||
});
|
||||
|
|
|
@ -12,14 +12,17 @@ export const page_params: {
|
|||
is_admin: boolean;
|
||||
is_guest: boolean;
|
||||
is_moderator: boolean;
|
||||
is_owner: boolean;
|
||||
is_spectator: boolean;
|
||||
realm_add_custom_emoji_policy: number;
|
||||
realm_avatar_changes_disabled: boolean;
|
||||
realm_create_private_stream_policy: number;
|
||||
realm_create_public_stream_policy: number;
|
||||
realm_create_web_public_stream_policy: number;
|
||||
realm_delete_own_message_policy: number;
|
||||
realm_edit_topic_policy: number;
|
||||
realm_email_address_visibility: number;
|
||||
realm_enable_spectator_access: boolean;
|
||||
realm_invite_to_realm_policy: number;
|
||||
realm_invite_to_stream_policy: number;
|
||||
realm_move_messages_between_streams_policy: number;
|
||||
|
@ -30,6 +33,7 @@ export const page_params: {
|
|||
request_language: string;
|
||||
server_avatar_changes_disabled: boolean;
|
||||
server_name_changes_disabled: boolean;
|
||||
server_web_public_streams_enabled: boolean;
|
||||
translation_data: Record<string, string>;
|
||||
zulip_plan_is_not_limited: boolean;
|
||||
} = $("#page-params").remove().data("params");
|
||||
|
|
|
@ -227,6 +227,29 @@ export const wildcard_mention_policy_values = {
|
|||
},
|
||||
};
|
||||
|
||||
export const create_web_public_stream_policy_values = {
|
||||
by_moderators_only: {
|
||||
order: 1,
|
||||
code: 4,
|
||||
description: $t({defaultMessage: "Admins and moderators"}),
|
||||
},
|
||||
by_admins_only: {
|
||||
order: 2,
|
||||
code: 2,
|
||||
description: $t({defaultMessage: "Admins only"}),
|
||||
},
|
||||
by_owners_only: {
|
||||
order: 3,
|
||||
code: 7,
|
||||
description: $t({defaultMessage: "Owners only"}),
|
||||
},
|
||||
nobody: {
|
||||
order: 4,
|
||||
code: 6,
|
||||
description: $t({defaultMessage: "Nobody"}),
|
||||
},
|
||||
};
|
||||
|
||||
export const common_message_policy_values = {
|
||||
by_everyone: {
|
||||
order: 1,
|
||||
|
|
|
@ -181,6 +181,31 @@ export function user_can_create_public_streams(): boolean {
|
|||
return user_has_permission(page_params.realm_create_public_stream_policy);
|
||||
}
|
||||
|
||||
export function user_can_create_web_public_streams(): boolean {
|
||||
if (
|
||||
!page_params.server_web_public_streams_enabled ||
|
||||
!page_params.realm_enable_spectator_access
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (
|
||||
page_params.realm_create_web_public_stream_policy ===
|
||||
settings_config.create_web_public_stream_policy_values.nobody.code
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (
|
||||
page_params.realm_create_web_public_stream_policy ===
|
||||
settings_config.create_web_public_stream_policy_values.by_owners_only.code
|
||||
) {
|
||||
return page_params.is_owner;
|
||||
}
|
||||
|
||||
return user_has_permission(page_params.realm_create_web_public_stream_policy);
|
||||
}
|
||||
|
||||
export function user_can_move_messages_between_streams(): boolean {
|
||||
return user_has_permission(page_params.realm_move_messages_between_streams_policy);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue