123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- import {
- emojiMap,
- emojiUrl
- } from './emojiMap';
- /** 传入message.element(群系统消息SystemMessage,群提示消息GroupTip除外)
- * content = {
- * type: 'TIMTextElem',
- * content: {
- * text: 'AAA[龇牙]AAA[龇牙]AAA[龇牙AAA]'
- * }
- *}
- **/
- // 群提示消息的含义 (opType)
- const GROUP_TIP_TYPE = {
- MEMBER_JOIN: 1,
- MEMBER_QUIT: 2,
- MEMBER_KICKED_OUT: 3,
- MEMBER_SET_ADMIN: 4,
- // 被设置为管理员
- MEMBER_CANCELED_ADMIN: 5,
- // 被取消管理员
- GROUP_INFO_MODIFIED: 6,
- // 修改群资料,转让群组为该类型,msgBody.msgGroupNewInfo.ownerAccount表示新群主的ID
- MEMBER_INFO_MODIFIED: 7 // 修改群成员信息
- }; // 解析小程序text, 表情信息也是[嘻嘻]文本
- export function parseText(message) {
- const renderDom = [];
- let temp = message.payload.text;
- let left = -1;
- let right = -1;
- while (temp !== '') {
- left = temp.indexOf('[');
- right = temp.indexOf(']');
- switch (left) {
- case 0:
- if (right === -1) {
- renderDom.push({
- name: 'span',
- text: temp
- });
- temp = '';
- } else {
- const _emoji = temp.slice(0, right + 1);
- if (emojiMap[_emoji]) {
- renderDom.push({
- name: 'img',
- src: emojiUrl + emojiMap[_emoji]
- });
- temp = temp.substring(right + 1);
- } else {
- renderDom.push({
- name: 'span',
- text: '['
- });
- temp = temp.slice(1);
- }
- }
- break;
- case -1:
- renderDom.push({
- name: 'span',
- text: temp
- });
- temp = '';
- break;
- default:
- renderDom.push({
- name: 'span',
- text: temp.slice(0, left)
- });
- temp = temp.substring(left);
- break;
- }
- }
- return renderDom;
- }
- // 解析图片消息
- export function parseImage(message) {
- const renderDom = [{
- name: 'image',
- // 这里默认渲染的是 1080P 的图片
- src: message.payload.imageInfoArray[0].url
- }];
- return renderDom;
- } // 解析视频消息
- export function parseVideo(message) {
- const renderDom = {
- name: 'video',
- src: message.payload.videoUrl
- };
- return renderDom;
- } // 解析语音消息
- export function parseAudio(message) {
- const renderDom = {
- name: 'audio',
- src: message.payload.url,
- second: message.payload.second === 0 ? 1 : message.payload.second
- };
- return renderDom;
- }
|