You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/shared/model/group.ts

67 lines
1.1 KiB
TypeScript

import { request } from '../api/request';
export enum GroupPanelType {
TEXT = 0,
GROUP = 1,
PLUGIN = 2,
}
export interface GroupMember {
role: string; // 角色
userId: string;
}
export interface GroupPanel {
id: string; // 在群组中唯一
name: string;
parentId?: string;
type: GroupPanelType;
}
export interface GroupInfo {
_id: string;
name: string;
avatar?: string;
creator: string;
members: GroupMember[];
panels: GroupPanel[];
}
export interface GroupInvite {
code: string;
groupId: string;
expiredAt?: Date;
}
/**
* 创建群组
* @param name 群组名
* @param panels 初始面板
*/
export async function createGroup(
name: string,
panels: GroupPanel[]
): Promise<GroupInfo> {
const { data } = await request.post('/api/group/createGroup', {
name,
panels,
});
return data;
}
/**
* 创建群组邀请码
* 邀请码默认 7天有效期
* @param groupId 群组id
*/
export async function createGroupInviteCode(
groupId: string
): Promise<GroupInvite> {
const { data } = await request.post('/api/group/invite/createGroupInvite', {
groupId,
});
return data;
}