sim-sdk-web
Version:
Sim SDK for Web
250 lines (249 loc) • 5.28 kB
TypeScript
import { RequestApi } from '../constant/api';
import { GroupType, MessageType } from './enum';
import { HttpMethod } from '../utils/request';
import { MessageService } from '../api/message';
import { ConversationService } from '../api/conversation';
import { GroupService } from '../api/group';
import { UserService } from '../api/user';
export type ServiceTypes = {
user: UserService;
message: MessageService;
conversation: ConversationService;
group: GroupService;
};
export declare enum ServiceName {
MESSAGE = "message",
CONVERSATION = "conversation",
GROUP = "group",
USER = "user"
}
export interface Request {
url: RequestApi;
username?: string;
data: Record<string, any> | undefined;
method: HttpMethod;
}
export interface SseData {
ev: number;
dt: MessageItem[];
}
export interface ServerResponse<T = unknown> {
type?: MessageType;
code: number;
msg: string;
data: T;
timestamp?: number;
}
export type Pagination = {
offset: number;
count: number;
};
export type ConversationItem = {
id: number;
name: string;
groupType: GroupType;
avatar: string;
status: number;
latest: MessageItem;
unreadCount: number;
draftText: string;
custom: string;
groupMemberId: string;
};
export type HistoryMessageParam = {
groupId: number;
lastId: string;
size?: number;
};
export type LiveMessageParam = {
groupId: number;
};
export type ReqPageParam = {
pageNo?: number;
pageSize?: number;
};
export type MarkConversationReadParam = {
groupId?: number;
id?: number;
};
export type PageParam<T> = {
current: number;
pages: number;
size?: number;
total?: number;
records: T[];
};
interface AvatarMap {
[username: string]: string;
}
export type MessageItem = {
msgId: number;
username: string;
groupType: GroupType;
groupId: number;
replyMsgId: number;
clientMsgId: string;
recvId: string;
receiverName: string;
userId: number;
send: number;
to: number;
msgType: MessageType;
text?: string;
link?: string;
snapshot?: string;
createTime: number;
updateTime?: number;
status: number;
avatar?: string;
};
export interface GroupInfoVO {
/**
* 群名称
*/
name: string;
/**
* 聊天群类型: 0:一对一私聊 ,1:群聊,2:客服聊天
*/
groupType: GroupType;
createTime: number;
updateTime: number;
/**
* 创建人
*/
createBy: number;
/**
* 群头像
*/
avatar: string;
/**
* 群公告
*/
announcement: string;
/**
* 群二维码
*/
qrCode: string;
/**
* pin消息列表
*/
pinMsg: string;
/**
* 群成员人数
*/
membersCount: number;
memberVOList: GroupMemberVO[];
/**
* 人数上限
*/
memberLimit: number;
imagesCount: number;
videosCount: number;
filesCount: number;
linksCount: number;
gifsCount: number;
/**
* 群状态: 0:正常,1禁止发言,2解散
*/
status: number;
}
export interface GroupMemberVO {
username: string;
/**
* 群成员状态: 0:正常, 1:禁言, 2:删除
*/
status: number;
/**
* 群身份: 0: owner, 1: admin, 2: user
*/
identity: number;
remark: string;
/**
* 最后查看消息的时间
*/
lastSeenTime: number;
/**
* 是否已经添加了好友
*/
contact: boolean;
}
export interface HistoryMessageResponse {
groupChatList: MessageItem[];
groupId: number;
latest: MessageItem;
avatarMap: AvatarMap;
userId: number | null;
}
export interface MessagesListLoadedPayload {
messages: MessageItem[];
groupId: number;
lastId: string;
error: string;
}
export interface ActiveConversationSyncPayload {
conversationId: number;
lastLocalMessageId?: number;
serverLatestMessageId: number;
timestamp: number;
}
export interface LatestMessagesUpdateResponse {
ttl: number;
groupChatIds: Record<number, number>;
}
export interface GroupPermission {
id?: number;
/**
* 权限状态: 0: 启用,1: 不启用
*/
status?: number;
/**
* 权限描述
*/
description?: string;
/**
* 权限值
*/
value?: number;
}
export interface UpdateGroupPermission {
/** 群id */
groupId: number;
/** 更新的权限列表 */
permissions: GroupPermission[];
}
export interface UpdateGroupMemberPermission {
/** 群id */
groupId: number;
/**
* 群成员id
*/
targetMemberId: number;
/** 更新的权限列表 */
permissions: GroupPermission[];
}
export type SystemMessageResponse = {
groupId: number;
type: number;
};
export interface KickGroupMemberParams {
/** 群id */
groupId: number;
/**
* 0 :踢人
* 1:拉黑并踢人
*/
kickType: number;
/** 更新的权限列表 */
usernames: string[];
}
export interface MuteMembersParams {
/** 群id */
groupId: number;
/**
* 0: 禁言 ,1:解除禁言
*/
type: number;
/** 更新的权限列表 */
usernames: string[];
}
export {};