thunbu-im-sdk
Version:
thunbu IM JSSDK
309 lines (308 loc) • 10.3 kB
TypeScript
import { AnyFunction, IMMetaTypes } from "./Meta.i";
import { UtilTypes } from "./Util.i";
import { ChatTypes, GroupTypes, MessageTypes, UserTypes } from "./Request.i";
export declare type Diff<T extends keyof any, U extends keyof any> = ({
[]: P;
} & {
[]: never;
} & {
[]: never;
})[T];
export declare type Overwrite<T, U> = Pick<T, Diff<keyof T, keyof U>> & U;
export declare namespace SIMTypes {
/** 会话类型 */
enum ChatTypeEnum {
SingleChat = 0,
GroupChat = 1,
SubscribeChat = 2,
SubscribeBoxChat = 10
}
interface SIMProps {
debug?: boolean;
apiBaseUrl: string;
serverip: string;
}
interface LoginParams {
appId: string;
userId: string;
userSig: string;
appversion: string;
bundleId?: string;
}
/** 发送消息的domain字段 */
interface SendMsgDomainType {
reply?: {
ancestor: string;
replyId: string;
abstract: string;
};
}
/** 发送文本消息体的内容 */
interface SendTextMsgContentType {
text: string;
/** @ 的人员列表 */
members?: string[];
}
/** 单张图片的内容 */
interface SendImageItemType {
/** 0-原图 1-缩略大图 2-缩略小图 */
type: 0 | 1 | 2;
url: string;
size: number;
width: number;
height: number;
}
/** 发送图片消息体的内容 */
interface SendPicMsgContentType {
/** 0-JPG,1-PNG,225-未知类型 */
format: 0 | 1 | 255;
imageList: SendImageItemType[];
}
/** 发送音频文件消息体的内容 */
interface SendAudioMsgContentType {
size: number;
/** 类型 */
format: number;
/** 时长 - 秒 */
duration: number;
/** 下载地址 */
downUrl: string;
}
/** 发送视频文件消息体的内容 */
interface SendVideoMsgContentType {
/** 视频地址 */
videoUrl: string;
/** 视频大小 - b */
videoSize: number;
/** 视频时长 - 毫秒 */
duration: number;
/** 0-AVI,1-RM,2-RMVB,3-WMV,4-MP4,225-未知类型 */
videoFormat: 0 | 1 | 2 | 3 | 4 | 255;
/** 封面地址 */
coverUrl: string;
/** 封面宽度 - px */
coverWidth: number;
/** 封面高度 - px */
coverHeight: number;
/** 封面大小 - kb */
coverSize: number;
/** 封面类型,0-JPG,1-PNG,225-未知类型 */
coverFormat: 0 | 1 | 255;
}
/** 发送文件消息体的内容 */
interface SendFileMsgContentType {
/** 文件类型 */
format: UtilTypes.FileFormatEnum;
/** 文件大小 - b */
size: number;
/** 下载地址 */
downUrl: string;
/** 文件名称 */
filename: string;
}
/** 发送合并转发消息体的内容 */
interface SendMergeForwardContentType {
title: string;
content: string;
ids: string[];
chatType: ChatTypeEnum;
}
/** 发送自定义表情消息体的内容 */
interface SendCustomEmojiContentType {
/** 表情的MD */
imgMd: string;
/** 表情地址 */
imgUrl: string;
/** 表情大小 */
size: number;
/** 表情宽度 */
width: number;
/** 表情高度 */
height: number;
}
/** 发送自定义消息体的内容 */
interface SendExtraMsgContentType {
data: string;
}
/** 发送消息的message字段类型释义 */
type SendMsgContentTypes = {
[]: SendTextMsgContentType;
[]: SendPicMsgContentType;
[]: SendAudioMsgContentType;
[]: SendVideoMsgContentType;
[]: SendFileMsgContentType;
[]: SendMergeForwardContentType;
[]: SendCustomEmojiContentType;
[]: SendExtraMsgContentType;
};
type SendMsgContentType<T extends IMMetaTypes.SendNormalMsgTypeEnum> = SendMsgContentTypes[T];
/** 发送消息的字段 */
interface SendMsgItem<T extends IMMetaTypes.SendNormalMsgTypeEnum> {
/** 接收者 */
receiver: string;
/** 消息内容 */
message: SendMsgContentType<T>;
/** 安全类型,0-普通,1-密聊 */
securityType: 0 | 1;
/** 会话类型 */
chatType: ChatTypeEnum;
/** 是否跨域 */
cross: 0 | 1;
/** 消息类型 */
type: T;
/** 消息ID */
packetId?: string;
/** 消息扩展字段 */
domain?: SendMsgDomainType;
/** 发送时间 */
time?: number;
/** 群类型,可选值[0:私密群,1:公开群,2:讨论组] */
groupType?: 0 | 1 | 2;
/** 是否有离线推送 */
offlinePush?: boolean;
/** 离线推送内容 */
offlinePushInfo?: string;
}
/** 已读消息的参数类型 */
interface ReadMsgParamsType {
/** 已读的消息 */
id: string;
/** 会话类型 */
chatType: ChatTypeEnum;
/** 密聊类型 */
securityType: 0 | 1;
/** 是否跨域 */
cross: 0 | 1;
/** 接收者 */
receiver: string;
/** 时间 */
time?: number;
}
/** 撤回消息方法的参数 */
interface RevocationMsgParamsType {
/** 撤回的消息 */
id: string;
/** 会话类型 */
chatType: ChatTypeEnum;
/** 密聊类型 */
securityType: 0 | 1;
/** 是否跨域 */
cross: 0 | 1;
/** 接受者 */
receiver: string;
/** 时间 */
time?: number;
}
/** 获取消息已读状态的参数 */
interface FetchMsgReadParamsType {
/** 已读的消息 */
id: string;
/** 会话类型 */
chatType: ChatTypeEnum;
/** 密聊类型 */
securityType: 0 | 1;
/** 是否跨域 */
cross: 0 | 1;
/** 接受者 */
receiver: string;
/** 消息类型 */
msgType: IMMetaTypes.MsgTypeEnum;
/** 时间 */
time?: number;
}
/** 删除消息的参数 */
interface DeleteMsgParamsType {
/** 删除的消息 */
id: string;
/** 会话类型 */
chatType: ChatTypeEnum;
/** 密聊类型 */
securityType: 0 | 1;
/** 是否跨域 */
cross: 0 | 1;
/** 接受者 */
receiver: string;
/** 删除类型 0-删除自己的(只影响自己),1-删除所有人(影响所有人) */
delType?: 0 | 1;
/** 时间 */
time?: number;
}
interface GetOffLineMsgParamsType {
/** 上次同步时间 */
lastMsgTime?: number;
/** 登陆时间 */
loginTime?: number;
/** 后台消息id,最开始一条id */
tId?: string;
/** 查询类型,0单聊,1群聊,2指令 */
queryType: 0 | 1 | 2;
}
enum VVCEventMethod {
uCreate = "uCreate",
uBusy = "uBusy",
uCancel = "uCancel",
uAccept = "uAccept",
uHangUp = "uHangUp",
uRefuse = "uRefuse",
heartBeat = "heartBeat",
uChange = "uChange",
uHeartBeat = "uHeartBeat",
gCreate = "gCreate",
gHangUp = "gHangUp",
gAccept = "gAccept",
gRefuse = "gRefuse",
gInvite = "gInvite",
gJoin = "gJoin",
hangUp = "hangUp"
}
interface SendVVCEventParams {
sender: string;
method: VVCEventMethod;
cross: 0 | 1;
conId?: string;
communicateType?: number;
version?: string;
overTimes?: number;
receiver?: string;
uniqueId?: string;
}
interface SendInitMessageCountParams {
chatId: string;
chatType: SIMTypes.ChatTypeEnum;
securityType: 0 | 1;
time?: number;
}
}
export interface SIMInterface {
Version?: string;
utils: {
getGuid: (x?: number) => string;
};
login: (params: SIMTypes.LoginParams) => Promise<string>;
logout: () => Promise<void>;
addEventListener: (eventName: string, callback: AnyFunction) => void;
removeEventListener: (eventName?: string, callback?: AnyFunction) => void;
testOnline: (delay?: number) => void;
/** 发送基础消息 */
sendMsg<T extends IMMetaTypes.SendNormalMsgTypeEnum>(params: SIMTypes.SendMsgItem<T>): Promise<string>;
/** 已读消息 */
readMsg(params: SIMTypes.ReadMsgParamsType): Promise<string>;
/** 撤回消息 */
revocationMsg(params: SIMTypes.RevocationMsgParamsType): Promise<string>;
/** 获取消息已读状态 */
fetchMsgReadState(params: SIMTypes.FetchMsgReadParamsType): Promise<string>;
/** 删除消息 */
deleteMsg(params: SIMTypes.DeleteMsgParamsType): Promise<string>;
/** 获取离线消息 */
getOfflineMsg(params: SIMTypes.GetOffLineMsgParamsType): Promise<string>;
/** 初始化会话消息统计数量 */
initMessageCount(params: SIMTypes.SendInitMessageCountParams): Promise<string>;
/** 群组相关的接口模块 */
Group: GroupTypes.GroupInterfaceType;
/** 人员用户相关的接口模块 */
User: UserTypes.UserInterfaceType;
/** 会话相关的接口模块 */
Chat: ChatTypes.ChatInterfaceType;
/** 消息相关的接口模块 */
Message: MessageTypes.MessageInterfaceType;
}