import http from '@/common/request'; import publicFc from '@/common/publicFc'; // #ifndef VUE3 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ // #endif import * as sdk from "@/common/imSdk/lim-sdk.js"; import lim from "@/common/imSdk/sdk-bridge.js"; const _im=lim.lim.im // #ifdef VUE3 import { createStore } from 'vuex' const store = createStore({ // #endif state: { watermark:'HS-IM', userInfo:'', chatlist:[], chatDatalist:[], chatListNum:0, chatDataState:1, chatDataUserId:'', topicReply:{}, topicRed:{}, friendApply:{} }, mutations: { update_UserInfo(state, data) {//个人信息 state.userInfo = JSON.parse(data) }, update_ChatList(state, data) { state.chatlist = data }, update_chatDatalist(state, data) { state.chatDatalist = data }, update_topicReply(state, data) { state.topicReply = data uni.setStorageSync('topicReply', JSON.stringify(data)); }, update_topicRed(state, data) { state.topicRed = data uni.setStorageSync('topicRed', JSON.stringify(data)); }, update_friendApply(state, data) { state.friendApply = data uni.setStorageSync('friendApply', JSON.stringify(data)); } }, actions: { onP2PMessage(context,data){ console.log("========================store 收到信息") console.log("========================store 收到信息") console.log("========================store 收到信息") console.error(data) publicFc.getPush(data) }, sendMsg(context,data){ console.log("========================") console.log("========================") console.log("========================") console.error(data) _im.sendP2PMessage(_im.createP2PTextMessage(data.userId,data.data.content)) }, updateChatDataState(context,data){ context.state.chatDataState++ context.state.chatDataUserId=data }, tabBarpull(context){ context.dispatch('get_UserInfo').then(res=>{ context.dispatch('getChatList') // 朋友圈新消息 var topicReply=publicFc.getKeyObjectStorage('topicReply') context.state.topicReply=topicReply // 新朋友圈 var topicRed=publicFc.getKeyObjectStorage('topicRed') context.state.topicRed=topicRed // 新朋友 var friendApply=publicFc.getKeyObjectStorage('friendApply') context.state.friendApply=friendApply var chatListNum=context.state.chatListNum ? context.state.chatListNum : 0 var topicReplyCount=topicReply.count ? topicReply.count : 0 var friendApplyCount=friendApply.count ? friendApply.count : 0 var sumCount=chatListNum+topicReplyCount+friendApplyCount // #ifdef APP-PLUS plus.runtime.setBadgeNumber(sumCount); // #endif }) }, get_UserInfo (context) { // TODO 改用SDK的更新用户数据 return new Promise((resolve, reject) => { const userId = uni.getStorageSync("userId") lim.lim.im.getSingleUserInfo(userId).then((res)=>{ if(res.code==200){ context.commit('update_UserInfo',JSON.stringify(res.data)) resolve(res.data) }else{ reject(res.data) } }) }) }, getchatDatalist(context) {//获取聊天数据列表 var data=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatData') context.commit('update_chatDatalist',data) }, updateChatById(context,data) {//更新聊天数据 var getKey=data.userId var retdata=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatData') retdata[getKey]['list']=data.data uni.setStorageSync(context.state.userInfo.userId+'_'+'chatData', JSON.stringify(retdata)); }, updateChatObjById(context,data) {//更新聊天数据对象 var getKey=data.userId var retdata=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatData') retdata[getKey]=data.data uni.setStorageSync(context.state.userInfo.userId+'_'+'chatData', JSON.stringify(retdata)); }, getChatList(context) {//获取聊天记录列表 var data=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatlistData') var sum=0 for(var key in data){ sum+=data[key].num } context.state.chatListNum=sum context.commit('update_ChatList',data) }, updateChatListInfoById(context,data) {//修改聊天记录 console.log("修改聊天记录 2") var getKey=data.userId var retdata=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatlistData') retdata[getKey]=data.data uni.setStorageSync(context.state.userInfo.userId+'_'+'chatlistData', JSON.stringify(retdata)); }, createChatObj(context,data){ console.log("修改聊天记录 3") console.log("context.state.userInfo.userId:",context.state.userInfo.userId) console.log("data.userId:",data.userId) var userId=data.userId var windowType=data.windowType debugger //初始化聊天记录 var data2=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatlistData') if(!data2[userId]){ data2[userId]=new Object() } uni.setStorageSync(context.state.userInfo.userId+'_'+'chatlistData', JSON.stringify(data2)); // 初始化聊天数据 var data1=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatData') return new Promise((resolve, reject)=>{ if(!data1[userId]){ console.log('初始化聊天') switch (windowType){ case 'SINGLE': // lim.lim.im.getSingleUserInfo(userId).then(res=>{ // console.warn(res) // }) _im.getSingleUserInfo(userId).then((res)=>{ console.log(res.data) console.log(res.data) console.log(res.data) console.log(res.data) if (res.code == 200) { var detail=res.data data1[userId]={ fromInfo:{ nickName: detail.nickName, portrait: detail.photo, userId: detail.userId, userType:detail.userType }, groupInfo:{}, list:[] } uni.setStorageSync(context.state.userInfo.userId+'_'+'chatData', JSON.stringify(data1)); // 创建记录 var msgList = { userId: detail.userId, personId: context.state.userInfo.userId, nickName: detail.nickName, portrait: detail.photo, content: '', time: publicFc.getNewDate('format',true), num: 0, windowType: 'SINGLE', disturb:'N',//是否静默消息 top:'N',//是否置顶 userType:'SINGLE' } context.dispatch('updateChatListInfoById', { userId: detail.userId, data: msgList }); resolve({ msg:'创建成功', data:data1[userId] }) }else{ reject({ msg:'创建失败' }); } } ); break; case 'GROUP': http.request({ url: '/group/getInfo/'+userId, complete:(res)=>{ if (res.data.code == 200) { var detail=res.data.data var portraits=[] for (var i = 0; i < detail.user.length; i++) { portraits.push(detail.user[i].portrait) } data1[userId]={ fromInfo:{}, groupInfo:{ nickName: detail.group.name, portrait: JSON.stringify(portraits), userId: detail.group.groupId, }, list:[] } uni.setStorageSync(context.state.userInfo.userId+'_'+'chatData', JSON.stringify(data1)); // 创建记录 var msgList = { userId: detail.group.groupId, personId: context.state.userInfo.userId, nickName: detail.group.name, portrait: JSON.stringify(portraits), content: '', time: publicFc.getNewDate('format',true), num: 0, windowType: 'GROUP', disturb:'N',//是否静默消息 top:'N',//是否置顶 userType:'GROUP' } context.dispatch('updateChatListInfoById', { userId: detail.group.groupId, data: msgList }); resolve({ msg:'创建成功', data:data1[userId] }) }else{ reject({ msg:'创建失败' }); } } }); break; default: break; } }else{ resolve({ msg:'已存在', data:data1[userId] }) } }); }, createChat(context,data){ } } }) export default store