UNPKG

use-on-demand

Version:
380 lines (324 loc) 11 kB
// import {privateConf} from '~/components/nim/3rd/nim_server_conf'; // import {RoomLogicClass} from '~/components/nim/im/chatroom/bz-util/room'; import Vue from 'vue'; declare global { interface Window { SDK: { Chatroom: { /** * 1.在这个方法中,调用了这个接口【https://wlnimsc1.netease.im/socket.io/1/?t=1587987426591】 * * 2.在这个SDK的WebSocket的消息返回中,会调用【https://dr.netease.im/1.gif?event=ws_connected&appkey=45c6af3c98409b18a84451215d0bdd6e&uid=hanshou101&os=web&session=&ver=75&type=chatroom&platform=chrome80】接口 */ getInstance(options: NimNS.SDK.ChatRoom_InitOptions): NimNS.SDK.ChatRoom_Instance; } }; // RoomLogicClass_OnWindow: RoomLogicClass, } namespace NimNS { interface BaseConfig_Type { appkey: string; url: string; chatroomList: string; chatroomAddr: string; } type Combined_BaseConfig_Type = BaseConfig_Type & { openSubscription: boolean; usePrivateEnv: undefined | 1 | 2; // privateConf: typeof privateConf; } type Emoji_Type = { file: string; } type EmojiList_Type = { [key: string]: { [key: string]: Emoji_Type; }; } type Pinup_Type = {}; type PinupList_Type = { [key: string]: Array<any> }; type EmojiConfig_Type = { emojiList?: EmojiList_Type;//表情列表 pinupList?: PinupList_Type;//贴图列表 callback?: (result: EmojiConfig_CbResultType) => void; imgpath?: string; // 图片根目录 width?: number; height?: number; } type EmojiConfig_CbResultType = { emoji: string; } type ConnectedMsg_Type = { chatroom: Link.RoomInfo; member: MemberType_Type, } interface Msg_BaseType { text: string; from: string; idClient: boolean; fromClientType: string; chatroomId: string; flow: string; status: string; resend: boolean; time: number; type: 'text' | 'custom' | 'notification' } // // 文字消息、自定义消息 interface TextOrCustom_Msg extends Msg_BaseType { content: string; custom?: string; fromNick: string; fromAvatar: string; userUpdateTime: number; } // // 系统消息 interface SysMsg_Type extends Msg_BaseType { attach: { to: Array<string>; // 存放,account账户ID的数组 type: 'blackMember' | 'unblackMember' | 'gagMember' | 'ungagMember' | 'addManager' | 'removeManager' | 'memberEnter' | 'memberExit' | 'addCommon' | 'removeCommon' | 'kickMember'; from: string; toNick: string[]; fromNick: string[]; }/* & Msg_BaseType['attach'] */; } // enum MemberNumberType { 'guest' = -2, 'common' = 0, 'owner' = 1, 'manager' = 2, 'restricted' = -1, } type MemberType_Type = { type: 'guest' | 'common' | 'owner' | 'manager' | 'restricted'; account: string; updateTime: number; enterTime: number; // 可能和游客相关 avatar: string; nick: string; valid: boolean; online: boolean; gaged: boolean; // 被临时禁言 tempMuted: boolean; tempMuteDuration: number; blacked: boolean; // 被放入黑名单 custom: string; } namespace Link { interface Data_Type { person: { // 用于,逐个将成员,以Key-Value的形式,存放进去。 [key: string]: MemberType_Type | undefined, }; roomInfo?: RoomInfo; } interface RoomInfo { id: string; name: string; custom: string; createTime: number; queuelevel: string; creator: string; onlineMemberNum: number; mute: boolean; announcement: string; broadcastUrl: string; } interface Base_Option_Type { appKey: string; id: number; // FIXME 这里,其实正统的数据,应该是【chatroomId】。只是之前的老代码,把它写作了 id ,这是一个错误。 chatroomAddresses?: Array<string>; // FIXME 这个,是一定要传的;但是老代码,把它拆成了两部分的拼接。 } interface Anonymous_Option_Type extends Base_Option_Type { chatroomNick: string; chatroomAvatar: string; isAnonymous?: true; } interface Logged_Option_Type extends Base_Option_Type { account: string; token: string; } enum DealCommand_TypeEnum { 'kickChatroomMember' = '0', // 踢出房间 'markChatroomGaglist' = '1', // 禁言 'markChatroomBlacklist' = '2', // 黑名单 'markChatroomManager' = '3', // 任命管理员 } /* enum CommandTypeE { 'kick' = '0', 'gag' = '1', 'black' = '2', 'admin' = '3', } */ } namespace SDK { type ChatRoom_ErrMessage = { message: string; } | undefined; type ChatRoom_CustomMessage_Type = { type: number; data: { value: any; } } type ChatRoom_ChatroomMembersInfo_Type = { members: Array<MemberType_Type> } type ChatRoom_DoneFn<T = {}> = (error: ChatRoom_ErrMessage, obj: T) => void; interface ChatRoom_InitOptions { appKey: string; account: string; token: string; // privateConf?: typeof privateConf; // 私有化配置文件 (WARN 此处,仅官方Demo的情况下,需要) chatroomId: number; chatroomAddresses: string[]; // onconnect(msg: NimNS.ConnectedMsg_Type): void; // onmsgs(msgs: Array<NimNS.TextOrCustom_Msg>): void; // onerror(error: string, obj: IndexedObj): void; // onwillreconnect(obj: IndexedObj): void; // ondisconnect(error: { code: 302 | 13003 | 403 | 'kicked' | 'logout'; reason: 'managerKick' | 'blacked'; message: string; }): void; // // 访客模式,可选项 isAnonymous?: boolean; chatroomNick?: string; // 游客模式下,是本地手动加的 } interface ChatRoom_Instance { account: string; // 同步显示图片 viewImageSync(cfg: { url: string; quality: number; thumbnail: { width: number, height: number, mode: 'cover' } }): string; /** * 发送文本 * @param {String} text 内容 * @param {String} custom 扩展字段json序列化{type:0} 0游客,1正常 2房主 3管理员 4受限制的 * @param {Function} callback 回调 * @return {void} */ sendText(cfg: { custom: string, text: string, done: ChatRoom_DoneFn<NimNS.TextOrCustom_Msg>, }): void; /** * 发送自定义消息 * @param {String} custom 扩展字段json序列化{type:0} 0游客,1正常 2房主 3管理员 4受限制的 * @param {Object} content 自定义消息内容 * @param {Function} callback 回调 * @return {void} */ sendCustomMsg(cfg: { custom: string, content: string, done: ChatRoom_DoneFn<NimNS.TextOrCustom_Msg>, }): void; /** * 获取聊天室成员 * @param {Boolean} guest true获取游客 false固定成员 * @param {number} time 上一个记录的时间戳 0为当前 * @param {boolean} onlyOnline * @param {number} limit 限制 * @param {Function} callback 回调 * @return {void} */ getChatroomMembers(cfg: { guest: boolean, time: number, onlyOnline: boolean, limit: number, done: ChatRoom_DoneFn<ChatRoom_ChatroomMembersInfo_Type>, }): void; /** * 获取历史消息 * @param {number} limit 限制 * @param {Function} callback 回调 * @return {void} */ getHistoryMsgs(cfg: { limit: number, done: ChatRoom_DoneFn<{ msgs: Array<NimNS.TextOrCustom_Msg> }>, }): void; /** * 踢人 * @param {string} account 账号 * @param {Function} callback 回调 * @return {void} */ kickChatroomMember(cfg: { account: string, done: Function, }): void; /** * 标记黑名单 * @param {string} account 账号 * @param {Boolean} isAdd 添加移除 * @param {Function} callback 回调 * @return {void} */ markChatroomBlacklist(cfg: { account: string, isAdd: boolean, done: ChatRoom_DoneFn, }): void; /** * 标记禁言名单 * @param {string} account 账号 * @param {Boolean} isAdd 添加移除 * @param {Function} callback 回调 * @return {void} */ markChatroomGaglist(cfg: { account: string, isAdd: boolean, done: ChatRoom_DoneFn, }): void; /** * 标记管理员 * @param {string} account 账号 * @param {Boolean} isAdd 添加移除 * @param {Function} callback 回调 * @return {void} */ markChatroomManager(cfg: { account: string, isAdd: boolean, done: Function, }): void; /** * 获取聊天室群成员信息 * @param {Array} account 需要获取信息的成员队列 * @param {Function} callback 回调方法 * @return {void} */ getChatroomMembersInfo(cfg: { accounts: Array<string>, done: ChatRoom_DoneFn<ChatRoom_ChatroomMembersInfo_Type>, }): void; /** * 清除聊天室实例 */ destroy(cfg: { done: ChatRoom_DoneFn<undefined>, }): void; } } } }