UNPKG

im-ui-mobile

Version:

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

130 lines (119 loc) 3.87 kB
// 消息类型 /** * 消息类型枚举 * 消息类型范围 */ export const MessageTypeRange = { NORMAL_MIN: 0, NORMAL_MAX: 9, STATUS_MIN: 10, STATUS_MAX: 19, TIP_MIN: 20, TIP_MAX: 29, ACTION_MIN: 40, ACTION_MAX: 49, RTC_PRIVATE_MIN: 100, RTC_PRIVATE_MAX: 199, RTC_GROUP_MIN: 200, RTC_GROUP_MAX: 299 }; /** * 是否普通消息 * @param {number} type - 消息类型 * @returns {boolean} 是否是普通消息 */ const isNormal = (type) => { return type >= MessageTypeRange.NORMAL_MIN && type <= MessageTypeRange.NORMAL_MAX; }; /** * 是否状态消息 * @param {number} type - 消息类型 * @returns {boolean} 是否是状态消息 */ const isStatus = (type) => { return type >= MessageTypeRange.STATUS_MIN && type <= MessageTypeRange.STATUS_MAX; }; /** * 是否提示消息 * @param {number} type - 消息类型 * @returns {boolean} 是否是提示消息 */ const isTip = (type) => { return type >= MessageTypeRange.TIP_MIN && type <= MessageTypeRange.TIP_MAX; }; /** * 是否操作交互类消息 * @param {number} type - 消息类型 * @returns {boolean} 是否是操作交互类消息 */ const isAction = (type) => { return type >= MessageTypeRange.ACTION_MIN && type <= MessageTypeRange.ACTION_MAX; }; /** * 是否单人通话信令 * @param {number} type - 消息类型 * @returns {boolean} 是否是单人通话信令 */ const isRtcPrivate = (type) => { return type >= MessageTypeRange.RTC_PRIVATE_MIN && type <= MessageTypeRange.RTC_PRIVATE_MAX; }; /** * 是否多人通话信令 * @param {number} type - 消息类型 * @returns {boolean} 是否是多人通话信令 */ const isRtcGroup = (type) => { return type >= MessageTypeRange.RTC_GROUP_MIN && type <= MessageTypeRange.RTC_GROUP_MAX; }; /** * 获取消息类型分类 * @param {number} type - 消息类型 * @returns {string} 消息类型分类名称 */ const getMessageCategory = (type) => { if (isNormal(type)) return 'normal'; if (isStatus(type)) return 'status'; if (isTip(type)) return 'tip'; if (isAction(type)) return 'action'; if (isRtcPrivate(type)) return 'rtc_private'; if (isRtcGroup(type)) return 'rtc_group'; return 'unknown'; }; /** * 验证消息类型是否有效 * @param {number} type - 消息类型 * @returns {boolean} 是否是有效的消息类型 */ const isValidMessageType = (type) => { return isNormal(type) || isStatus(type) || isTip(type) || isAction(type) || isRtcPrivate(type) || isRtcGroup(type); }; /** * 获取所有支持的消息类型范围 * @returns {Array} 消息类型范围描述对象数组 */ const getMessageTypeRanges = () => { return [ { category: 'normal', min: MessageTypeRange.NORMAL_MIN, max: MessageTypeRange.NORMAL_MAX, description: '普通消息' }, { category: 'status', min: MessageTypeRange.STATUS_MIN, max: MessageTypeRange.STATUS_MAX, description: '状态消息' }, { category: 'tip', min: MessageTypeRange.TIP_MIN, max: MessageTypeRange.TIP_MAX, description: '提示消息' }, { category: 'action', min: MessageTypeRange.ACTION_MIN, max: MessageTypeRange.ACTION_MAX, description: '操作交互类消息' }, { category: 'rtc_private', min: MessageTypeRange.RTC_PRIVATE_MIN, max: MessageTypeRange.RTC_PRIVATE_MAX, description: '单人通话信令' }, { category: 'rtc_group', min: MessageTypeRange.RTC_GROUP_MIN, max: MessageTypeRange.RTC_GROUP_MAX, description: '多人通话信令' } ]; }; export default { isNormal, isStatus, isTip, isAction, isRtcPrivate, isRtcGroup, getMessageCategory, isValidMessageType, getMessageTypeRanges };