TeaWeb/shared/js/ui/modal/permission/ModalDefinitions.ts

196 lines
4.8 KiB
TypeScript
Raw Normal View History

export type PermissionEditorTab = "groups-server" | "groups-channel" | "channel" | "client" | "client-channel";
export type PermissionEditorSubject =
"groups-server"
| "groups-channel"
| "channel"
| "client"
| "client-channel"
| "none";
export type GroupProperties = {
id: number,
type: "query" | "template" | "normal";
name: string,
iconId: number,
sortId: number;
saveDB: boolean;
needed_modify_power: number;
needed_member_add: number;
needed_member_remove: number;
};
export type GroupUpdateEntry = {
property: "name" | "icon" | "sort" | "save";
value: any
};
export type ChannelInfo = {
id: number;
iconId: number;
name: string;
depth: number;
}
export interface PermissionModalEvents {
action_activate_tab: {
tab: PermissionEditorTab,
activeGroupId?: number;
activeChannelId?: number;
activeClientDatabaseId?: number;
},
action_select_group: {
target: "server" | "channel",
id: number
},
action_select_channel: {
target: "channel" | "client-channel";
id: number
},
action_select_client: {
target: "client" | "client-channel";
id: number | string | undefined;
}
action_set_permission_editor_subject: {
mode: PermissionEditorSubject | undefined;
groupId?: number;
channelId?: number;
clientDatabaseId?: number;
}
action_create_group: { target: "server" | "channel", sourceGroup?: number },
action_rename_group: { target: "server" | "channel", id: number | "selected", newName: string },
action_rename_group_result: {
target: "server" | "channel";
id: number;
status: "success" | "error";
error?: string;
}
action_delete_group: { target: "server" | "channel", id: number | "selected", mode: "ask" | "force" },
action_delete_group_result: {
target: "server" | "channel";
id: number;
status: "success" | "error";
error?: string;
},
action_group_copy_permissions: { target: "server" | "channel", sourceGroup: number },
action_server_group_add_client: {
id: number;
client: number | string; /* string would be the unique id */
},
action_server_group_add_client_result: {
id: number;
client: number | string;
status: "success" | "error" | "no-permissions";
error?: string;
}
action_server_group_remove_client: {
id: number;
client: number;
},
action_server_group_remove_client_result: {
id: number;
client: number;
status: "success" | "error" | "no-permissions";
error?: string;
}
query_groups: {
target: "server" | "channel",
},
query_group_clients: {
id: number
},
query_channels: {},
query_client_permissions: {},
query_client_info: {
client: number | string; /* client database id or unique id */
},
notify_channels: {
channels: ChannelInfo[]
},
notify_client_info: {
client: number | string;
state: "success" | "error" | "no-such-client" | "no-permission";
error?: string;
info?: { name: string, uniqueId: string, databaseId: number },
failedPermission?: string;
},
notify_group_updated: {
target: "server" | "channel";
id: number;
properties: GroupUpdateEntry[];
},
notify_groups_created: {
target: "server" | "channel";
groups: GroupProperties[]
},
notify_groups_deleted: {
target: "server" | "channel";
groups: number[]
},
notify_group_clients: {
id: number,
status: "success" | "error" | "no-permissions",
error?: string;
clients?: {
name: string;
databaseId: number;
uniqueId: string;
}[]
},
notify_groups_reset: {},
notify_groups: {
target: "server" | "channel",
groups: GroupProperties[]
},
notify_client_permissions: {
permissionModifyPower: number;
serverGroupCreate: boolean,
channelGroupCreate: boolean,
serverGroupModifyPower: number,
channelGroupModifyPower: number,
modifyQueryGroups: boolean,
modifyTemplateGroups: boolean
serverGroupMemberAddPower: number,
serverGroupMemberRemovePower: number,
serverGroupPermissionList: boolean,
channelGroupPermissionList: boolean,
channelPermissionList: boolean,
clientPermissionList: boolean,
clientChannelPermissionList: boolean
},
notify_client_list_toggled: { visible: boolean },
notify_channel_updated: { id: number, property: "name" | "icon", value: any },
notify_initial_rendered: {},
notify_destroy: {}
}