@22g/netease-im-web-sdk
Version:
typescript netease-im-web-sdk
125 lines (117 loc) • 4.29 kB
TypeScript
import { NIMMessage, NIMSceneType } from './Message';
import { NIMError } from './Basic';
/**
* 系统通知类型
* - [相关文档](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/SystemMessage.html#.type)
*/
export const enum NIMSystemMessageType {
addFriend = 'addFriend',
applyFriend = 'applyFriend',
passFriendApply = 'passFriendApply',
rejectFriendApply = 'rejectFriendApply',
deleteFriend = 'deleteFriend',
teamInvite = 'teamInvite',
rejectTeamInvite = 'rejectTeamInvite',
applyTeam = 'applyTeam',
rejectTeamApply = 'rejectTeamApply',
deleteMsg = 'deleteMsg',
custom = 'custom',
}
/**
* 系统通知的种类
* - [相关文档](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/SystemMessage.html#.category)
*/
export const enum NIMSystemMessageCategory {
team = 'team',
friend = 'friend',
}
/**
* 系统通知的状态
* - [相关文档](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/SystemMessage.html#.state)
*/
export const enum NIMSystemMessageState {
/** 未处理状态 */
init = 'init',
/** 已通过 */
passed = 'passed',
/** 已拒绝 */
rejected = 'rejected',
/** 错误 */
error = 'error',
}
/**
* 系统通知
* - [相关文档](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/SystemMessage.html)
* - 不同类型的系统通知结构都有一些差异!!
*/
export interface NIMSystemMessage {
/** 时间戳(ms) */
time: number;
/** 系统通知类型 */
type: NIMSystemMessageType;
/** 系统通知的来源, 账号或者群ID */
from: string;
/** 系统通知的目标, 账号或者群ID */
to: string;
/** 内建系统通知的 idServer */
idServer: string;
/** 内建系统通知是否已读 */
read?: boolean;
/** 内建系统通知的种类 */
category?: NIMSystemMessageCategory;
/** 内建系统通知的state */
state?: NIMSystemMessageState;
error?: NIMError;
/**
* 内建系统通知的本地自定义扩展字段
* - 在支持数据库时可以调用更新本地系统通知来更新此字段, 此字段只会被更新到本地数据库, 不会被更新到服务器上
*/
localCustom?: string;
/** 内建系统通知的附言 */
ps?: string;
/** 内建系统通知的附加信息, 参考系统通知类型来查看不同类型的系统通知对应的附加信息 */
attach?: {
/** 附加消息的扩展字段, 可能没有 */
custom?: string;
};
/** 自定义系系统通知的场景, 参考消息场景 */
scene?: NIMSceneType;
/** 自定义系统通知的内容 */
content?: string;
/** 是否需要推送 */
isPushable?: boolean;
/** 自定义系统通知的推送文案, 仅对接收方为iOS设备有效 */
apnsText?: string;
/**
* 定义系统通知的推送属性
* - 推荐使用JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
*/
pushPayload?: string;
/** 是否需要推送昵称 */
needPushNick: boolean;
/**
* 自定义系统通知是否只发送给在线用户
* - `true` 时只发送给在线用户, 适合发送即时通知, 比如正在输入
* - `false` 时假如目标用户或群不在线, 会在其上线后推送过去。
* - 该参数只对点对点自定义系统通知有效, 对群自定义系统通知无效, 群自定义系统通知只会发给在线的群成员, 不会存离线。
*/
sendToOnlineUsersOnly?: boolean;
/** 自定义系统通知是否抄送 */
cc?: boolean;
}
/** 对方撤回消息的系统通知 */
export interface NIMSystemMessageDeleteMsg extends NIMSystemMessage {
type: NIMSystemMessageType.deleteMsg;
/** 删除消息的 IdClient */
deletedIdClient: string;
/** 删除消息的 idServer */
deletedIdServer: string;
/** 删除消息的时间 */
deletedMsgTime: number;
/** 删除消息的对方名 */
deletedMsgFromNick: string;
/** 被删除消息的部分字段 */
msg: Pick<NIMMessage, 'scene' | 'from' | 'to' | 'idClient' | 'idServer' | 'time' | 'fromNick' | 'target' | 'sessionId' | 'flow'>;
/** 未知用途 */
opeAccount: string;
}