UNPKG

im-ui-mobile

Version:

A Vue3.0 + Typescript instant messaging component library for Uniapp

230 lines (207 loc) 3.97 kB
import type { RTC_STATE, MESSAGE_TYPE } from '../types/utils/enums.d.ts' /** * 通话模式类型 */ export type RtcMode = 'audio' | 'video' | 'voice' /** * RTC 信息接口 */ export interface RtcInfo { friend: Friend mode: RtcMode state: RTC_STATE isHost?: boolean } /** * 聊天 */ export interface Chat { id?: string | number targetId: number type: 'PRIVATE' | 'GROUP' showName: string headImage: string isDnd: boolean lastContent: string lastSendTime?: number unreadCount: number hotMinIdx: number readedMessageIdx: number messages: Message[] atMe: boolean atAll: boolean stored: boolean delete: boolean lastTimeTip?: number sendNickName?: string } /** * 消息 */ export interface Message { id?: number tmpId?: number type: number content: string sendTime?: number selfSend?: boolean status?: number sendNickName?: string atUserIds?: number[] sendId?: number recvId?: number groupId?: number receipt?: boolean receiptOk?: boolean readedCount?: number quoteMessage?: Message fileId?: string } /** * 好友信息接口 */ export interface Friend { id: number nickName: string headImage?: string online: boolean onlineWeb: boolean onlineApp: boolean isDnd: boolean deleted?: boolean remarkName?: string gender?: number signature?: string remarkNickName?: string showNickName?: string [key: string]: any } /** * 在线终端信息接口 */ export interface OnlineTerminal { userId: string | number terminals: number[] } /** * 菜单项 */ export interface MenuItem { key: string name: string icon?: string color?: string [key: string]: any } export interface WebRTCMessage { type: number content: string sendId: number selfSend?: boolean } export interface GroupMember { id?: number userId: number showNickName: string headImage?: string quit?: boolean [key: string]: any } /** * 群组信息接口 */ export interface Group { id: number ownerId: number isBanned?: boolean reason?: string name: string headImage: string isDnd: boolean quit?: boolean topMessage?: string memberCount?: number createTime?: number showGroupName: string headImageThumb?: string remarkGroupName?: string remarkNickName?: string notice?: string [key: string]: any } /** * 上传图片相应数据 */ export interface UploadImageResponse { originUrl: string thumbUrl: string [key: string]: any } /** * 发送消息项 */ export interface SubmitItem { type: MESSAGE_TYPE // 'text' | 'image' | 'file' content: string | ImageItem | FileItem atUserIds?: number[] } export interface ImageItem { fileId: number file: File url: string } export interface FileItem { fileId: number file: File } export interface ApiResponse<T = any> { data?: T code?: number message?: string success?: boolean timestamp?: number path?: string } // ----------------------------- // Recorder // ----------------------------- export interface RecorderError { errMsg: string; } export interface UploadRecorderFileResponse { code: number; data: string; message?: string; } export interface UploadRecorderFileResult { duration: number; url: string; } export interface RecorderFile { tempFilePath: string; } /** * 用户信息接口 */ export interface UserInfo { id: number nickName: string headImage: string headImageThumb?: string email?: string phone?: string gender?: number signature?: string isBanned?: boolean reason?: string userName?: string sex?: number online?: boolean [key: string]: any } export interface Response<T> { code: number message: string result: T success: boolean }