196 lines
No EOL
4.8 KiB
TypeScript
196 lines
No EOL
4.8 KiB
TypeScript
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: {}
|
|
} |