refactor: extract group types info types package

pull/146/merge
moonrailgun 3 years ago
parent 97dfd40bf1
commit 2dc54719e5

@ -1,10 +1,15 @@
import { request } from '../api/request';
export enum GroupPanelType {
TEXT = 0,
GROUP = 1,
PLUGIN = 2,
}
import {
GroupPanelType,
GroupPanel,
GroupRole,
GroupInfo as IGroupInfo,
GroupBasicInfo,
GroupInvite,
} from 'tailchat-types';
export { GroupPanelType };
export type { GroupPanel, GroupRole, GroupBasicInfo, GroupInvite };
export const groupConfigNames = [
// 隐藏群组成员标识位
@ -35,75 +40,11 @@ export type GroupPanelFeature =
| 'subscribe' // 订阅事件变更状态,用于加入socket.io群组
| 'ack'; // 是否包含已读未读检查,如果包含的话需要同时开启 subscribe 特性
export interface GroupPanel {
/**
* 在群组中唯一, 是个objectId
*/
id: string;
/**
* 用于显示的面板名,形如: `com.msgbyte.xxx/panel`
*/
name: string;
parentId?: string;
type: GroupPanelType;
provider?: string; // 面板提供者
pluginPanelName?: string; // 插件面板名
meta?: Record<string, unknown>;
}
export interface GroupRole {
_id: string;
/**
* 权限组名
*/
name: string;
/**
* 拥有的权限, 是一段字符串
*/
permissions: string[];
}
export interface GroupInfo {
_id: string;
name: string;
avatar?: string;
owner: string;
description?: string;
members: GroupMember[];
panels: GroupPanel[];
roles: GroupRole[];
export interface GroupInfo extends Omit<IGroupInfo, 'config'> {
config?: Partial<Record<GroupConfigNames, any>>;
/**
* 所有人的权限列表
* 为群组中的最低权限
*/
fallbackPermissions: string[];
/**
* 被钉选的面板Id
*/
pinnedPanelId?: string;
}
/**
* 访客级别获取群组信息
*/
export interface GroupBasicInfo {
name: string;
avatar?: string;
owner: string;
memberCount: number;
backgroundImage?: string;
}
export interface GroupInvite {
code: string;
groupId: string;
creator: string;
expiredAt?: string;
usage: number;
usageLimit?: number;
}
/**
* 获取群组设置信息
*/

@ -1,6 +1,6 @@
{
"name": "tailchat-types",
"version": "1.0.3",
"version": "1.0.4",
"description": "Tailchat model types",
"main": "dist/cjs/index.js",
"module": "dist/esm/index.js",

@ -1,3 +1,4 @@
export * from './model/inbox';
export * from './model/user';
export * from './model/message';
export * from './model/group';

@ -0,0 +1,103 @@
export interface GroupInfo {
_id: string;
name: string;
avatar?: string;
owner: string;
description: string;
members: GroupMember[];
panels: GroupPanel[];
roles?: GroupRole[];
/**
* 所有人的权限列表
* 为群组中的最低权限
*/
fallbackPermissions: string[];
/**
* 群组的配置信息
*/
config: object;
}
export interface GroupRole {
_id: string;
/**
* 权限组名
*/
name: string;
/**
* 拥有的权限, 是一段字符串
*/
permissions: string[];
}
export interface GroupMember {
roles?: string[]; // 角色权限组id
userId: string;
/**
* 禁言到xxx 为止
*/
muteUntil?: string;
}
export enum GroupPanelType {
TEXT = 0,
GROUP = 1,
PLUGIN = 2,
}
export interface GroupPanel {
id: string; // 在群组中唯一, 可以用任意方式进行生成。这里使用ObjectId, 但不是ObjectId类型
name: string; // 用于显示的名称
parentId?: string; // 父节点id
/**
* 面板类型:
* 0 文本频道
* 1 面板分组
* 2 插件
*
* Reference: https://discord.com/developers/docs/resources/channel#channel-object-channel-types
*/
type: GroupPanelType;
provider?: string; // 面板提供者,为插件的标识,仅面板类型为插件时有效
pluginPanelName?: string; // 插件面板名, 如 com.msgbyte.webview/grouppanel
/**
* 面板的其他数据
*/
meta?: object;
/**
* 身份组或者用户的权限
* 如果没有设定则应用群组权限
*
* key 为身份组id或者用户id
* value 为权限字符串列表
*/
permissionMap?: Record<string, string[]>;
/**
* 所有人的权限列表
* 如果没有设定则应用群组权限
*/
fallbackPermissions?: string[];
}
/**
* 访客级别获取群组信息
*/
export interface GroupBasicInfo {
name: string;
avatar?: string;
owner: string;
memberCount: number;
backgroundImage?: string;
}
export interface GroupInvite {
code: string;
groupId: string;
creator: string;
expiredAt?: string;
usage: number;
usageLimit?: number;
}
Loading…
Cancel
Save