Commit 665ae7bc authored by 罗超's avatar 罗超

修复BUG

parent c5a1a5e2
...@@ -20,8 +20,8 @@ let config = { ...@@ -20,8 +20,8 @@ let config = {
// 我的手机图标 // 我的手机图标
myPhoneIcon: 'http://yx-web.nos.netease.com/webdoc/h5/im/my-phone.png', myPhoneIcon: 'http://yx-web.nos.netease.com/webdoc/h5/im/my-phone.png',
// 本地消息显示数量,会影响性能 // 本地消息显示数量,会影响性能
localMsglimit: 36, localMsglimit: 10,
useDb: false useDb: true
} }
const env = 'online' const env = 'online'
......
...@@ -299,7 +299,7 @@ ipc.on('reconnect', function(event) { ...@@ -299,7 +299,7 @@ ipc.on('reconnect', function(event) {
ipc.on('loginSuccess', function(event, userInfo) { ipc.on('loginSuccess', function(event, userInfo) {
initNIM(userInfo.ImAccount, userInfo.ImToken) initNIM(userInfo.ImAccount, userInfo.ImToken)
registScrollerHotKey() registScrollerHotKey()
getScrollerhotWindows() //getScrollerhotWindows()
global.LOGINUSER = userInfo global.LOGINUSER = userInfo
getNewMsgWindows() getNewMsgWindows()
getMainWinodw(0) getMainWinodw(0)
...@@ -454,7 +454,7 @@ ipc.on('openSystemNotice', function(event, sessionid) { ...@@ -454,7 +454,7 @@ ipc.on('openSystemNotice', function(event, sessionid) {
show: false, show: false,
width: 320, width: 320,
height: 190, height: 190,
alwaysOnTop: true, alwaysOnTop: false,
focusable: false, focusable: false,
icon: windowIcon icon: windowIcon
}) })
...@@ -715,7 +715,7 @@ ipc.on('send-file', function(event, obj) { ...@@ -715,7 +715,7 @@ ipc.on('send-file', function(event, obj) {
} }
}) })
}) })
ipc.on('read-clip', function (event) { ipc.on('read-clip', function(event) {
const rawFilePath = clipboard.readBuffer('FileNameW').toString('ucs2'); const rawFilePath = clipboard.readBuffer('FileNameW').toString('ucs2');
let filePath = rawFilePath.replace(new RegExp(String.fromCharCode(0), 'g'), ''); let filePath = rawFilePath.replace(new RegExp(String.fromCharCode(0), 'g'), '');
if (filePath && filePath.length > 0) { if (filePath && filePath.length > 0) {
...@@ -950,6 +950,7 @@ let getNoticeWindows = function() { ...@@ -950,6 +950,7 @@ let getNoticeWindows = function() {
}) })
} }
noticeWindows.loadURL(noticeUrl) noticeWindows.loadURL(noticeUrl)
mainWindow.setFocusable(true)
noticeWindows.setMenu(null) noticeWindows.setMenu(null)
noticeWindows.once('ready-to-show', () => { noticeWindows.once('ready-to-show', () => {
noticeWindows.show() noticeWindows.show()
......
...@@ -331,12 +331,13 @@ export default { ...@@ -331,12 +331,13 @@ export default {
} else if (/^team-/.test(sessionId)) { } else if (/^team-/.test(sessionId)) {
var teamMembers = this.$store.state.teamMembers[this.to]; var teamMembers = this.$store.state.teamMembers[this.to];
if (this.teamInfo) { if (this.teamInfo) {
if ( // if (
teamMembers === undefined || // teamMembers === undefined ||
teamMembers.length < this.teamInfo.memberNum // teamMembers.length < this.teamInfo.memberNum
) { // ) {
this.$store.dispatch("getTeamMembers", this.to); // console.log('...............')
} // this.$store.dispatch("getTeamMembers", this.to);
// }
if (this.teamInfo) { if (this.teamInfo) {
// teamInfo中的人数为初始获取的值,在人员增减后不会及时更新,而teamMembers在人员增减后同步维护的人员信息 // teamInfo中的人数为初始获取的值,在人员增减后不会及时更新,而teamMembers在人员增减后同步维护的人员信息
var members = var members =
...@@ -395,15 +396,16 @@ export default { ...@@ -395,15 +396,16 @@ export default {
} else { } else {
this.lstShowData.lastMsgShow = ""; this.lstShowData.lastMsgShow = "";
} }
//
} }
if(msgs.length>0) if(msgs.length>0)
this.lstTimer=msgs[msgs.length-1].time this.lstTimer=msgs[msgs.length-1].time
if(this.scene=='team'){ if(this.scene=='team'){
msgs=msgs.filter(x=>{ // msgs=msgs.filter(x=>{
if(x.type!='notification' ||(x.type=='notification' && !x.attach.team.custom)) // if(x.type!='notification' ||(x.type=='notification' && !x.attach.team.custom))
return x // return x
return; // return;
}) // })
} }
// console.log(msgs) // console.log(msgs)
return msgs; return msgs;
...@@ -885,6 +887,7 @@ export default { ...@@ -885,6 +887,7 @@ export default {
height: 46px; height: 46px;
line-height: 46px; line-height: 46px;
padding-left: 20px; padding-left: 20px;
padding-right: 50px;
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
position: relative; position: relative;
} }
......
...@@ -408,6 +408,7 @@ export default { ...@@ -408,6 +408,7 @@ export default {
callbackTeam:this.callBackTeam callbackTeam:this.callBackTeam
}); });
}else{ }else{
console.log('in start...........',new Date())
this.$store.dispatch("sendMsg", { this.$store.dispatch("sendMsg", {
type: "text", type: "text",
scene: this.scene, scene: this.scene,
......
...@@ -340,7 +340,26 @@ export default { ...@@ -340,7 +340,26 @@ export default {
this.atIds=session.atId this.atIds=session.atId
session.atId=null session.atId=null
} }
if (session.scene === "team") {
var teamMembers = this.$store.state.teamMembers[session.to];
let teamInfo = this.$store.state.teamlist.find(team => {
return team.teamId === this.currentSession.to;
});
if (teamInfo) {
if (
teamMembers === undefined ||
teamMembers.length < teamInfo.memberNum
) {
this.$store.dispatch("getTeamMembers", session.to);
}
}
}
this.$store.dispatch("setCurrSession", session.id) this.$store.dispatch("setCurrSession", session.id)
this.$store.dispatch("getHistoryMsgs", {
scene: session.scene,
to: session.to
});
} }
}, },
clearAtMe(){ clearAtMe(){
...@@ -687,10 +706,14 @@ export default { ...@@ -687,10 +706,14 @@ export default {
} else { } else {
this.$electron.ipcRenderer.send("newMessage", []); this.$electron.ipcRenderer.send("newMessage", []);
} }
if (!this.$electron.remote.getCurrentWindow().isFocused()) { try {
if (this.calcUnRead(this.newMsgList, unreadList)) { if (!this.$electron.remote.getCurrentWindow().isFocused()) {
this.$electron.remote.getCurrentWindow().flashFrame(true); if (this.calcUnRead(this.newMsgList, unreadList)) {
this.$electron.remote.getCurrentWindow().flashFrame(true);
}
} }
} catch (error) {
} }
......
...@@ -6,130 +6,138 @@ import config from '../../configs/index' ...@@ -6,130 +6,138 @@ import config from '../../configs/index'
import pageUtil from '../../utils/page' import pageUtil from '../../utils/page'
import util from '../../utils/index' import util from '../../utils/index'
import store from '../' import store from '../'
import {onFriends, onSyncFriendAction} from './friends' import { onFriends, onSyncFriendAction } from './friends'
import {onRobots} from './robots' import { onRobots } from './robots'
import {onBlacklist, onMarkInBlacklist} from './blacks' import { onBlacklist, onMarkInBlacklist } from './blacks'
import {onMyInfo, onUserInfo} from './userInfo' import { onMyInfo, onUserInfo } from './userInfo'
import {onSessions, onUpdateSession} from './session' import { onSessions, onUpdateSession } from './session'
import {onRoamingMsgs, onOfflineMsgs, onMsg, onMutelist, onMarkInMutelist} from './msgs' import { onRoamingMsgs, onOfflineMsgs, onMsg, onMutelist, onMarkInMutelist } from './msgs'
import {onSysMsgs, onSysMsg, onSysMsgUnread, onCustomSysMsgs} from './sysMsgs' import { onSysMsgs, onSysMsg, onSysMsgUnread, onCustomSysMsgs } from './sysMsgs'
import { onTeams, onSynCreateTeam, onCreateTeam, onUpdateTeam, onTeamMembers, onUpdateTeamMember, onAddTeamMembers, onRemoveTeamMembers, onUpdateTeamManagers, onDismissTeam, onUpdateTeamMembersMute, onTeamMsgReceipt} from './team' import { onTeams, onSynCreateTeam, onCreateTeam, onUpdateTeam, onTeamMembers, onUpdateTeamMember, onAddTeamMembers, onRemoveTeamMembers, onUpdateTeamManagers, onDismissTeam, onUpdateTeamMembersMute, onTeamMsgReceipt } from './team'
const SDK = require('../../sdk/NIM_Web_SDK_v6.1.0') const SDK = require('../../sdk/NIM_Web_SDK_v6.1.0')
// 重新初始化 NIM SDK // 重新初始化 NIM SDK
export function initNimSDK({ state, commit, dispatch }, loginInfo) { export function initNimSDK({ state, commit, dispatch }, loginInfo) {
if (state.nim) { if (state.nim) {
state.nim.disconnect() state.nim.disconnect()
} }
dispatch('showLoading') dispatch('showLoading')
// 初始化SDK // 初始化SDK
window.nim = state.nim = SDK.NIM.getInstance({ window.nim = state.nim = SDK.NIM.getInstance({
debug: false, debug: false,
appKey: config.appkey, appKey: config.appkey,
account: loginInfo.uid, account: loginInfo.uid,
token: loginInfo.sdktoken, token: loginInfo.sdktoken,
db: config.useDb, db: config.useDb,
// logFunc: new SDK.NIM.LoggerPlugin({ // logFunc: new SDK.NIM.LoggerPlugin({
// url: '/webdemo/h5/getlogger', // url: '/webdemo/h5/getlogger',
// level: 'info' // level: 'info'
// }), // }),
syncSessionUnread: true, syncSessionUnread: true,
syncRobots: true, syncRobots: true,
autoMarkRead: true, // 默认为true autoMarkRead: true, // 默认为true
onconnect: function onConnect (event) { onconnect: function onConnect(event) {
if (loginInfo) { if (loginInfo) {
// 连接上以后更新uid // 连接上以后更新uid
commit('updateUserUID', loginInfo) commit('updateUserUID', loginInfo)
commit('updateNetError',false) commit('updateNetError', false)
console.log('链接完成......') console.log('链接完成......')
} }
}, },
onerror: function onError (event) { onerror: function onError(event) {
commit('updateNetError',true) commit('updateNetError', true)
}, },
onwillreconnect: function onWillReconnect() { onwillreconnect: function onWillReconnect() {
commit('updateNetError',true) commit('updateNetError', true)
console.log('尝试中.........') console.log('尝试中.........')
}, },
ondisconnect: function onDisconnect (error) { ondisconnect: function onDisconnect(error) {
switch (error.code) { switch (error.code) {
// 账号或者密码错误, 请跳转到登录页面并提示错误 // 账号或者密码错误, 请跳转到登录页面并提示错误
case 302: case 302:
pageUtil.turnPage('帐号或密码错误', 'login') pageUtil.turnPage('帐号或密码错误', 'login')
break break
// 被踢, 请提示错误后跳转到登录页面 // 被踢, 请提示错误后跳转到登录页面
case 'kicked': case 'kicked':
let map = { let map = {
PC: '电脑版', PC: '电脑版',
Web: '网页版', Web: '网页版',
Android: '手机版', Android: '手机版',
iOS: '手机版', iOS: '手机版',
WindowsPhone: '手机版' WindowsPhone: '手机版'
} }
let str = error.from let str = error.from
let errorMsg = `你的帐号于${util.formatDate(new Date())}${(map[str] || '其他端')}踢出下线,请确定帐号信息安全!` let errorMsg = `你的帐号于${util.formatDate(new Date())}${(map[str] || '其他端')}踢出下线,请确定帐号信息安全!`
pageUtil.turnPage(errorMsg, 'login') pageUtil.turnPage(errorMsg, 'login')
break break
default: default:
break break
} }
}, },
// // 多端登录 // // 多端登录
// onloginportschange: onLoginPortsChange, // onloginportschange: onLoginPortsChange,
// 用户关系及好友关系 // 用户关系及好友关系
onblacklist: onBlacklist, onblacklist: onBlacklist,
onsyncmarkinblacklist: onMarkInBlacklist, onsyncmarkinblacklist: onMarkInBlacklist,
onmutelist: onMutelist, onmutelist: onMutelist,
onsyncmarkinmutelist: onMarkInMutelist, onsyncmarkinmutelist: onMarkInMutelist,
onfriends: onFriends, onfriends: onFriends,
onsyncfriendaction: onSyncFriendAction, onsyncfriendaction: onSyncFriendAction,
// 机器人 // 机器人
onrobots: onRobots, onrobots: onRobots,
// 用户名片 - actions/userInfo // 用户名片 - actions/userInfo
onmyinfo: onMyInfo, onmyinfo: onMyInfo,
onupdatemyinfo: onMyInfo, onupdatemyinfo: onMyInfo,
onusers: onUserInfo, onusers: onUserInfo,
onupdateuser: onUserInfo, onupdateuser: onUserInfo,
// // 群组 // // 群组
onteams: onTeams, onteams: onTeams,
onsynccreateteam: onSynCreateTeam, onsynccreateteam: onSynCreateTeam,
syncTeams: true, syncTeams: true,
onteammembers: onTeamMembers, onteammembers: onTeamMembers,
onCreateTeam: onCreateTeam, onCreateTeam: onCreateTeam,
onDismissTeam: onDismissTeam, onDismissTeam: onDismissTeam,
onUpdateTeam: onUpdateTeam, onUpdateTeam: onUpdateTeam,
onAddTeamMembers: onAddTeamMembers, onAddTeamMembers: onAddTeamMembers,
onRemoveTeamMembers: onRemoveTeamMembers, onRemoveTeamMembers: onRemoveTeamMembers,
onUpdateTeamManagers: onUpdateTeamManagers, onUpdateTeamManagers: onUpdateTeamManagers,
onupdateteammember: onUpdateTeamMember, onupdateteammember: onUpdateTeamMember,
onUpdateTeamMembersMute: onUpdateTeamMembersMute, onUpdateTeamMembersMute: onUpdateTeamMembersMute,
onTeamMsgReceipt: onTeamMsgReceipt, onTeamMsgReceipt: onTeamMsgReceipt,
// // 会话 // // 会话
onsessions: onSessions, onsessions: onSessions,
onupdatesession: onUpdateSession, onupdatesession: onUpdateSession,
// // 消息 // // 消息
onroamingmsgs: onRoamingMsgs, onroamingmsgs: onRoamingMsgs,
onofflinemsgs: onOfflineMsgs, onofflinemsgs: onOfflineMsgs,
onmsg: onMsg, onmsg: onMsg,
// // 系统通知 // // 系统通知
onsysmsg: onSysMsg, onsysmsg: onSysMsg,
onofflinesysmsgs: onSysMsgs, onofflinesysmsgs: onSysMsgs,
onupdatesysmsg: onSysMsg, // 通过、拒绝好友申请会收到此回调 onupdatesysmsg: onSysMsg, // 通过、拒绝好友申请会收到此回调
onsysmsgunread: onSysMsgUnread, onsysmsgunread: onSysMsgUnread,
onupdatesysmsgunread: onSysMsgUnread, onupdatesysmsgunread: onSysMsgUnread,
onofflinecustomsysmsgs: onCustomSysMsgs, onofflinecustomsysmsgs: onCustomSysMsgs,
oncustomsysmsg: onCustomSysMsgs, oncustomsysmsg: onCustomSysMsgs,
// // 同步完成 // // 同步完成
onsyncdone: function onSyncDone () { onsyncdone: function onSyncDone() {
dispatch('hideLoading') dispatch('hideLoading')
// 说明在聊天列表页 // 说明在聊天列表页
if (store.state.currSessionId) { if (store.state.currSessionId) {
dispatch('setCurrSession', store.state.currSessionId) dispatch('setCurrSession', store.state.currSessionId)
} }
} },
}) shouldIgnoreNotification: function(msg) {
window.nim.useDb = config.useDb let team = msg.attach.team
} if (team['name'] || team['intro'] || team['joinMode'] || team['inviteMode'] || team['updateTeamMode'] || team['beInviteMode']) {
return false
} else {
return true
}
}
})
window.nim.useDb = config.useDb
}
\ No newline at end of file
...@@ -137,6 +137,8 @@ function onSendMsgDone(error, msg) { ...@@ -137,6 +137,8 @@ function onSendMsgDone(error, msg) {
} }
}) })
} }
console.log('end sdk.........')
util.getDate()
onMsg(msg) onMsg(msg)
} }
...@@ -231,6 +233,8 @@ export function sendMsg({ state, commit }, obj) { ...@@ -231,6 +233,8 @@ export function sendMsg({ state, commit }, obj) {
done: onSendMsgDone, done: onSendMsgDone,
needMsgReceipt: obj.needMsgReceipt || false needMsgReceipt: obj.needMsgReceipt || false
}) })
console.log('start sdk.........')
util.getDate()
break break
case 'at': case 'at':
nim.sendText({ nim.sendText({
......
import Vue from 'vue' import Vue from 'vue'
import store from '../store' import store from '../store'
import { utils } from 'mocha';
if(!Function.prototype.bind){ if (!Function.prototype.bind) {
Function.prototype.bind = function(){ Function.prototype.bind = function() {
var fn = this, args = Array.prototype.slice.call(arguments), object = args.shift(); var fn = this,
return function(){ args = Array.prototype.slice.call(arguments),
return fn.apply(object, args.concat(Array.prototype.slice.call(arguments))); object = args.shift();
return function() {
return fn.apply(object, args.concat(Array.prototype.slice.call(arguments)));
}
} }
}
} }
let Utils = Object.create(null) let Utils = Object.create(null)
Utils.encode = function (_map, _content) { Utils.encode = function(_map, _content) {
_content = '' + _content _content = '' + _content
if (!_map || !_content) { if (!_map || !_content) {
return _content||'' return _content || ''
} }
return _content.replace(_map.r, function ($1) { return _content.replace(_map.r, function($1) {
var _result = _map[!_map.i ? $1.toLowerCase() : $1] var _result = _map[!_map.i ? $1.toLowerCase() : $1]
return _result != null ? _result : $1 return _result != null ? _result : $1
}); });
}; };
Utils.escape = (function () { Utils.escape = (function() {
let _reg = /<br\/?>$/ let _reg = /<br\/?>$/
let _map = { let _map = {
r:/\<|\>|\&|\r|\n|\s|\'|\"/g, r: /\<|\>|\&|\r|\n|\s|\'|\"/g,
'<':'&lt;', '<': '&lt;',
'>':'&gt;', '>': '&gt;',
'&':'&amp;', '&': '&amp;',
' ':'&nbsp;', ' ': '&nbsp;',
'"':'&quot;', '"': '&quot;',
"'":'&#39;', "'": '&#39;',
'\n':'<br/>', '\n': '<br/>',
'\r':'' '\r': ''
} }
return function(_content){ return function(_content) {
_content = Utils.encode(_map, _content) _content = Utils.encode(_map, _content)
return _content.replace(_reg, '<br/>'); return _content.replace(_reg, '<br/>');
}; };
})(); })();
Utils.object2query = function (obj) { Utils.object2query = function(obj) {
let keys = Object.keys(obj) let keys = Object.keys(obj)
let queryArray = keys.map(item => { let queryArray = keys.map(item => {
return `${item}=${encodeURIComponent(obj[item])}` return `${item}=${encodeURIComponent(obj[item])}`
}) })
return queryArray.join('&') return queryArray.join('&')
}
Utils.getDate = function() {
console.log(new Date());
} }
// https://cn.vuejs.org/v2/guide/reactivity.html // https://cn.vuejs.org/v2/guide/reactivity.html
// Vue 不能检测到对象属性的添加或删除。然而它可以使用 Vue.set(object, key, value) 方法将响应属性添加到嵌套的对象上 // Vue 不能检测到对象属性的添加或删除。然而它可以使用 Vue.set(object, key, value) 方法将响应属性添加到嵌套的对象上
Utils.mergeObject = function (dest, src) { Utils.mergeObject = function(dest, src) {
if (typeof dest !== 'object' || dest === null) { if (typeof dest !== 'object' || dest === null) {
dest = Object.create(null) dest = Object.create(null)
} }
dest = Object.assign(Object.create(null), dest, src) dest = Object.assign(Object.create(null), dest, src)
return dest return dest
} }
Utils.mergeVueObject = function (dest, src) { Utils.mergeVueObject = function(dest, src) {
let keys = Object.keys(src) let keys = Object.keys(src)
keys.forEach(item => { keys.forEach(item => {
if (typeof src[item] !== 'undefined') { if (typeof src[item] !== 'undefined') {
Vue.set(dest, item, src[item]) Vue.set(dest, item, src[item])
} }
}) })
return dest return dest
} }
// 消息类型列表 // 消息类型列表
Utils.mapMsgType = function (msg) { Utils.mapMsgType = function(msg) {
let map = { let map = {
text: '文本消息', text: '文本消息',
image: '图片消息', image: '图片消息',
file: '文件消息', file: '文件消息',
audio: '语音消息', audio: '语音消息',
video: '视频消息', video: '视频消息',
geo: '地理位置消息', geo: '地理位置消息',
tip: '提醒消息', tip: '提醒消息',
custom: '自定义消息', custom: '自定义消息',
notification: '系统通知', notification: '系统通知',
robot: '机器人消息' robot: '机器人消息'
} }
let type = msg.type let type = msg.type
return map[type] || '未知消息类型' return map[type] || '未知消息类型'
} }
Utils.stringifyDate = function (datetime, simple = false) { Utils.stringifyDate = function(datetime, simple = false) {
// let weekMap = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] // let weekMap = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
let weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'] let weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
datetime = new Date(datetime) datetime = new Date(datetime)
let year = datetime.getFullYear() let year = datetime.getFullYear()
let simpleYear = datetime.getYear() - 100 let simpleYear = datetime.getYear() - 100
let month = datetime.getMonth() + 1 let month = datetime.getMonth() + 1
month = month > 9 ? month : '0' + month month = month > 9 ? month : '0' + month
let day = datetime.getDate() let day = datetime.getDate()
day = day > 9 ? day : '0' + day day = day > 9 ? day : '0' + day
let hour = datetime.getHours() let hour = datetime.getHours()
hour = hour > 9 ? hour : '0' + hour hour = hour > 9 ? hour : '0' + hour
let min = datetime.getMinutes() let min = datetime.getMinutes()
min = min > 9 ? min : '0' + min min = min > 9 ? min : '0' + min
let week = datetime.getDay() let week = datetime.getDay()
week = weekMap[week] week = weekMap[week]
let thatDay = (new Date(year, month - 1, day, 0, 0, 0)).getTime() let thatDay = (new Date(year, month - 1, day, 0, 0, 0)).getTime()
if (simple) { if (simple) {
return { return {
withYear: `${day}/${month}/${simpleYear}`, withYear: `${day}/${month}/${simpleYear}`,
withMonth: `${month}-${day}`, withMonth: `${month}-${day}`,
withDay: `${week}`, withDay: `${week}`,
withLastDay: `昨天`, withLastDay: `昨天`,
withHour: `${hour}:${min}`, withHour: `${hour}:${min}`,
thatDay thatDay
}
} else {
return {
withYear: `${year}-${month}-${day} ${hour}:${min}`,
withMonth: `${month}-${day} ${hour}:${min}`,
withDay: `${week} ${hour}:${min}`,
withLastDay: `昨天 ${hour}:${min}`,
withHour: `${hour}:${min}`,
thatDay
}
} }
} else {
return {
withYear: `${year}-${month}-${day} ${hour}:${min}`,
withMonth: `${month}-${day} ${hour}:${min}`,
withDay: `${week} ${hour}:${min}`,
withLastDay: `昨天 ${hour}:${min}`,
withHour: `${hour}:${min}`,
thatDay
}
}
} }
/* 格式化日期 */ /* 格式化日期 */
Utils.formatDate = function (datetime, simple = false) { Utils.formatDate = function(datetime, simple = false) {
let tempDate = (new Date()).getTime() let tempDate = (new Date()).getTime()
let result = this.stringifyDate(datetime, simple) let result = this.stringifyDate(datetime, simple)
let thatDay = result.thatDay let thatDay = result.thatDay
let deltaTime = (tempDate - thatDay) / 1000 let deltaTime = (tempDate - thatDay) / 1000
if (deltaTime < 3600 * 24) { if (deltaTime < 3600 * 24) {
return result.withHour return result.withHour
} else if (deltaTime < 3600 * 24 * 2) { } else if (deltaTime < 3600 * 24 * 2) {
return result.withLastDay return result.withLastDay
} else if (deltaTime < 3600 * 24 * 7) { } else if (deltaTime < 3600 * 24 * 7) {
return result.withDay return result.withDay
} else if (deltaTime < 3600 * 24 * 30) { } else if (deltaTime < 3600 * 24 * 30) {
return result.withMonth return result.withMonth
} else { } else {
return result.withYear return result.withYear
} }
} }
Utils.parseSession = function (sessionId) { Utils.parseSession = function(sessionId) {
if (/^p2p-/.test(sessionId)) { if (/^p2p-/.test(sessionId)) {
return { return {
scene: 'p2p', scene: 'p2p',
to: sessionId.replace(/^p2p-/, '') to: sessionId.replace(/^p2p-/, '')
} }
} else if (/^team-/.test(sessionId)) { } else if (/^team-/.test(sessionId)) {
return { return {
scene: 'team', scene: 'team',
to: sessionId.replace(/^team-/, '') to: sessionId.replace(/^team-/, '')
}
} }
}
} }
Utils.parseCustomMsg = function (msg) { Utils.parseCustomMsg = function(msg) {
if (msg.type === 'custom') { if (msg.type === 'custom') {
try { try {
let cnt = JSON.parse(msg.content) let cnt = JSON.parse(msg.content)
switch (cnt.type) { switch (cnt.type) {
case 1: case 1:
return '[猜拳消息]' return '[猜拳消息]'
case 2: case 2:
return '[阅后即焚]' return '[阅后即焚]'
case 3: case 3:
return '[贴图表情]' return '[贴图表情]'
case 4: case 4:
return '[白板消息]' return '[白板消息]'
} }
} catch (e) {} } catch (e) {}
return '[自定义消息]' return '[自定义消息]'
} }
return '' return ''
} }
/* 获得有效的备注名 */ /* 获得有效的备注名 */
Utils.getFriendAlias = function (userInfo) { Utils.getFriendAlias = function(userInfo) {
userInfo.alias = userInfo.alias ? userInfo.alias.trim() : '' userInfo.alias = userInfo.alias ? userInfo.alias.trim() : ''
return userInfo.alias || userInfo.nick || userInfo.account return userInfo.alias || userInfo.nick || userInfo.account
} }
Utils.generateChatroomSysMsg = function (data) { Utils.generateChatroomSysMsg = function(data) {
let text let text
switch (data.attach.type) { switch (data.attach.type) {
case 'memberEnter': case 'memberEnter':
text = `欢迎${data.attach.fromNick}进入直播间` text = `欢迎${data.attach.fromNick}进入直播间`
break break
case 'memberExit': case 'memberExit':
text = `${data.attach.fromNick}离开了直播间` text = `${data.attach.fromNick}离开了直播间`
break break
case 'blackMember': case 'blackMember':
text = `${(data.attach.toNick[0] || data.attach.to[0])}被管理员拉入黑名单` text = `${(data.attach.toNick[0] || data.attach.to[0])}被管理员拉入黑名单`
break break
case 'unblackMember': case 'unblackMember':
text = `${(data.attach.toNick[0]||data.attach.to[0])}被管理员解除拉黑` text = `${(data.attach.toNick[0]||data.attach.to[0])}被管理员解除拉黑`
break break
case 'gagMember': case 'gagMember':
text = `${(data.attach.toNick[0]||data.attach.to[0])}被管理员禁言` text = `${(data.attach.toNick[0]||data.attach.to[0])}被管理员禁言`
break break
case 'ungagMember': case 'ungagMember':
text = `${(data.attach.toNick[0]||data.attach.to[0])}被管理员解除禁言` text = `${(data.attach.toNick[0]||data.attach.to[0])}被管理员解除禁言`
break break
case 'addManager': case 'addManager':
text = `${(data.attach.toNick[0]||data.attach.to[0])}被任命管理员身份` text = `${(data.attach.toNick[0]||data.attach.to[0])}被任命管理员身份`
break break
case 'removeManager': case 'removeManager':
text = `${(data.attach.toNick[0]||data.attach.to[0])}被解除管理员身份` text = `${(data.attach.toNick[0]||data.attach.to[0])}被解除管理员身份`
break; break;
case 'addTempMute': case 'addTempMute':
text = `${(data.attach.toNick[0]||data.attach.to[0])}被管理员临时禁言` text = `${(data.attach.toNick[0]||data.attach.to[0])}被管理员临时禁言`
break; break;
case 'removeTempMute': case 'removeTempMute':
text = `${(data.attach.toNick[0]||data.attach.to[0])}被管理员解除临时禁言` text = `${(data.attach.toNick[0]||data.attach.to[0])}被管理员解除临时禁言`
break; break;
case 'addCommon': case 'addCommon':
text = `管理员添加普通成员` text = `管理员添加普通成员`
break break
case 'removeCommon': case 'removeCommon':
text = `管理员删除普通成员` text = `管理员删除普通成员`
break break
case 'kickMember': case 'kickMember':
text = `${data.attach.toNick[0]}被管理员踢出房间` text = `${data.attach.toNick[0]}被管理员踢出房间`
break; break;
// case 'xxx': // case 'xxx':
// 直播公告已更新 // 直播公告已更新
// break; // break;
default: default:
text = '通知消息' text = '通知消息'
break break
} }
return text return text
} }
Utils.generateTeamSysmMsg = function (data) { Utils.generateTeamSysmMsg = function(data) {
var text, nicks = this.getNickNames(data.attach.users) var text, nicks = this.getNickNames(data.attach.users)
switch (data.attach.type) { switch (data.attach.type) {
case 'updateTeam': case 'updateTeam':
text = this.getTeamUpdateInfo(data) text = this.getTeamUpdateInfo(data)
break; break;
case 'addTeamMembers': { case 'addTeamMembers':
let op = nicks.pop() {
text = `${op}邀请${nicks.join()}加入群` let op = nicks.pop()
break; text = `${op}邀请${nicks.join()}加入群`
break;
}
case 'removeTeamMembers':
{
let op = nicks.pop()
text = `${nicks.join()}${op}移出群`
break;
}
case 'acceptTeamInvite':
{
let op = nicks.pop()
text = `${nicks.join()}接受了${op}入群邀请`
break;
}
case 'passTeamApply':
{
let op = nicks.shift()
if (nicks.length === 1 && op === nicks[0]) {
// 此情况为高级群设置不需要验证,用户申请入群后,收到的群消息提示
text = `${op}加入群`
} else {
text = `${op}通过了${nicks}入群邀请`
}
break;
}
case 'addTeamManagers':
{
// todo test
let op = nicks.pop()
text = `${op}新增了${nicks}为管理员`
break;
}
case 'removeTeamManagers':
{
// todo test
let op = nicks.pop()
text = `${op}移除了${nicks}的管理员权限`
break;
}
case 'leaveTeam':
{
text = `${nicks.join()}退出了群`
break;
}
case 'dismissTeam':
{
text = `${nicks.join()}解散了群`
break;
}
case 'transferTeam':
{
// todo test
let nicks = this.getNickNames(data.attach.users)
let op = nicks.shift()
text = `${op}转让群主给${nicks}`
break;
}
case 'updateTeamMute':
{
let nicks = this.getNickNames(data.attach.users)
let op = nicks.shift()
text = `${nicks}被管理员${data.attach.mute ? '禁言' : '解除禁言'}`
break;
}
default:
break;
} }
case 'removeTeamMembers': { return text
let op = nicks.pop()
text = `${nicks.join()}${op}移出群`
break;
}
case 'acceptTeamInvite': {
let op = nicks.pop()
text = `${nicks.join()}接受了${op}入群邀请`
break;
}
case 'passTeamApply': {
let op = nicks.shift()
if (nicks.length===1 && op===nicks[0]) {
// 此情况为高级群设置不需要验证,用户申请入群后,收到的群消息提示
text = `${op}加入群`
} else {
text = `${op}通过了${nicks}入群邀请`
}
break;
}
case 'addTeamManagers': {
// todo test
let op = nicks.pop()
text = `${op}新增了${nicks}为管理员`
break;
}
case 'removeTeamManagers': {
// todo test
let op = nicks.pop()
text = `${op}移除了${nicks}的管理员权限`
break;
}
case 'leaveTeam': {
text = `${nicks.join()}退出了群`
break;
}
case 'dismissTeam': {
text = `${nicks.join()}解散了群`
break;
}
case 'transferTeam': {
// todo test
let nicks = this.getNickNames(data.attach.users)
let op = nicks.shift()
text = `${op}转让群主给${nicks}`
break;
}
case 'updateTeamMute':{
let nicks = this.getNickNames(data.attach.users)
let op = nicks.shift()
text = `${nicks}被管理员${data.attach.mute ? '禁言' : '解除禁言'}`
break;
}
default:
break;
}
return text
} }
// todo 写成私有成员方法 // todo 写成私有成员方法
Utils.getNickNames = function(users) { Utils.getNickNames = function(users) {
return users.map(user => { return users.map(user => {
return user.account === store.state.userUID? '你' : user.nick return user.account === store.state.userUID ? '你' : user.nick
}) })
} }
// todo 写成私有成员方法 // todo 写成私有成员方法
Utils.getTeamUpdateInfo = function(msg) { Utils.getTeamUpdateInfo = function(msg) {
let text, team = msg.attach.team, op = this.getNickNames(msg.attach.users).pop() let text, team = msg.attach.team,
if (team['name']) { op = this.getNickNames(msg.attach.users).pop()
text = `${op}修改群名为${team['name']}` if (team['name']) {
} else if (team['intro']) { text = `${op}修改群名为${team['name']}`
text = `${op}修改群介绍为${team['intro']}` } else if (team['intro']) {
} text = `${op}修改群介绍为${team['intro']}`
// 由于群公告的交互与 Android iOS 不一致,现版本不适配群公告 }
// else if (team['announcement']) { // 由于群公告的交互与 Android iOS 不一致,现版本不适配群公告
// text = `${op}修改群公告为${team['announcement']}` // else if (team['announcement']) {
// } // text = `${op}修改群公告为${team['announcement']}`
else if (team['joinMode']) { // }
text = `群身份验证模式更新为${team.joinMode === 'noVerify' ? '不需要验证' : team.joinMode === 'needVerify' ? '需要验证' : '禁止任何人加入'}` else if (team['joinMode']) {
} else if (team['inviteMode']) { text = `群身份验证模式更新为${team.joinMode === 'noVerify' ? '不需要验证' : team.joinMode === 'needVerify' ? '需要验证' : '禁止任何人加入'}`
text = `邀请他人权限为${team['inviteMode'] === 'all' ? '所有人' : '管理员'}` } else if (team['inviteMode']) {
} else if (team['updateTeamMode']) { text = `邀请他人权限为${team['inviteMode'] === 'all' ? '所有人' : '管理员'}`
text = `群资料修改权限为${team['updateTeamMode'] === 'all' ? '所有人' : '管理员'}` } else if (team['updateTeamMode']) {
} else if (team['beInviteMode']) { text = `群资料修改权限为${team['updateTeamMode'] === 'all' ? '所有人' : '管理员'}`
text = `被邀请人身份${team['beInviteMode'] === 'noVerify' ? '不需要验证' : '需要验证'}` } else if (team['beInviteMode']) {
} else { text = `被邀请人身份${team['beInviteMode'] === 'noVerify' ? '不需要验证' : '需要验证'}`
text = '更新群信息' } else {
} text = '更新群信息'
return text }
return text
} }
Utils.showTips = function(msg){ Utils.showTips = function(msg) {
let dom=document.querySelector('#msg_tips') let dom = document.querySelector('#msg_tips')
if(dom && dom.style.display=='none'){ if (dom && dom.style.display == 'none') {
dom.innerText=msg dom.innerText = msg
dom.style.display='block' dom.style.display = 'block'
setTimeout(() => { setTimeout(() => {
dom.style.display='none' dom.style.display = 'none'
}, 2000); }, 2000);
}else{ } else {
//console.log('没有找到div',dom.style.display) //console.log('没有找到div',dom.style.display)
let a=0 let a = 0
} }
} }
Utils.teamConfigMap = { Utils.teamConfigMap = {
joinMode: { joinMode: {
'noVerify': '不需要验证', 'noVerify': '不需要验证',
'needVerify': '需要验证', 'needVerify': '需要验证',
'rejectAll': '禁止任何人加入' 'rejectAll': '禁止任何人加入'
}, },
beInviteMode: { beInviteMode: {
'needVerify': '需要验证', 'needVerify': '需要验证',
'noVerify': '不需要验证' 'noVerify': '不需要验证'
}, },
inviteMode: { inviteMode: {
'manager': '管理员邀请', 'manager': '管理员邀请',
'all': '所有人邀请' 'all': '所有人邀请'
}, },
updateTeamMode: { updateTeamMode: {
'manager': '管理员修改', 'manager': '管理员修改',
'all': '所有人修改' 'all': '所有人修改'
}, },
memberType: { memberType: {
'manager': '管理员', 'manager': '管理员',
'normal': '普通成员' 'normal': '普通成员'
} }
} }
export default Utils export default Utils
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment