UNPKG

im-ui-mobile

Version:

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

205 lines (204 loc) 3.98 kB
import type { RTC_STATE, MESSAGE_TYPE } from '../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; 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; } 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; }