settings_components: Generate SimpleDropdownRealmSettings type from a schema.

This will be useful for later when we'll need the schema for
converting settings_org to typescript.
This commit is contained in:
evykassirer
2024-10-08 21:39:57 -07:00
committed by Tim Abbott
parent 897f605acf
commit 5aa5163bbb

View File

@@ -231,23 +231,23 @@ export function get_subsection_property_elements($subsection: JQuery): HTMLEleme
return [...$subsection.find(".prop-element")]; return [...$subsection.find(".prop-element")];
} }
type simple_dropdown_realm_settings = Pick< export const simple_dropdown_realm_settings_schema = realm_schema.pick({
typeof realm, realm_invite_to_stream_policy: true,
| "realm_invite_to_stream_policy" realm_invite_to_realm_policy: true,
| "realm_invite_to_realm_policy" realm_wildcard_mention_policy: true,
| "realm_wildcard_mention_policy" realm_move_messages_between_streams_policy: true,
| "realm_move_messages_between_streams_policy" realm_edit_topic_policy: true,
| "realm_edit_topic_policy" realm_org_type: true,
| "realm_org_type" });
>; type SimpleDropdownRealmSettings = z.infer<typeof simple_dropdown_realm_settings_schema>;
export function set_property_dropdown_value( export function set_property_dropdown_value(
property_name: keyof simple_dropdown_realm_settings, property_name: keyof SimpleDropdownRealmSettings,
): void { ): void {
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
const property_value = get_realm_settings_property_value( const property_value = get_realm_settings_property_value(
property_name, property_name,
) as valueof<simple_dropdown_realm_settings>; ) as valueof<SimpleDropdownRealmSettings>;
$(`#id_${CSS.escape(property_name)}`).val(property_value); $(`#id_${CSS.escape(property_name)}`).val(property_value);
} }