From e07d40908b67a8ce06aa24ea57e6207cd497a45d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=98=8E=E6=98=8E?= <970899069@qq.com> Date: Thu, 17 Mar 2022 13:28:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=A5=E7=A6=BBim=EF=BC=8C=E5=89=A5=E7=A6=BB?= =?UTF-8?q?=E9=92=B1=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 14340 -> 10244 bytes App.vue | 6 +- apis/interfaces/im.js | 330 --------------- main.js | 32 +- manifest.json | 31 +- package-lock.json | 32 +- pages.json | 181 -------- pages/.DS_Store | Bin 12292 -> 10244 bytes pages/auth/auth.vue | 18 +- pages/im/components/connectionStatus.vue | 67 --- .../components/conversation/messageCell.vue | 95 ----- .../conversation/messagePreview.vue | 88 ---- pages/im/components/conversationList.vue | 181 -------- pages/im/components/friendApplyCell.vue | 126 ------ pages/im/components/friendApplyList.vue | 147 ------- pages/im/components/friendSearchList.vue | 144 ------- pages/im/components/groupUserList.vue | 335 --------------- pages/im/components/sent/sentEmoji.vue | 87 ---- pages/im/components/sent/sentPopups.vue | 193 --------- pages/im/components/sent/sentText.vue | 94 ----- pages/im/components/sent/sentVoice.vue | 311 -------------- pages/im/components/sentMessageBar.vue | 135 ------ pages/im/components/show/messageState.vue | 75 ---- pages/im/components/show/showAudio.vue | 84 ---- pages/im/components/show/showFile.vue | 95 ----- pages/im/components/show/showImage.vue | 105 ----- pages/im/components/show/showLocation.vue | 112 ----- pages/im/components/show/showNormal.vue | 36 -- pages/im/components/show/showText.vue | 78 ---- pages/im/components/show/showVideo.vue | 84 ---- pages/im/components/show/showVoice.vue | 247 ----------- pages/im/components/showMessageCell.vue | 153 ------- pages/im/friends/index.vue | 188 --------- pages/im/friends/info.vue | 395 ------------------ pages/im/friends/mine.vue | 170 -------- pages/im/friends/pending.vue | 78 ---- pages/im/friends/search.vue | 109 ----- pages/im/group/announceCreate.vue | 120 ------ pages/im/group/announcement.vue | 224 ---------- pages/im/group/apply.vue | 120 ------ pages/im/group/chat.vue | 292 ------------- pages/im/group/index.vue | 168 -------- pages/im/group/info.vue | 378 ----------------- pages/im/group/invite.vue | 283 ------------- pages/im/group/reviewed.vue | 177 -------- pages/im/group/users.vue | 29 -- pages/im/index.vue | 247 ----------- pages/im/mixins/imBase.js | 25 -- pages/im/mixins/messageActions.js | 133 ------ pages/im/mixins/onGroupDismiss.js | 34 -- pages/im/private/call.nvue | 322 -------------- pages/im/private/chat.vue | 298 ------------- pages/user/index.vue | 9 +- public/userAuth.js | 4 - store/index.js | 4 - utils/im/.DS_Store | Bin 6148 -> 0 bytes utils/im/data.js | 16 - utils/im/index.js | 135 ------ utils/im/listeners.js | 218 ---------- utils/im/message.js | 318 -------------- utils/im/models.js | 27 -- yarn.lock | 32 +- 62 files changed, 35 insertions(+), 8220 deletions(-) delete mode 100644 apis/interfaces/im.js delete mode 100644 pages/im/components/connectionStatus.vue delete mode 100644 pages/im/components/conversation/messageCell.vue delete mode 100644 pages/im/components/conversation/messagePreview.vue delete mode 100644 pages/im/components/conversationList.vue delete mode 100644 pages/im/components/friendApplyCell.vue delete mode 100644 pages/im/components/friendApplyList.vue delete mode 100644 pages/im/components/friendSearchList.vue delete mode 100644 pages/im/components/groupUserList.vue delete mode 100644 pages/im/components/sent/sentEmoji.vue delete mode 100644 pages/im/components/sent/sentPopups.vue delete mode 100644 pages/im/components/sent/sentText.vue delete mode 100644 pages/im/components/sent/sentVoice.vue delete mode 100644 pages/im/components/sentMessageBar.vue delete mode 100644 pages/im/components/show/messageState.vue delete mode 100644 pages/im/components/show/showAudio.vue delete mode 100644 pages/im/components/show/showFile.vue delete mode 100644 pages/im/components/show/showImage.vue delete mode 100644 pages/im/components/show/showLocation.vue delete mode 100644 pages/im/components/show/showNormal.vue delete mode 100644 pages/im/components/show/showText.vue delete mode 100644 pages/im/components/show/showVideo.vue delete mode 100644 pages/im/components/show/showVoice.vue delete mode 100644 pages/im/components/showMessageCell.vue delete mode 100644 pages/im/friends/index.vue delete mode 100644 pages/im/friends/info.vue delete mode 100644 pages/im/friends/mine.vue delete mode 100644 pages/im/friends/pending.vue delete mode 100644 pages/im/friends/search.vue delete mode 100644 pages/im/group/announceCreate.vue delete mode 100644 pages/im/group/announcement.vue delete mode 100644 pages/im/group/apply.vue delete mode 100644 pages/im/group/chat.vue delete mode 100644 pages/im/group/index.vue delete mode 100644 pages/im/group/info.vue delete mode 100644 pages/im/group/invite.vue delete mode 100644 pages/im/group/reviewed.vue delete mode 100644 pages/im/group/users.vue delete mode 100644 pages/im/index.vue delete mode 100644 pages/im/mixins/imBase.js delete mode 100644 pages/im/mixins/messageActions.js delete mode 100644 pages/im/mixins/onGroupDismiss.js delete mode 100644 pages/im/private/call.nvue delete mode 100644 pages/im/private/chat.vue delete mode 100644 utils/im/.DS_Store delete mode 100644 utils/im/data.js delete mode 100644 utils/im/index.js delete mode 100644 utils/im/listeners.js delete mode 100644 utils/im/message.js delete mode 100644 utils/im/models.js diff --git a/.DS_Store b/.DS_Store index 15466963870f582b87f9ea1ae0b7c3adb4ae49b7..0c6ff4657b654f70f82eda8eede773cf7b5bc0ad 100644 GIT binary patch delta 156 zcmZoEXbF&DU|?W$DortDU{C-uIe-{M3-C-V6q~3gIoZI3g%`+Y@B?B-pg6`L3Y4i!JiR?o>$%8vt0%#aNv(-~4dbMljua`Kaa`hX@fr32}C|G@yrVqn0c17;;inpwE&0d`fn`7SO{ zb2-X;T0gm;KJ4g^OKA#*QtT=VG9bPM$}%vkZ`dp)_m**EK{Xqr{$?HlQ)W&cpzrb- zQW#Pv8_Fn)>LK|9A(Jj6%YRtx4bTLH*hCo_kp=lpj?O?wqDbt=CGl29hM7^zVY999 zALh*qMkCcbB$%&(%$35uTsK+G`NhDUmGf(kpU1(;W$ LGI2An2s<+X9FBWI diff --git a/App.vue b/App.vue index c6f6389..5f0e5d4 100644 --- a/App.vue +++ b/App.vue @@ -1,12 +1,8 @@ - - diff --git a/pages/im/components/conversation/messageCell.vue b/pages/im/components/conversation/messageCell.vue deleted file mode 100644 index 7041980..0000000 --- a/pages/im/components/conversation/messageCell.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - - - diff --git a/pages/im/components/conversation/messagePreview.vue b/pages/im/components/conversation/messagePreview.vue deleted file mode 100644 index f2ac028..0000000 --- a/pages/im/components/conversation/messagePreview.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - diff --git a/pages/im/components/conversationList.vue b/pages/im/components/conversationList.vue deleted file mode 100644 index 4d03934..0000000 --- a/pages/im/components/conversationList.vue +++ /dev/null @@ -1,181 +0,0 @@ - - - - - diff --git a/pages/im/components/friendApplyCell.vue b/pages/im/components/friendApplyCell.vue deleted file mode 100644 index ad345ab..0000000 --- a/pages/im/components/friendApplyCell.vue +++ /dev/null @@ -1,126 +0,0 @@ - - - - - diff --git a/pages/im/components/friendApplyList.vue b/pages/im/components/friendApplyList.vue deleted file mode 100644 index 56feed3..0000000 --- a/pages/im/components/friendApplyList.vue +++ /dev/null @@ -1,147 +0,0 @@ - - - - - diff --git a/pages/im/components/friendSearchList.vue b/pages/im/components/friendSearchList.vue deleted file mode 100644 index 0e92d43..0000000 --- a/pages/im/components/friendSearchList.vue +++ /dev/null @@ -1,144 +0,0 @@ - - - - - diff --git a/pages/im/components/groupUserList.vue b/pages/im/components/groupUserList.vue deleted file mode 100644 index 03d8e72..0000000 --- a/pages/im/components/groupUserList.vue +++ /dev/null @@ -1,335 +0,0 @@ - - - - - diff --git a/pages/im/components/sent/sentEmoji.vue b/pages/im/components/sent/sentEmoji.vue deleted file mode 100644 index d3c8e4d..0000000 --- a/pages/im/components/sent/sentEmoji.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - - - diff --git a/pages/im/components/sent/sentPopups.vue b/pages/im/components/sent/sentPopups.vue deleted file mode 100644 index f42e345..0000000 --- a/pages/im/components/sent/sentPopups.vue +++ /dev/null @@ -1,193 +0,0 @@ - - - - - diff --git a/pages/im/components/sent/sentText.vue b/pages/im/components/sent/sentText.vue deleted file mode 100644 index 0e745c5..0000000 --- a/pages/im/components/sent/sentText.vue +++ /dev/null @@ -1,94 +0,0 @@ - - - - - diff --git a/pages/im/components/sent/sentVoice.vue b/pages/im/components/sent/sentVoice.vue deleted file mode 100644 index 644c0f4..0000000 --- a/pages/im/components/sent/sentVoice.vue +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - - diff --git a/pages/im/components/sentMessageBar.vue b/pages/im/components/sentMessageBar.vue deleted file mode 100644 index fbcd97b..0000000 --- a/pages/im/components/sentMessageBar.vue +++ /dev/null @@ -1,135 +0,0 @@ - - - - - diff --git a/pages/im/components/show/messageState.vue b/pages/im/components/show/messageState.vue deleted file mode 100644 index 7abab99..0000000 --- a/pages/im/components/show/messageState.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - - - diff --git a/pages/im/components/show/showAudio.vue b/pages/im/components/show/showAudio.vue deleted file mode 100644 index 323b299..0000000 --- a/pages/im/components/show/showAudio.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - - - diff --git a/pages/im/components/show/showFile.vue b/pages/im/components/show/showFile.vue deleted file mode 100644 index 56e4951..0000000 --- a/pages/im/components/show/showFile.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - diff --git a/pages/im/components/show/showImage.vue b/pages/im/components/show/showImage.vue deleted file mode 100644 index 116a4c3..0000000 --- a/pages/im/components/show/showImage.vue +++ /dev/null @@ -1,105 +0,0 @@ - - - - - diff --git a/pages/im/components/show/showLocation.vue b/pages/im/components/show/showLocation.vue deleted file mode 100644 index 3c14247..0000000 --- a/pages/im/components/show/showLocation.vue +++ /dev/null @@ -1,112 +0,0 @@ - - - - - diff --git a/pages/im/components/show/showNormal.vue b/pages/im/components/show/showNormal.vue deleted file mode 100644 index 6d08131..0000000 --- a/pages/im/components/show/showNormal.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - - - diff --git a/pages/im/components/show/showText.vue b/pages/im/components/show/showText.vue deleted file mode 100644 index c198f5b..0000000 --- a/pages/im/components/show/showText.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - - diff --git a/pages/im/components/show/showVideo.vue b/pages/im/components/show/showVideo.vue deleted file mode 100644 index 606991c..0000000 --- a/pages/im/components/show/showVideo.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - - - diff --git a/pages/im/components/show/showVoice.vue b/pages/im/components/show/showVoice.vue deleted file mode 100644 index 701b537..0000000 --- a/pages/im/components/show/showVoice.vue +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - diff --git a/pages/im/components/showMessageCell.vue b/pages/im/components/showMessageCell.vue deleted file mode 100644 index 6195687..0000000 --- a/pages/im/components/showMessageCell.vue +++ /dev/null @@ -1,153 +0,0 @@ - - - - - diff --git a/pages/im/friends/index.vue b/pages/im/friends/index.vue deleted file mode 100644 index c4996d4..0000000 --- a/pages/im/friends/index.vue +++ /dev/null @@ -1,188 +0,0 @@ - - - - - diff --git a/pages/im/friends/info.vue b/pages/im/friends/info.vue deleted file mode 100644 index 72b559f..0000000 --- a/pages/im/friends/info.vue +++ /dev/null @@ -1,395 +0,0 @@ - - - - - diff --git a/pages/im/friends/mine.vue b/pages/im/friends/mine.vue deleted file mode 100644 index 8b3a920..0000000 --- a/pages/im/friends/mine.vue +++ /dev/null @@ -1,170 +0,0 @@ - - - - - diff --git a/pages/im/friends/pending.vue b/pages/im/friends/pending.vue deleted file mode 100644 index 6db2b8e..0000000 --- a/pages/im/friends/pending.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - - diff --git a/pages/im/friends/search.vue b/pages/im/friends/search.vue deleted file mode 100644 index 409d8b3..0000000 --- a/pages/im/friends/search.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - diff --git a/pages/im/group/announceCreate.vue b/pages/im/group/announceCreate.vue deleted file mode 100644 index 0f22bf1..0000000 --- a/pages/im/group/announceCreate.vue +++ /dev/null @@ -1,120 +0,0 @@ - - - - - diff --git a/pages/im/group/announcement.vue b/pages/im/group/announcement.vue deleted file mode 100644 index e177e17..0000000 --- a/pages/im/group/announcement.vue +++ /dev/null @@ -1,224 +0,0 @@ - - - - - diff --git a/pages/im/group/apply.vue b/pages/im/group/apply.vue deleted file mode 100644 index d17df26..0000000 --- a/pages/im/group/apply.vue +++ /dev/null @@ -1,120 +0,0 @@ - - - - - diff --git a/pages/im/group/chat.vue b/pages/im/group/chat.vue deleted file mode 100644 index a0d5ec0..0000000 --- a/pages/im/group/chat.vue +++ /dev/null @@ -1,292 +0,0 @@ - - - - - diff --git a/pages/im/group/index.vue b/pages/im/group/index.vue deleted file mode 100644 index 6452480..0000000 --- a/pages/im/group/index.vue +++ /dev/null @@ -1,168 +0,0 @@ - - - - - diff --git a/pages/im/group/info.vue b/pages/im/group/info.vue deleted file mode 100644 index 8b7ba61..0000000 --- a/pages/im/group/info.vue +++ /dev/null @@ -1,378 +0,0 @@ - - - - - diff --git a/pages/im/group/invite.vue b/pages/im/group/invite.vue deleted file mode 100644 index a994fc2..0000000 --- a/pages/im/group/invite.vue +++ /dev/null @@ -1,283 +0,0 @@ - - - - - diff --git a/pages/im/group/reviewed.vue b/pages/im/group/reviewed.vue deleted file mode 100644 index b8dfcdb..0000000 --- a/pages/im/group/reviewed.vue +++ /dev/null @@ -1,177 +0,0 @@ - - - - - diff --git a/pages/im/group/users.vue b/pages/im/group/users.vue deleted file mode 100644 index 608b990..0000000 --- a/pages/im/group/users.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/pages/im/index.vue b/pages/im/index.vue deleted file mode 100644 index 6992100..0000000 --- a/pages/im/index.vue +++ /dev/null @@ -1,247 +0,0 @@ - - - - - diff --git a/pages/im/mixins/imBase.js b/pages/im/mixins/imBase.js deleted file mode 100644 index fb37af2..0000000 --- a/pages/im/mixins/imBase.js +++ /dev/null @@ -1,25 +0,0 @@ -import utils from '@/utils/index.js' - -export default { - computed: { - contact() { - return function(targetId) { - return this.$store.getters.contactInfo(targetId) - } - }, - avatarSize() { - return utils.rpx2px(84) - }, - sender() { - return this.$store.getters.sender - }, - windowHeight() { - return uni.getSystemInfoSync().windowHeight - } - }, - methods: { - rpx2px(size) { - return utils.rpx2px(size) - } - } -} diff --git a/pages/im/mixins/messageActions.js b/pages/im/mixins/messageActions.js deleted file mode 100644 index 4c5db84..0000000 --- a/pages/im/mixins/messageActions.js +++ /dev/null @@ -1,133 +0,0 @@ -import * as IMLib from '@/uni_modules/RongCloud-IMWrapper/js_sdk/index' - -export default { - data() { - return { - winSize: {}, - showPop: false, - /* 弹窗按钮列表 */ - popButton: ['复制', '删除', '撤回'], - /* 弹窗定位样式 */ - popStyle: "", - pickedItem: {} - } - }, - onLoad() { - uni.getSystemInfo({ - success: (e) => { - this.winSize = { - width: e.windowWidth, - height: e.windowHeight - } - } - }) - }, - methods: { - // 隐藏功能菜单 - hidePop() { - this.showPop = false - this.pickedItem = {} - setTimeout(() => { - this.showShade = false - }, 250) - }, - // 点击会话功能菜单 - pickerMenu(e) { - const msg = this.pickedItem - console.log(msg); - switch (e) { - case '复制': - uni.setClipboardData({ - data: msg.content.content - }) - uni.showToast({ - icon: 'none', - title: '复制成功' - }) - break; - case '删除': - IMLib.deleteMessagesByIds([msg.messageId], ({ - code - }) => { - if (code === 0) { - uni.$emit('onRemoveMessage_' + msg.targetId, msg.messageId) - uni.showToast({ - title: '消息删除成功', - icon: 'none', - }) - } - }) - break; - case '撤回': - const pushContent = this.$store.getters.sender.name + '撤回了一条消息' - IMLib.recallMessage(msg.messageId, pushContent, - ({ - code, - message - }) => { - if (code === 0) { - uni.showToast({ - icon: 'none', - title: '消息撤回成功' - }) - msg.objectName = 'RC:RcNtf' - uni.$emit('onRecallMessage_' + msg.targetId, msg) - } else { - uni.showToast({ - icon: 'none', - title: '撤回失败' + code - }) - } - } - ) - break; - } - this.hidePop() - }, - messageAction(e) { - let [touches, style, item] = [e.event.touches[0], "", e.message] - - if (touches.clientY > (this.winSize.height / 2)) { - style = `bottom:${this.winSize.height-touches.clientY}px;` - } else { - style = `top:${touches.clientY}px;` - } - - if (touches.clientX > (this.winSize.width / 2)) { - style += `right:${this.winSize.width-touches.clientX}px` - } else { - style += `left:${touches.clientX}px` - } - - if (item.messageDirection == 2) { - if (item.objectName == 'RC:TxtMsg') { - this.popButton = ['复制', '删除'] - } else { - this.popButton = ['删除'] - } - } else { - if ((new Date()).getTime() - item.sentTime > 120 * 1000) { - if (item.objectName == 'RC:TxtMsg') { - this.popButton = ['复制', '删除'] - } else { - this.popButton = ['删除'] - } - } else { - if (item.objectName == 'RC:TxtMsg') { - this.popButton = ['复制', '撤回'] - } else { - this.popButton = ['删除'] - } - } - } - - this.popStyle = style - this.pickedItem = item - this.$nextTick(() => { - setTimeout(() => { - this.showPop = true; - }, 10) - }) - }, - } -} diff --git a/pages/im/mixins/onGroupDismiss.js b/pages/im/mixins/onGroupDismiss.js deleted file mode 100644 index 002c4c0..0000000 --- a/pages/im/mixins/onGroupDismiss.js +++ /dev/null @@ -1,34 +0,0 @@ -// 监听群解散的消息,直接跳转到会话列表页面 -export default { - data() { - return { - currentTargetId: '' - } - }, - onLoad(e) { - this.currentTargetId = e.targetId - - uni.$once('onGroupDismiss_' + e.targetId, () => { - uni.showToast({ - icon: 'none', - title: '当前群已解散' - }) - uni.switchTab({ - url: '/pages/im/index' - }) - }) - uni.$once('onGroupRemoveYou_' + e.targetId, () => { - uni.showToast({ - icon: 'none', - title: '您已被移出群聊' - }) - uni.switchTab({ - url: '/pages/im/index' - }) - }) - }, - onUnload() { - uni.$off('onGroupDismiss_' + this.currentTargetId) - uni.$off('onGroupRemoveYou_' + this.currentTargetId) - } -} diff --git a/pages/im/private/call.nvue b/pages/im/private/call.nvue deleted file mode 100644 index d071fee..0000000 --- a/pages/im/private/call.nvue +++ /dev/null @@ -1,322 +0,0 @@ - - - - - diff --git a/pages/im/private/chat.vue b/pages/im/private/chat.vue deleted file mode 100644 index 46a2786..0000000 --- a/pages/im/private/chat.vue +++ /dev/null @@ -1,298 +0,0 @@ - - - - - diff --git a/pages/user/index.vue b/pages/user/index.vue index 848f74b..10bd75d 100644 --- a/pages/user/index.vue +++ b/pages/user/index.vue @@ -97,12 +97,8 @@ - - - - ZH钱包 - - + + 健康档案 @@ -133,7 +129,6 @@ info } from '@/apis/interfaces/user'; import userAuth from '@/public/userAuth'; - import im from '@/utils/im/index.js' export default { data() { diff --git a/public/userAuth.js b/public/userAuth.js index 55f0691..fc16be1 100644 --- a/public/userAuth.js +++ b/public/userAuth.js @@ -12,10 +12,6 @@ import { keyAuth } from '../apis/interfaces/auth' import store from '../store' -import { - getImToken -} from '@/apis/interfaces/im.js' -import im from '@/utils/im/index.js' class userAuth { constructor() { diff --git a/store/index.js b/store/index.js index b30a2fe..c88ad6f 100644 --- a/store/index.js +++ b/store/index.js @@ -6,7 +6,6 @@ import Vue from 'vue' import Vuex from 'vuex' -import im from './modules/im.js' Vue.use(Vuex) @@ -38,8 +37,5 @@ export default new Vuex.Store({ setRefresh(state, value) { state.refresh = value } - }, - modules: { - im } }) diff --git a/utils/im/.DS_Store b/utils/im/.DS_Store deleted file mode 100644 index 9b89a14a0f889481c859a8df32ce67aabd6d6d6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z-NTn^J@v6nb3nTCi&U!%K+u1&ruHr6#0kFlI}WnnNk%tS{t~_&m<+ zZVthKHxWAnyWi~m>}Ed5{xHV4y9oCfvl(L+G(?U{ji9;K)iA+`T+I=(G|1Cg5X+!u zqQ7XuZ*Q}dNw#1KtA77SFpHx!8xB8tquJVMcdU-pv+lhonR}U^EmGH?-{R;>$~Y)> zKe&#j`NZBjmr3SF$#kv~qHqc!cQ;WI%G{NUBurJVryW+;>Q3zba(S{p9Ejt?(P|); zr>Kt(j#jI#wY{@@b~$;DUlRGIiR8e!l1+mpyn|Ay>D8Mju}mJpUgngsgv0&JjO3#{Jyl};5C1H`}&4B-ACpdmU23yo^)fDW(E=x-sSfR1koL}Ab|SZD+f2-m5A zI+dFz2G{9e7beazSZLJgjH{Jl9_+@Gz z`PCE}5d*})KVyKm#@^V4qRiR)tvozy1+)ifC>U3u0s?yF5-NBYXC{Q`A}a|{+5 UaTc_zbU?ZYC_< { - RongIMLib.getConversationList([RongIMLib.ConversationType.SYSTEM], 100, 0, (res) => { - if (res.code === 0) { - const pendingCount = res.conversations.filter((item) => { - return item.objectName == RongIMLib.ObjectName.ContactNotification - }).length - - callback(pendingCount) - } - }) -} - -export default { - getPendingCount -} diff --git a/utils/im/index.js b/utils/im/index.js deleted file mode 100644 index 6775eb9..0000000 --- a/utils/im/index.js +++ /dev/null @@ -1,135 +0,0 @@ -import * as RongIMLib from '@/uni_modules/RongCloud-IMWrapper/js_sdk/index' -import * as CallLib from '@/uni_modules/RongCloud-CallWrapper/lib/index' -import store from '@/store/index.js' -import message from './message.js' -import listeners from './listeners.js' -import { - getFriends, - getUserInfo, - getImToken, - getMyGroups -} from '@/apis/interfaces/im.js' -import { - contactModel -} from './models.js' - -const initIm = (KEY) => { - RongIMLib.init(KEY) - CallLib.init() - listeners.imLibListeners() - listeners.callLibListeners() - // 初始化的时候 自动链接 - if (store.getters.getToken !== '') { - getImToken().then(res => { - connect(res.token, res.userInfo, (res) => { - console.log('IM.CONNECT', res); - // 发布全局事件,有新消息,刷新会话列表 - uni.$emit('onReceiveMessage') - }) - }) - } -} - -const setNotifyBadge = () => { - // 获取未读消息数量 - RongIMLib.getTotalUnreadCount(({ - code, - count - }) => { - if (code === 0) { - // #ifdef APP-PLUS - plus.runtime.setBadgeNumber(count) - // #endif - if (count > 0) { - uni.setTabBarBadge({ - index: 3, - text: String(count > 99 ? '99+' : count) - }) - } else { - uni.removeTabBarBadge({ - index: 3 - }) - } - } - }) -} - -/** - * 连接IM服务 - * @param {string} token token - * @param {object} userInfo {targetId: string, name: string, portraitUrl: string} - */ -const connect = (token, userInfo, callback) => { - RongIMLib.connect(token, res => { - callback(res) - // 更新个人信息 - store.dispatch('setSenderInfo', userInfo) - // 设置未读消息数量 - setNotifyBadge() - // 首次运行获取好友列表 - const FK = 'ZH_CONTACT_' + userInfo.targetId - - uni.getStorage({ - key: FK, - success: () => { - contactModel.find((err, results) => { - console.log('初始化联系人信息', results); - results.map(item => { - store.dispatch('launchContact', item) - }) - }) - }, - fail: () => { - // 程序是首次运行,初始化加载好友和群组信息 - Promise.all([getFriends(), getMyGroups()]).then(result => { - result.map(contacts => { - contacts.map(item => { - store.dispatch('initContact', item) - }) - }) - uni.setStorageSync(FK, userInfo.targetId) - }) - } - }) - }) -} - -/** - * 断开链接 - */ -const disconnect = () => { - RongIMLib.disconnect() - // 移除提醒数量 - // #ifdef APP-PLUS - plus.runtime.setBadgeNumber(0) - // #endif - uni.removeTabBarBadge({ - index: 3 - }) -} - -// 播放状态 -let tipState = false - -const triTone = () => { - if (tipState == false) { - const innerAudioContext = uni.createInnerAudioContext() - innerAudioContext.autoplay = true - innerAudioContext.src = '/utils/im/sounds/new-msg.mp3' - innerAudioContext.onPlay(() => { - tipState = true - }) - innerAudioContext.onEnded(() => { - tipState = false - innerAudioContext.destroy() - }) - } -} - -export default { - initIm, - connect, - disconnect, - setNotifyBadge, - ...message -} diff --git a/utils/im/listeners.js b/utils/im/listeners.js deleted file mode 100644 index 5250e05..0000000 --- a/utils/im/listeners.js +++ /dev/null @@ -1,218 +0,0 @@ -import * as CallLib from '@/uni_modules/RongCloud-CallWrapper/lib/index' -import * as IMLib from '@/uni_modules/RongCloud-IMWrapper/js_sdk/index' -import store from '@/store/index.js' -import im from "@/utils/im/index.js" -import utils from '../index.js' -import { - getUserInfo -} from '@/apis/interfaces/im.js' - -// 维护消息列表,检查是否需要通知声音,设置新消息提醒的数量 -const onReceiveMessage = (message) => { - IMLib.getConversationNotificationStatus(message.conversationType, message.targetId, ({ - code, - status - }) => { - if (code === 0) { - if (status) { - // triTone() - } - } - }) - im.setNotifyBadge() - // 发布全局事件,有新消息,刷新会话列表 - uni.$emit('onReceiveMessage', message) - // 这个是为了更新消息列表页的 - uni.$emit('onReceiveMessage_' + message.targetId, message) -} - -// 检测联系人信息,不存在的时候,从服务端获取 -const checkContactExists = (message) => { - if (!store.getters.contactIsExist(message.targetId)) { - getUserInfo(message.targetId).then(res => { - console.log('targetId', res); - store.dispatch('initContact', res) - }).catch(err => { - console.error('getUserInfo ERR', err) - }) - } - if (!store.getters.contactIsExist(message.senderUserId)) { - getUserInfo(message.senderUserId).then(res => { - console.log('senderUserId', message.senderUserId, res); - store.dispatch('initContact', res) - }).catch(err => { - console.error('getUserInfo ERR', err) - }) - } -} - -// 允许通知的消息类型,触发更新消息列表操作,提示音 -const notifyMsgTypes = [ - IMLib.ObjectName.Text, - IMLib.ObjectName.File, - IMLib.ObjectName.Image, - IMLib.ObjectName.GIF, - IMLib.ObjectName.Location, - IMLib.ObjectName.Voice, - IMLib.ObjectName.HQVoice, - IMLib.ObjectName.Sight, - 'RC:IWNormalMsg' -] - -const imLibListeners = () => { - // 添加连接状态监听函数 - IMLib.addConnectionStatusListener((res) => { - console.error('连接状态监听', res.data.status) - uni.$emit('onConnectionStatusChange', res.data.status) - }) - // 添加消息监听函数 - IMLib.addReceiveMessageListener((res) => { - const message = res.data.message - console.error('[收到消息]', message) - checkContactExists(message) - if (utils.inArray(message.objectName, notifyMsgTypes)) { - onReceiveMessage(message) - } else if (message.objectName === IMLib.ObjectName.ProfileNotification) { - uni.$emit('onUpdateProfile_' + message.targetId) - // 更新联系人信息 - store.dispatch('updateContact', JSON.parse(message.content.data)) - // 调用完更新之后,删除这条消息 - IMLib.deleteMessagesByIds([message.messageId]) - } else if (message.objectName === IMLib.ObjectName.ContactNotification) { - if (message.content.operation === 'Request') { - // 触发一个新好友的通知事件,【会话列表,通讯录,新朋友】页面 - uni.$emit('onNewContactConversation', message) - uni.$emit('onNewContactFriends', message) - uni.$emit('onNewContactPendings', message) - } else if (message.content.operation === 'Delete') { - IMLib.cleanHistoryMessages(1, message.targetId, message.sentTime, false) - // 解散了就删了吧 - IMLib.removeConversation(1, message.targetId) - // 刷新会话列表 - uni.$emit('onUserDelete_' + message.targetId) - uni.$emit('onReceiveMessage', message) - } - } else if (message.objectName === IMLib.ObjectName.GroupNotification) { - // 这个是为了更新消息列表页的 - uni.$emit('onReceiveMessage_' + message.targetId, message) - // 解散群 - if (message.content.operation === 'Dismiss') { - IMLib.cleanHistoryMessages(3, message.targetId, message.sentTime, - false) - // 解散了就删了吧 - IMLib.removeConversation(3, message.targetId) - // 发布群解散的消息 - uni.$emit('onGroupDismiss') - uni.$emit('onGroupDismiss_' + message.targetId) - } else if (message.content.operation === 'REMOVE') { - // 要判断是否当前用户,然后把当前用户踢出到主页去, 删除聊天记录,会话列表 - if (message.content.extra == store.getters.sender.userId) { - IMLib.cleanHistoryMessages(3, message.targetId, message.sentTime, - false) - // 解散了就删了吧 - IMLib.removeConversation(3, message.targetId) - // 为了更新群列表 - uni.$emit('onGroupDismiss') - uni.$emit('onGroupRemoveYou_' + message.targetId) - } - uni.$emit('onReceiveMessage_' + message.targetId, message) - // 这个是为了更新消息列表页的 - } - // 触发刷新会话列表 - uni.$emit('onReceiveMessage', message) - } - }) - // 监听私聊消息已读回执 - IMLib.addReadReceiptReceivedListener(({ - data - }) => { - console.error("监听私聊消息已读回执: ", data); - uni.$emit('onReadReceiptReceived', data) - }) - // 监听消息撤回操作 - IMLib.addRecallMessageListener(({ - data - }) => { - IMLib.getMessage(data.messageId, ({ - message - }) => { - console.error("消息撤回: ", message); - im.setNotifyBadge() - uni.$emit('onReceiveMessage', message) - uni.$emit('onRecallMessage_' + message.targetId, message) - }) - }) - // 监听需要群聊消息回执 - IMLib.addReceiptRequestListener(({ - data - }) => { - uni.$emit('onReceiptRequest', data) - }) - // 群消息已读的回执 - IMLib.addReceiptResponseListener(({ - data - }) => { - // 获取本地消息 - IMLib.getMessageByUId(data.messageUId, ({ - message - }) => { - const readers = Object.keys(data.users).length - const extra = JSON.stringify({ - readers - }) - // 在消息的扩展数据中,设置已读数量 - IMLib.setMessageExtra(message.messageId, extra, (result) => { - message.extra = extra - uni.$emit('onReceiptResponse', message) - }) - }) - }) -} - -const callLibListeners = () => { - // 音视频通话相关的 - // 监听通话呼入 - CallLib.onCallReceived(({ - data - }) => { - console.error('onCallReceived'); - uni.navigateTo({ - url: '/pages/im/private/call?targetId=' + data.targetId + '&mediaType=' + - data.mediaType - }) - }) - // 通话建立成功 - CallLib.onCallConnected(() => { - uni.$emit('onCallConnected') - }) - // 外呼 - CallLib.onCallOutgoing((res) => { - console.error('onCallOutgoing', res); - uni.$emit('onCallOutgoing') - }) - // 远端响铃 - CallLib.onRemoteUserRinging((res) => { - console.error('onRemoteUserRinging', res); - uni.$emit('onRemoteUserRinging') - }) - // 远端加入 - CallLib.onRemoteUserJoined((res) => { - console.error('远端接听'); - uni.$emit('onRemoteUserJoined') - }) - // 断开链接 - CallLib.onCallDisconnected((res) => { - console.error('断开链接', res) - uni.$emit('onCallDisconnected') - }) - // 远端挂断 - CallLib.onRemoteUserLeft((res) => { - console.error('远端离开', res) - uni.$emit('onRemoteUserLeft') - }) -} - -export default { - imLibListeners, - callLibListeners -} diff --git a/utils/im/message.js b/utils/im/message.js deleted file mode 100644 index 7bdcb55..0000000 --- a/utils/im/message.js +++ /dev/null @@ -1,318 +0,0 @@ -import store from '@/store/index.js' - -import * as RongIMLib from '@/uni_modules/RongCloud-IMWrapper/js_sdk/index' - -const getMessageList = (conversationType, targetId, timeStamp, count, isForward, callback) => { - // 获取消息列表 https://doc.rongcloud.cn/imserver/server/v1/message/objectname#objectName - const objectNames = [ - 'RC:TxtMsg', - 'RC:VcMsg', - 'RC:HQVCMsg', - 'RC:ImgMsg', - 'RC:GIFMsg', - 'RC:ImgTextMsg', - 'RC:FileMsg', - 'RC:LBSMsg', - 'RC:SightMsg', - 'RC:ReferenceMsg', - 'RC:CombineMsg', - 'RC:GrpNtf', - 'RC:InfoNtf', - 'RC:RcNtf', - 'RC:IWNormalMsg' - ] - - RongIMLib.getHistoryMessagesByTimestamp( - conversationType, - targetId, - objectNames, - timeStamp, - count, - isForward, - ({ - code, - messages - }) => { - if (code === 0) { - callback(messages) - } else { - uni.showToast({ - icon: 'error', - title: code - }) - } - } - ) -} - -// 获取好友申请列表 -const getPendingList = (callback, total) => { - total = total || 100 - RongIMLib.getConversationList([RongIMLib.ConversationType.SYSTEM], total, 0, (res) => { - if (res.code === 0) { - const pendings = res.conversations.filter((item) => { - return item.objectName == RongIMLib.ObjectName.ContactNotification && - item.latestMessage.operation === 'Request' - }) - - callback(pendings) - } - }) -} - -// 群组申请列表,邀请列表 -const getGroupPendinglist = (targetId, callback) => { - const conversationType = RongIMLib.ConversationType.SYSTEM - const objectNames = ['RC:ContactNtf'] - - RongIMLib.getHistoryMessagesByTimestamp(conversationType, targetId, objectNames, 0, 1000, true, - ({ - messages - }) => { - callback(messages) - } - ) -} - -/** - * 发送文本消息 - * @param {number} conversationType 消息类型 - * @param {string} targetId 会话id - * @param {string} content 消息内容 - * @param {function} callback 回调函数 - */ -const sentText = (conversationType, targetId, content) => { - return new Promise((resolve, reject) => { - const message = { - conversationType: conversationType, - targetId: String(targetId), - content: { - objectName: 'RC:TxtMsg', - content: content, - userInfo: store.getters.sender - } - } - - sendCommonMessage(message, (messageId) => { - resolve(messageId) - }, (errCode) => { - reject(errCode) - }) - }) -} - -/** - * 发送消息 - * @param {number} conversationType 消息类型 - * @param {string} targetId 会话id - * @param {string} voiceUrl 录音的本地路径 - * @param {integer} time 录音时长 - * @param {function} user 本人信息 - */ -const sentVoice = (conversationType, targetId, voiceUrl, time) => { - return new Promise((resolve, reject) => { - const msg = { - conversationType: conversationType, - targetId: String(targetId), - content: { - objectName: 'RC:HQVCMsg', - local: 'file://' + plus.io.convertLocalFileSystemURL(voiceUrl), - duration: time == 0 ? 1 : time, - userInfo: store.getters.sender - } - } - RongIMLib.sendMediaMessage(msg, { - success: (messageId) => { - if (conversationType == 3) { - RongIMLib.sendReadReceiptRequest(messageId) - } - resolve(messageId) - }, - progress: (progress, messageId) => {}, - cancel: (messageId) => {}, - error: (errorCode, messageId) => { - reject(errorCode) - } - }) - }) -} - -// 发送的图片,可能会涉及到一次多张,用Promise来确保前端一次性清算 -const sentImage = (conversationType, targetId, imageUrl) => { - return new Promise((resolve, reject) => { - uni.getImageInfo({ - src: imageUrl, - success: (imgInfo) => { - const msg = { - conversationType: conversationType, - targetId: String(targetId), - content: { - objectName: 'RC:ImgMsg', - local: imgInfo.path, - userInfo: store.getters.sender - } - } - RongIMLib.sendMediaMessage(msg, { - success: (messageId) => { - if (conversationType == 3) { - RongIMLib.sendReadReceiptRequest(messageId) - } - resolve(messageId) - }, - progress: (progress, messageId) => {}, - cancel: (messageId) => {}, - error: (errorCode, messageId) => { - reject(errorCode) - } - }) - } - }) - }) -} - -const sentFile = (conversationType, targetId, fileUrl) => { - return new Promise((resolve, reject) => { - const msg = { - conversationType: conversationType, - targetId: String(targetId), - content: { - objectName: 'RC:FileMsg', - local: plus.io.convertLocalFileSystemURL(fileUrl), - userInfo: store.getters.sender - } - } - - RongIMLib.sendMediaMessage(msg, { - success: (messageId) => { - if (conversationType == 3) { - RongIMLib.sendReadReceiptRequest(messageId) - } - resolve(messageId) - }, - progress: (progress, messageId) => {}, - cancel: (messageId) => {}, - error: (errorCode, messageId) => { - reject(errorCode) - } - }) - }) -} - -// 发送地理位置 -const sentLocation = (conversationType, targetId, location, thumbnail) => { - return new Promise((resolve, reject) => { - const message = { - conversationType: conversationType, - targetId: String(targetId), - content: { - customType: 2, - objectName: 'RC:LBSMsg', - customFields: { - name: location.name, - address: location.address, - latitude: Number(location.latitude), - longitude: Number(location.longitude), - thumbnail: thumbnail - }, - userInfo: store.getters.sender, - } - } - - sendCommonMessage(message, (messageId) => { - resolve(messageId) - }, (errCode) => { - reject(errCode) - }) - }) -} - -/** - * 发送视频通话结果 - */ -const sentVideo = (conversationType, targetId, status, time) => { - return new Promise((resolve, reject) => { - const message = { - conversationType: conversationType, - targetId: String(targetId), - content: { - customType: 2, - objectName: 'RC:VideoMsg', - customFields: { - status: status, - duration: time - }, - userInfo: store.getters.sender, - } - } - - sendCommonMessage(message, (messageId) => { - resolve(messageId) - }, (errCode) => { - reject(errCode) - }) - }) -} - -/** - * 发送语音通话结果 - */ -const sentAudio = (conversationType, targetId, status, time) => { - return new Promise((resolve, reject) => { - const message = { - conversationType: conversationType, - targetId: String(targetId), - content: { - customType: 2, - objectName: 'RC:AudioMsg', - customFields: { - status: status, - duration: time - }, - userInfo: store.getters.sender, - } - } - - sendCommonMessage(message, (messageId) => { - resolve(messageId) - }, (errCode) => { - reject(errCode) - }) - }) -} - -/** - * 发送普通消息 - */ -const sendCommonMessage = (message, success, fail) => { - RongIMLib.sendMessage(message, ({ - code, - messageId - }) => { - if (code === 0) { - if (message.conversationType == 3) { - RongIMLib.sendReadReceiptRequest(messageId) - } - - success(messageId) - } else { - uni.showToast({ - icon: 'none', - title: '发送失败' + code - }) - fail(code) - } - }) -} - -export default { - getMessageList, - getPendingList, - getGroupPendinglist, - sentText, - sentVoice, - sentImage, - sentFile, - sentLocation, - sentVideo, - sentAudio -} diff --git a/utils/im/models.js b/utils/im/models.js deleted file mode 100644 index ffe5efc..0000000 --- a/utils/im/models.js +++ /dev/null @@ -1,27 +0,0 @@ -import { - usqlite -} from '@/uni_modules/onemue-USQLite/js_sdk/usqlite.js' - -const contactModel = usqlite.model('contacts', { - targetId: { - type: String, - primaryKey: true, - unique: true - }, - name: String, - remark: String, - hash: { - type: String, - unique: true - }, - type: { - type: Number, - default: 0 - }, - portraitUrl: String, - localAvatar: String -}) - -export { - contactModel -} diff --git a/yarn.lock b/yarn.lock index 9339e0e..0d06df0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,22 +2,22 @@ # yarn lockfile v1 -moment@^2.29.1: - version "2.29.1" - resolved "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== +"moment@^2.29.1": + "integrity" "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz" + "version" "2.29.1" -uni-read-pages@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz" - integrity sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA== +"uni-read-pages@^1.0.5": + "integrity" "sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA==" + "resolved" "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz" + "version" "1.0.5" -uni-simple-router@^2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.7.tgz" - integrity sha512-8FKv5dw7Eoonm0gkO8udprrxzin0fNUI0+AvIphFkFRH5ZmP5ZWJ2pvnWzb2NiiqQSECTSU5VSB7HhvOSwD5eA== +"uni-simple-router@^2.0.7": + "integrity" "sha512-8FKv5dw7Eoonm0gkO8udprrxzin0fNUI0+AvIphFkFRH5ZmP5ZWJ2pvnWzb2NiiqQSECTSU5VSB7HhvOSwD5eA==" + "resolved" "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.7.tgz" + "version" "2.0.7" -uview-ui@^2.0.27: - version "2.0.27" - resolved "https://registry.yarnpkg.com/uview-ui/-/uview-ui-2.0.27.tgz#1a7dde9c6246e851d768f3efd44b5fb26774a2e1" - integrity sha512-fl35rlguNPfXnwNoVv0w4zS1blFFxxSPuGR1+9SbpFGC33aiTBaoFWs/4Fppj0foS/kDCqSWcJiymNmQjPBD4g== +"uview-ui@^2.0.27": + "integrity" "sha512-d5SttbPcowomrgpL7A1LMKRbemXtyyzpPCy98/+VQR3jfSyyHC9tfj/ZeAOKpqTn1rf9gOj2wc5tda/kVmYX2Q==" + "resolved" "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.29.tgz" + "version" "2.0.29"