import _data from './_data'; import _get from './_get'; import _mixins from './_mixins'; import _action from './_action'; import _page from "./common"; import SDK from "./tendenceImSdk"; // #ifdef APP-PLUS const call = uni.requireNativePlugin('TencentCloud-TUICallKit'); // let call = uni.requireNativePlugin('TUICallingUniPlugin-TUICallingModule') // #endif export default { closeVoiceRoom() { uni.$emit('closeVoiceRoom', {}) }, getVoiceRoom(params) { let route = _page.getRoute(); if (route.indexOf('chat/message') > -1) { _get.checkVoiceRoomState(params, function(ret) { //加入 uni.$emit('memberJoinRoom', ret) }) } }, clientLink(data) { _data.localData('client_id', data.client_id); }, cancleVedio(data) { // #ifdef APP-PLUS call.logout(); // #endif uni.$emit('close_call', data); }, vedioData(data) { //判断是否在线发送视频邀请 if (!_data.data('isOnlie')) { _page.pushVedioLocalMsg(data); } else { console.log(data); // uni.navigateTo({ // url: '/pages/chat/videoCall?'+_page.pageParam(data) // }); } return true; }, /** 验证token */ checkToken(res) { if (res.err) { _action.checkFail(); } else { /** 获取基础数据 */ _get.base(); } }, /** 下线 */ offline(res) { // uni.showModal({ // content: '你的账号在另一客户端登陆,如果不是你本人操作,请修改你的密码', // success() { // _action.checkFail(); // }, // }); _action.checkFail(); // uni.navigateTo({ // url:'/pages/in/login' // }) }, /** 获得会话列表 */ getChatList() { _get.getChatList(); }, /** 获得好友列表 */ getFriendList() { _get.getFriendList({ up: 1 }); }, /** 新好友提醒 */ newFriend(data) { _action.playVoice('/static/voice/friend.mp3'); let num = _data.data('new_friend_tips_num') + (data.num * 1); _data.data('new_friend_tips_num', num); _action.setStatusTips(); }, /** 点赞提醒 */ circleLike(data) { _action.playVoice('/static/voice/circle.mp3'); //通知朋友圈 let circle_data = _data.localData('circle_data'); for (let i = 0, j = circle_data.length; i < j; i++) { if (circle_data[i].post_id == data.id) { console.log('circleLike1...') circle_data[i].like = data.likes; circle_data[i].islike = data.action; _data.localData('circle_data', circle_data); uni.$emit('data_circle_data', circle_data); break; } } let circle_data_user = _data.localData('circle_data_user'); for (let i = 0, j = circle_data_user.length; i < j; i++) { if (circle_data_user[i].post_id == data.id) { console.log('circleLike2...') circle_data_user[i].like = data.likes; circle_data_user[i].islike = data.action; _data.localData('circle_data_user', circle_data_user); uni.$emit('data_circle_data_user', circle_data_user); break; } } }, addChatList() { //田百合花 }, timeData(data) { //田百合花 uni.$emit('newReadTime', data.data.msg.time) // uni.setStorageSync(data.list_id+'_time',data.data.msg.time); }, /** 接收新消息 */ chatData(data) { console.log("删除成员", data); if (!_data.localData('token')) return false; let chat_data = _data.localData(data.list_id), brate = _data.localData('DISTURB:' + data.list_id), msg_reader_num = 0; /** 如果不是自己的消息,在这条会话界面,震动提示,没有在这条会话界面,震动加声音提示 */ if (_data.data('user_info').id != data.data.msg.user_info.uid) { console.log('到这里'); // #ifdef APP-PLUS _page.pushLocalMsg(data); if (brate == 0 || brate == undefined || brate == null) { uni.vibrateLong(); } // #endif //在列表则更新未读状态 if (_data.localData('message_list_id') == data.list_id) { _action.updataNoReader(data.list_id); } else { //否则声音提示 if (brate == 0 || brate == undefined || brate == null) { _action.playVoice('/static/voice/chat.mp3'); } msg_reader_num = 1; } } /** 更新对话列表数据 */ let action_list_data = {}; for (let i = 0, local_chat_list = _data.localData('chat_list'), j = local_chat_list.length; i < j; i++) { if (local_chat_list[i].list_id == data.list_id) { switch (data.data.msg.type * 1) { case 0: local_chat_list[i].last_msg = data.data.msg.content.text; break; case 1: /** 语音 */ local_chat_list[i].last_msg = '[语音]'; break; case 2: /** 图片 */ local_chat_list[i].last_msg = '[图片]'; break; case 3: /** 视频 */ local_chat_list[i].last_msg = '[视频]'; break; case 4: /** 文件 */ local_chat_list[i].last_msg = '[文件]'; break; case 5: /** 红包 */ local_chat_list[i].last_msg = '[红包]'; break; case 6: /** 在线视频 */ local_chat_list[i].last_msg = '[在线视频]'; break; case 7: /** 在线语音 */ local_chat_list[i].last_msg = '[在线语音]'; break; case 8: /** 名片 */ local_chat_list[i].last_msg = '[名片]'; break; case 9: /** 名片 */ local_chat_list[i].last_msg = '[戳一戳]'; uni.vibrateLong(); break; default: /** 未知消息类型 */ local_chat_list[i].last_msg = '[未知]'; break; } // todo屏蔽 @群朋友 如果屏蔽消息,则不提示 // if(local_chat_list[i].is_disturb == 1){ // // 如果屏蔽,但是@本人和所有人all,则提示消息 // if (data.data.msg.content && data.data.msg.content.user_id){ // if(data.data.msg.content.user_id.indexOf(_data.data('user_info').id)>-1 || data.data.msg.content.user_id.indexOf('all')>-1){ // local_chat_list[i].no_reader_num += msg_reader_num; // } // } // }else{ // local_chat_list[i].no_reader_num += msg_reader_num; // } local_chat_list[i].no_reader_num += msg_reader_num; local_chat_list[i].time = data.data.msg.time; local_chat_list.sort((x, y) => { if (x.top > y.top) { return -1; } if (x.time > y.time) { return -1; } }) _data.localData('chat_list', local_chat_list); uni.$emit('data_chat_list', local_chat_list); action_list_data = local_chat_list[i]; break; } } if (!Object.keys(action_list_data).length) { //如果没有则新增 action_list_data.list_id = data.list_id; action_list_data.chat_id = data.data.msg.id; action_list_data.no_reader_num = 1; action_list_data.photo_path = data.data.msg.user_info.face; action_list_data.show_name = data.data.msg.user_info.name; action_list_data.time = data.data.msg.time; action_list_data.last_msg = data.data.msg.content.text; action_list_data.top = 0; action_list_data.top_time = 0; action_list_data.type = data.data.type; let chat_list = _data.localData('chat_list'); chat_list.splice(0, 0, action_list_data); //排序首选根据top排序,然后根据time排序 chat_list = chat_list.slice(0, 30); chat_list.sort((x, y) => { if (x.top == y.top) { y.time - x.time; } else { return y.top - x.top; } }) _data.localData('chat_list', chat_list); uni.$emit('data_chat_list', chat_list); } /** 在有这条对话的缓存数据情况下 */ if (chat_data) { chat_data.list.push(data.data); chat_data.list = chat_data.list.slice(-15); _data.localData(data.list_id, chat_data); /** 如果在与对方的对话界面,发送数据到页面显示 */ if (_data.localData('message_list_id') == data.list_id) { /** 保持页面15条数据,提升性能 */ uni.$emit('data_chat_data_push', chat_data.list); } } _action.setStatusTips(); }, /** 接收好友朋友圈动态提示 */ circleTips(data) { _action.playVoice('/static/voice/circle.mp3'); _data.data('no_reader_circle', 1); _action.setStatusTips(); }, /** 接收朋友圈好友回复/赞通知 */ cricleChatTips(data) { _action.playVoice('/static/voice/circle.mp3'); let num = _data.data('no_reader_circle_chat_num'); num++; _data.data('no_reader_circle_chat_num', num); _action.setStatusTips(); }, /** 撤回消息 */ deleteChat(data) { let chat_data = _data.localData(data.list_id); for (let i = 0, j = chat_data.list.length; i < j; i++) { if (chat_data.list[i].msg.id == data.data.msg.id) { chat_data.list[i] = data.data; _data.localData(data.list_id, chat_data); uni.$emit('data_chat_data_delete', chat_data.list); break; } } }, // 系统删除一条会话 adminDeleteChat(data) { let chat_data = _data.localData(data.list_id); for (let i = 0, j = chat_data.list.length; i < j; i++) { if (chat_data.list[i].msg.id == data.data.msg.id) { // chat_data.list[i] = data.data; chat_data.list.splice(i, 1); _data.localData(data.list_id, chat_data); uni.$emit('data_chat_data_delete', chat_data.list); break; } } }, /** 加群申请 */ chatGroupApply(data) { let local_data = _data.localData('group_apply_list'); if (!local_data) { local_data = []; } local_data.push(data); _data.localData('group_apply_list', local_data); uni.$emit('data_group_apply_data', local_data); let num = _data.data('new_group_tips_num'); num++; _data.data('new_group_tips_num', num); _action.playVoice('/static/voice/friend.mp3'); _action.setStatusTips(); }, /** 通知群管理已处理 */ groupChatApplyAllow(id) { let local_data = _data.localData('group_apply_list'); for (let value of local_data) { if (value.id == id) { value.status = 1; value.text = '已接受'; let num = _data.data('new_group_tips_num'); num--; if (num < 0) { num = 0; } _data.data('new_group_tips_num', num); } break; } _data.localData('group_apply_list', local_data); uni.$emit('data_group_apply_data', local_data); _action.setStatusTips(); }, // 清空双方聊天记录(对话) chat_del(data) { _data.localData(data.list_id, null); uni.$emit('chat_del', data.list_id); }, // 删除群聊 group_del(data) { /** 删除对话列表缓存数据 */ let show_name = ''; for (let i = 0, local_chat_list = _data.localData('chat_list'), j = local_chat_list.length; i < j; i++) { if (local_chat_list[i].list_id == data.list_id) { let del_group = local_chat_list.splice(i, 1); // console.log("删除群的属性", del_group); show_name = del_group[0].show_name; _data.localData('chat_list', local_chat_list); uni.$emit('data_chat_list', local_chat_list); break; } } /** 删除对话缓存数据 */ _data.localData(data.list_id, null); uni.showModal({ title: show_name + ' 群聊已经被解散了!', showCancel: false, success: function(res) { uni.switchTab({ url: '/pages/chat/index' }) } }); }, //清除群聊某些消息 groupDeleteChat(data) { console.log("清空群聊消息", data); uni.$emit('group_delete_chat', data.list_id); }, // todo清除移除会员的记录 removeMember(data) { console.log("清空成员消息", data); uni.$emit('remove_member', data.list_id); }, /** 解散群 */ removeGroup(data) { /** 删除对话列表缓存数据 */ for (let i = 0, local_chat_list = _data.localData('chat_list'), j = local_chat_list.length; i < j; i++) { if (local_chat_list[i].list_id == data.list_id) { local_chat_list.splice(i, 1); _data.localData('chat_list', local_chat_list); uni.$emit('data_chat_list', local_chat_list); break; } } /** 删除对话缓存数据 */ _data.localData(data.list_id, null); uni.showModal({ title: data.group_name + ' 群聊已经被群主解散了!', }); }, //付款消息 payAmount(data) { _action.playVoice('/static/voice/chat.mp3'); let local_data = _data.data('data_pay_tips'); local_data = parseInt(local_data); if (local_data <= 0) { local_data = 0 } local_data++; _data.data('data_pay_tips', local_data); uni.$emit('pay_amount_after', data) uni.$emit('data_user_info', data); _data.data('user_info', data); _action.setStatusTips(); }, collectAmount(data) { _action.playVoice('/static/voice/chat.mp3'); let user_info = data.user_info; user_info.amount = data.amount; uni.navigateTo({ url: '/pages/pay/collect_money?' + _page.pageParam(user_info) }) }, //在线支付成功通知 onlinePaySuccess(data) { uni.$emit('data_user_info', data); _data.data('user_info', data); }, cricleComment(data) { let comment = data.comment; let circle = _data.localData('circle_data'); for (let i = 0, j = circle.length; i < j; i++) { if (circle[i].post_id == data.circle_id) { circle[i].comments.push(data.comment) _data.localData('circle_data', circle); uni.$emit('data_circle_data', circle); break; } } let circle_user = _data.localData('circle_data_user'); for (let i = 0, j = circle_user.length; i < j; i++) { console.log('circle_user[i]:', circle_user[i]) if (circle_user[i].post_id == data.circle_id) { circle_user[i].comments.push(data.comment) _data.localData('circle_data_user', circle_user); uni.$emit('data_circle_data_user', circle_user); break; } } }, //购买成功通知 payCircleOrder(data) { console.log('payCircleOrder....') _action.playVoice('/static/voice/circle.mp3'); //通知朋友圈 let circle_data = _data.localData('circle_data'); for (let i = 0, j = circle_data.length; i < j; i++) { if (circle_data[i].post_id == data.circle_id) { console.log('circle_data11[i]', circle_data[i]) circle_data[i].can_pay_times = data.can_pay_times; _data.localData('circle_data', circle_data); uni.$emit('data_circle_data', circle_data); break; } } let circle_data_user = _data.localData('circle_data_user'); for (let i = 0, j = circle_data_user.length; i < j; i++) { if (circle_data_user[i].post_id == data.circle_id) { circle_data_user[i].can_pay_times = data.can_pay_times; _data.localData('circle_data_user', circle_data_user); uni.$emit('data_circle_data_user', circle_data_user); break; } } }, memberIsOnline() { //消息提醒 _action.playVoice('/static/voice/chat.mp3'); }, setMessagePageTitle(data) { //设置聊天页面的title console.log("设置标题:", data) let chat_data = _data.localData(data.list_id); chat_data.show_name = data.show_name; _data.localData(data.list_id, chat_data); }, zhenDong(data) { let user_id = _data.data('user_info').id; console.log("USER_ID", user_id); if (user_id != data['user_id']) { // #ifdef APP-PLUS uni.vibrateLong(); // #endif } } }