import store from '../' // 收到群列表及更新群列表接口 export function onTeams(teams) { if (!Array.isArray(teams)) { teams = [teams] } teams.forEach(team=>{ if (team.validToCurrentUser === undefined) { team.validToCurrentUser = true } if (team.avatar && team.avatar.indexOf('nim.nosdn.127') >0 && team.avatar.indexOf('?imageView')===-1) { team.avatar = team.avatar + '?imageView&thumbnail=300y300' } }) store.commit('updateTeamList', teams) } // 收到群成员及更新群成员接口 export function onTeamMembers(obj) { store.commit('updateTeamMembers', obj) } export function onCreateTeam({team, owner}) { onTeams(team) onTeamMembers({ teamId: team.teamId, members: [owner] }) } export function createTeam({state, commit},obj) { onTeams(obj.team) onTeamMembers({ teamId: obj.team.teamId, members: [obj.owner] }) } export function onSynCreateTeam(team){ onTeams(team) } export function onDismissTeam(obj) { store.commit('updateTeamList', { invalid: { teamId: obj.teamId } }) } export function onUpdateTeam(team) { onTeams(team) } export function onTeamNotificationMsg({state, commit}, msg) { if (msg.attach.type === 'updateTeam' && msg.attach.team) { store.commit('updateTeamInfo', msg.attach.team) } if (msg.attach.type === 'transferTeam') { onTeamMembers({ teamId: msg.attach.team.teamId, members: msg.attach.members }) } } export function onAddTeamMembers(obj) { obj.accounts.forEach(account=>{ // 自己被拉入群时更新群列表 if (account === store.state.userUID) { let team = [obj.team] onTeams(team) } }) onTeamMembers({ teamId: obj.team.teamId, members: obj.members }) } export function onRemoveTeamMembers(obj) { obj.accounts.forEach(account => { // 自己被移出群时,更新群列表 if (account === store.state.userUID) { obj.team.validToCurrentUser = false let team = [obj.team] onTeams(team) } }) store.commit('removeTeamMembersByAccounts', { teamId: obj.team.teamId, accounts: obj.accounts }) } export function onUpdateTeamMember(teamMember) { onTeamMembers({ teamId: teamMember.teamId, members: teamMember }) } export function onUpdateTeamMembersMute(obj) { onTeamMembers({ teamId: obj.team.teamId, members: obj.members }) } export function onUpdateTeamManagers(obj) { onTeamMembers({ teamId: obj.team.teamId, members: obj.members }) } export function onTeamMsgReceipt(obj) { //群消息回执通知 obj.teamMsgReceipts.forEach(item => { if (item.teamId === store.state.currReceiptQueryTeamId) { store.commit('updateSingleTeamMsgReads', item) } }) } // 进入可配置的群信息设置页,进入前改变state中的配置信息,进入页面后读取配置信息更新视图 export function enterSettingPage({commit}, obj) { commit('updateTeamSettingConfig', obj) setTimeout(() => { location.href = `#/teamsetting` }, 20) } /* * 代理nim sdk中对群组的操作方法 * @functionName nim sdk中的方法名 * @options 传递给sdk方法的参数 */ export function delegateTeamFunction({state}, {functionName, options}) { const nim = state.nim if (functionName && nim[functionName] && typeof nim[functionName] === 'function') { nim[functionName](options) } else { throw(`There is not property of '${functionName}' in nim or '${functionName}' is not a function`) } } export function getTeamMembers({ state }, teamId) { const nim = state.nim if (!nim) { // 防止nim未初始化 setTimeout(() => { getTeamMembers(store, teamId) }, 200); return } nim.getTeamMembers({ teamId: teamId, done: (err, obj) => { if (obj.members && obj.members!="") { onTeamMembers({ teamId: obj.teamId, members: obj.members }) } else { setTimeout(() => { getTeamMembers(store, teamId) }, 200); } } }) } export function getTeam({ state }, teamId) { const nim = state.nim if (!nim) { // 防止nim未初始化 setTimeout(() => { getTeamMembers(store, teamId) }, 200); return } nim.getTeam({ teamId: teamId, done: (error, teams) => { if (!error) { onTeams(teams); } } }) } export function addTeamMembers({ state }, teamId, accounts) { const nim = state.nim if (!nim) { // 防止nim未初始化 setTimeout(() => { addTeamMembers(store, teamId, accounts) }, 200); return } nim.addTeamMembers({ teamId: teamId, accounts:accounts, done: (err, obj) => { } }) } export function removeTeamMembers({ state }, teamId, accounts) { const nim = state.nim if (!nim) { // 防止nim未初始化 setTimeout(() => { removeTeamMembers(store, teamId, accounts) }, 200); return } nim.removeTeamMembers({ teamId: teamId, accounts:accounts, done: (err, obj) => { } }) } export function getTeamMembersByList({ state }, teamId) { const nim = state.nim if (!nim) { // 防止nim未初始化 setTimeout(() => { getTeamMembers(store, teamId) }, 200); return } nim.getTeamMembers({ teamId: teamId, done: (err, obj) => { if (obj.members && obj.members!="") { } else { setTimeout(() => { getTeamMembers(store, teamId) }, 200); } } }) } export function checkTeamMsgReceipt({state}, msgs) { var result = /team-(\d+)/.exec(state.currSessionId) if (!result) { return null } var teamId = result[1] var needToPeceiptList= getMsgNeedToReceipt(state, teamId, msgs) if (needToPeceiptList && needToPeceiptList.length>0) { nim.sendTeamMsgReceipt({ teamMsgReceipts: needToPeceiptList, done: (err, obj, content) => { if (!err) { store.commit('updateSentReceipedMap', needToPeceiptList) } } }) } store.commit('updateReceiptQueryList', { teamId: teamId, msgs: msgs }) } // 查询需要发送回执的消息 function getMsgNeedToReceipt(state, teamId, msgs) { var sentReceipedList = state.sentReceipedMap[teamId] || [] var needToReceipt = msgs.filter(msg => { // 需要回执,且未发送过 return msg.needMsgReceipt && msg.from !== state.myInfo.account && !sentReceipedList.find(id => id === msg.idServer) }).map(msg => { return { teamId: teamId, idServer: msg.idServer } }) return needToReceipt } export function getTeamMsgReads({ state }, needQuery) { nim.getTeamMsgReads({ teamMsgReceipts: needQuery, done: (error, obj, content) => { if (error) { }else { store.commit('updateTeamMsgReads', content) } } }) }