im-ui-mobile
Version:
A Vue3.0 + Typescript instant messaging component library for Uniapp
230 lines (207 loc) • 3.97 kB
text/typescript
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
}