mirror of https://github.com/zulip/zulip.git
user_groups: Generate UserGroup 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:
parent
5aa5163bbb
commit
39137e67f7
|
@ -136,7 +136,7 @@ export const group_setting_value_schema = z.union([z.number(), anonymous_group_s
|
||||||
|
|
||||||
export type GroupSettingValue = z.infer<typeof group_setting_value_schema>;
|
export type GroupSettingValue = z.infer<typeof group_setting_value_schema>;
|
||||||
|
|
||||||
export const user_group_schema = z.object({
|
export const raw_user_group_schema = z.object({
|
||||||
description: z.string(),
|
description: z.string(),
|
||||||
id: z.number(),
|
id: z.number(),
|
||||||
creator_id: z.number().nullable(),
|
creator_id: z.number().nullable(),
|
||||||
|
@ -482,7 +482,7 @@ export const state_data_schema = z
|
||||||
)
|
)
|
||||||
.and(
|
.and(
|
||||||
z
|
z
|
||||||
.object({realm_user_groups: z.array(user_group_schema)})
|
.object({realm_user_groups: z.array(raw_user_group_schema)})
|
||||||
.transform((user_groups) => ({user_groups})),
|
.transform((user_groups) => ({user_groups})),
|
||||||
)
|
)
|
||||||
.and(
|
.and(
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import assert from "minimalistic-assert";
|
import assert from "minimalistic-assert";
|
||||||
import type {z} from "zod";
|
import {z} from "zod";
|
||||||
|
|
||||||
import * as blueslip from "./blueslip";
|
import * as blueslip from "./blueslip";
|
||||||
import {FoldDict} from "./fold_dict";
|
import {FoldDict} from "./fold_dict";
|
||||||
|
@ -7,24 +7,20 @@ import * as group_permission_settings from "./group_permission_settings";
|
||||||
import {$t} from "./i18n";
|
import {$t} from "./i18n";
|
||||||
import {page_params} from "./page_params";
|
import {page_params} from "./page_params";
|
||||||
import * as settings_config from "./settings_config";
|
import * as settings_config from "./settings_config";
|
||||||
import type {
|
import type {GroupPermissionSetting, GroupSettingValue, StateData} from "./state_data";
|
||||||
GroupPermissionSetting,
|
import {current_user, raw_user_group_schema, realm} from "./state_data";
|
||||||
GroupSettingValue,
|
|
||||||
StateData,
|
|
||||||
user_group_schema,
|
|
||||||
} from "./state_data";
|
|
||||||
import {current_user, realm} from "./state_data";
|
|
||||||
import type {UserOrMention} from "./typeahead_helper";
|
import type {UserOrMention} from "./typeahead_helper";
|
||||||
import type {UserGroupUpdateEvent} from "./types";
|
import type {UserGroupUpdateEvent} from "./types";
|
||||||
|
|
||||||
type UserGroupRaw = z.infer<typeof user_group_schema>;
|
type UserGroupRaw = z.infer<typeof raw_user_group_schema>;
|
||||||
|
|
||||||
// The members field is a number array which we convert
|
// The members field is a number array which we convert
|
||||||
// to a Set in the initialize function.
|
// to a Set in the initialize function.
|
||||||
export type UserGroup = Omit<UserGroupRaw, "members" | "direct_subgroup_ids"> & {
|
export const user_group_schema = raw_user_group_schema.extend({
|
||||||
members: Set<number>;
|
members: z.set(z.number()),
|
||||||
direct_subgroup_ids: Set<number>;
|
direct_subgroup_ids: z.set(z.number()),
|
||||||
};
|
});
|
||||||
|
export type UserGroup = z.infer<typeof user_group_schema>;
|
||||||
|
|
||||||
type UserGroupForDropdownListWidget = {
|
type UserGroupForDropdownListWidget = {
|
||||||
name: string;
|
name: string;
|
||||||
|
|
Loading…
Reference in New Issue