diff --git a/pages/im/components/groupUserList.vue b/pages/im/components/groupUserList.vue index 281b643..a4009aa 100644 --- a/pages/im/components/groupUserList.vue +++ b/pages/im/components/groupUserList.vue @@ -104,7 +104,10 @@ hideAction(item) { this.actionShow = false }, - showAction(item) { + showAction(item) { + if (item.is_admin == 2) { + return + } this.currentUser = item this.actionTitle = item.name // 只有管理员以上才会弹窗 diff --git a/pages/im/components/showMessageCell.vue b/pages/im/components/showMessageCell.vue index 395eac3..1c8e2ac 100644 --- a/pages/im/components/showMessageCell.vue +++ b/pages/im/components/showMessageCell.vue @@ -121,8 +121,8 @@ icon: 'none', title: '消息撤回成功' }) - IMLib.getMessage(this.message.messageId, res => { - uni.$emit('onRecallMessage', res.message) + IMLib.getMessage(this.message.messageId, res => { + uni.$emit('onRecallMessage_' + this.message.targetId, res.message) }) } else { uni.showToast({ diff --git a/pages/im/friends/mine.vue b/pages/im/friends/mine.vue index ee25682..8b3a920 100644 --- a/pages/im/friends/mine.vue +++ b/pages/im/friends/mine.vue @@ -4,7 +4,7 @@ - + {{infoObj.name}} {{infoObj.address}} @@ -47,7 +47,13 @@ this.infoObj = res }) }, - methods: { + methods: { + previewImg(item){ + console.log(item) + uni.previewImage({ + urls:[item] + }) + }, copy() { uni.setClipboardData({ data: this.downUrl, @@ -100,7 +106,7 @@ .avatar { // padding: 14rpx; - border-radius: 10rpx; + border-radius: 20rpx; background-color: #fff; border: solid 14rpx rgba($color: #fff, $alpha:1); } diff --git a/pages/im/private/chat.vue b/pages/im/private/chat.vue index 65c7491..f74b500 100644 --- a/pages/im/private/chat.vue +++ b/pages/im/private/chat.vue @@ -84,8 +84,18 @@ } }) }) + uni.$once('onUserDelete_' + this.targetId, () => { + uni.showToast({ + icon: 'none', + title: '好友关系已解除' + }) + uni.switchTab({ + url: '/pages/im/index' + }) + }) }, onUnload() { + uni.$off('onUserDelete_' + this.targetId) uni.$off('onReceiveMessage_' + this.targetId) uni.$off('onRecallMessage_' + this.targetId) uni.$off('onRecallMessage') diff --git a/store/modules/im.js b/store/modules/im.js index fdc88d5..770eb7e 100644 --- a/store/modules/im.js +++ b/store/modules/im.js @@ -76,7 +76,8 @@ export default { name: contactInfo.name, hash: contactInfo.hash, portraitUrl: contactInfo.portraitUrl, - localAvatar: savedFilePath + localAvatar: savedFilePath, + type: contactInfo.type } model.update('targetId="' + contactInfo.targetId + '"', info, (err, res) => { @@ -90,7 +91,8 @@ export default { name: contactInfo.name, hash: contactInfo.hash, portraitUrl: contactInfo.portraitUrl, - localAvatar: result[0].localAvatar + localAvatar: result[0].localAvatar, + type: contactInfo.type } model.update('targetId="' + contactInfo.targetId + '"', info, (err, res) => { console.log('UPDATE NAME, ERR', err, info); @@ -117,7 +119,8 @@ export default { name: contactInfo.name, hash: contactInfo.hash, portraitUrl: contactInfo.portraitUrl, - localAvatar: savedFilePath + localAvatar: savedFilePath, + type: contactInfo.type } model.insert(info, (err, res) => {}) // 保存头像后,更新信息 @@ -130,7 +133,8 @@ export default { name: contactInfo.name, hash: contactInfo.hash, portraitUrl: contactInfo.portraitUrl, - localAvatar: '' + localAvatar: '', + type: contactInfo.type } model.insert(info, (err, res) => {}) } diff --git a/utils/im/index.js b/utils/im/index.js index 320af90..ca8477c 100644 --- a/utils/im/index.js +++ b/utils/im/index.js @@ -62,7 +62,7 @@ const connect = (token, userInfo, callback) => { // 设置未读消息数量 setNotifyBadge() // 首次运行获取好友列表 - const FK = 'ZHKD_' + userInfo.targetId + const FK = 'ZH_V_' + userInfo.targetId uni.getStorage({ key: FK, diff --git a/utils/im/listeners.js b/utils/im/listeners.js index 0555ba7..bad1d7a 100644 --- a/utils/im/listeners.js +++ b/utils/im/listeners.js @@ -67,7 +67,7 @@ const imLibListeners = () => { // 添加消息监听函数 IMLib.addReceiveMessageListener((res) => { const message = res.data.message - console.error('[收到消息]',IMLib.ObjectName.GroupNotification, message) + console.error('[收到消息]', message) checkContactExists(message) if (utils.inArray(message.objectName, notifyMsgTypes)) { onReceiveMessage(message) @@ -78,29 +78,36 @@ const imLibListeners = () => { // 调用完更新之后,删除这条消息 IMLib.deleteMessagesByIds([message.messageId]) } else if (message.objectName === IMLib.ObjectName.ContactNotification) { - // 触发一个新好友的通知事件,【会话列表,通讯录,新朋友】页面 - uni.$emit('onNewContactConversation', message) - uni.$emit('onNewContactFriends', message) - uni.$emit('onNewContactPendings', message) - } else if (message.objectName === IMLib.ObjectName.GroupNotification) { - console.log('踢出用户',message); + 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) { // 解散群 if (message.content.operation === 'Dismiss') { - IMLib.cleanHistoryMessages(message.conversationType, message.targetId, message.sentTime, + IMLib.cleanHistoryMessages(3, message.targetId, message.sentTime, false) // 解散了就删了吧 - IMLib.removeConversation(message.conversationType, message.targetId) + IMLib.removeConversation(3, message.targetId) // 发布群解散的消息 uni.$emit('onGroupDismiss') uni.$emit('onGroupDismiss_' + message.targetId) - } else if (message.content.operation === 'REMOVE') { - console.log('踢出', message.content); + } else if (message.content.operation === 'REMOVE') { // 要判断是否当前用户,然后把当前用户踢出到主页去, 删除聊天记录,会话列表 if (message.content.extra == store.getters.sender.userId) { - IMLib.cleanHistoryMessages(message.conversationType, message.targetId, message.sentTime, + IMLib.cleanHistoryMessages(3, message.targetId, message.sentTime, false) // 解散了就删了吧 - IMLib.removeConversation(message.conversationType, message.targetId) + IMLib.removeConversation(3, message.targetId) // 为了更新群列表 uni.$emit('onGroupDismiss') uni.$emit('onGroupRemoveYou_' + message.targetId) diff --git a/utils/im/models.js b/utils/im/models.js index a7c6ef0..e7d4031 100644 --- a/utils/im/models.js +++ b/utils/im/models.js @@ -13,9 +13,13 @@ const contactModel = usqlite.model('contacts', { type: String, unique: true }, - portraitUrl: String, + type: { + type: Number, + default: 0 + }, + portraitUrl: String, localAvatar: String -}) +}) export default { contactModel