UNPKG

sim-sdk-web

Version:

Sim SDK for Web

250 lines (249 loc) 5.28 kB
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 {};