From fe9b79a18d5378b6b1fbcfd99c67d483e6a053d3 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 16 Feb 2022 16:29:52 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=BE=A4=E5=A4=B4=E5=83=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=97=B6=E4=B8=8D=E5=90=8C=E6=AD=A5=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/im/components/groupUserList.vue | 47 +++++++++++++++------------ pages/im/group/chat.nvue | 3 +- pages/im/group/info.vue | 4 +-- pages/im/private/chat.nvue | 2 +- store/modules/im.js | 10 +++--- utils/im/index.js | 3 +- 6 files changed, 37 insertions(+), 32 deletions(-) diff --git a/pages/im/components/groupUserList.vue b/pages/im/components/groupUserList.vue index c328223..4efd6f6 100644 --- a/pages/im/components/groupUserList.vue +++ b/pages/im/components/groupUserList.vue @@ -3,13 +3,14 @@ - + {{ item.name }} 管理 群主 - + 邀请好友 @@ -49,15 +50,20 @@ return { users: [], isOwner: false, - isAdmin: false, + isAdmin: false, adminUid: 0, members: 0, actionShow: false, actionMap: [], actionTitle: '', - currentUser: {} + currentUser: {}, + avatarSize: 40 } }, + created() { + this.avatarSize = 126 / 750 * wx.getSystemInfoSync().windowWidth + console.log(this.avatarSize) + }, mounted() { this.initGroupInfo() this.initUsers() @@ -66,7 +72,7 @@ initGroupInfo() { getGroupBase(this.targetId).then(res => { this.isOwner = res.is_owner - this.isAdmin = res.is_admin + this.isAdmin = res.is_admin this.adminUid = res.user_id this.members = res.members }) @@ -79,8 +85,6 @@ }, hideAction(item) { this.actionShow = false - this.actionTitle = '' - this.currentUser = {} }, showAction(item) { this.currentUser = item @@ -180,6 +184,7 @@ content: '这个操作不可逆转,确定要转让群主身份么?', success: (res) => { if (res.confirm) { + console.log(this.targetId, this.currentUser.targetId); transferGroupOwner(this.targetId, this.currentUser.targetId).then( res => { uni.showToast({ @@ -245,7 +250,7 @@ display: flex; flex-direction: column; justify-content: center; - align-items: center; + align-items: center; border-radius: 0 10rpx 0 0; &.active { @@ -274,19 +279,19 @@ text-align: center; right: -45rpx; top: -20rpx; - } - - .owner { - position: absolute; - background-color: $text-price; - transform: rotate(45deg); - color: #ffffff; - font-size: 12rpx; - width: 100rpx; - padding-top: 30rpx; - text-align: center; - right: -45rpx; - top: -20rpx; + } + + .owner { + position: absolute; + background-color: $text-price; + transform: rotate(45deg); + color: #ffffff; + font-size: 12rpx; + width: 100rpx; + padding-top: 30rpx; + text-align: center; + right: -45rpx; + top: -20rpx; } } } diff --git a/pages/im/group/chat.nvue b/pages/im/group/chat.nvue index b597f7a..a601c61 100644 --- a/pages/im/group/chat.nvue +++ b/pages/im/group/chat.nvue @@ -5,7 +5,6 @@ - @@ -54,7 +53,7 @@ }, computed: { latestMessage() { - if (this.messages.length > 1) { + if (this.messages.length) { return this.messages[this.messages.length - 1] } else { return { diff --git a/pages/im/group/info.vue b/pages/im/group/info.vue index b86f58a..a6cced9 100644 --- a/pages/im/group/info.vue +++ b/pages/im/group/info.vue @@ -17,8 +17,8 @@ - - + + diff --git a/pages/im/private/chat.nvue b/pages/im/private/chat.nvue index 02dfc0f..1dba707 100644 --- a/pages/im/private/chat.nvue +++ b/pages/im/private/chat.nvue @@ -62,7 +62,7 @@ }, computed: { latestMessage() { - if (this.messages.length > 1) { + if (this.messages.length) { return this.messages[this.messages.length - 1] } else { return { diff --git a/store/modules/im.js b/store/modules/im.js index 8077e66..6526937 100644 --- a/store/modules/im.js +++ b/store/modules/im.js @@ -34,7 +34,7 @@ export default { } }, mutations: { - updateContactInfo(state, contactInfo) { + updateContactInfo(state, contactInfo) { Vue.set(state.contacts, contactInfo.targetId, contactInfo) }, setSenderInfo(state, contactInfo) { @@ -68,7 +68,6 @@ export default { // 没有数据,直接新增一条 dispatch('initContact', contactInfo) } else if (contactInfo.hash != result[0].hash) { - commit('updateContactInfo', contactInfo) if (contactInfo.portraitUrl && contactInfo.portraitUrl != result[0].portraitUrl) { saveAvatar(contactInfo, (savedFilePath) => { const info = { @@ -79,8 +78,8 @@ export default { localAvatar: savedFilePath } model.update('targetId="' + contactInfo.targetId + '"', info, (err, - res) => { - console.log('UPDATE AVATAR, ERR', err); + res) => { + console.log('UPDATE AVATAR, ERR', err, info); }) commit('updateContactInfo', info) }) @@ -93,8 +92,9 @@ export default { localAvatar: result[0].localAvatar } model.update('targetId="' + contactInfo.targetId + '"', info, (err, res) => { - console.log('UPDATE NAME, ERR', err); + console.log('UPDATE NAME, ERR', err, info); }) + commit('updateContactInfo', info) } } else { console.log('updateContact, 无操作'); diff --git a/utils/im/index.js b/utils/im/index.js index 7f52693..59e44cc 100644 --- a/utils/im/index.js +++ b/utils/im/index.js @@ -150,7 +150,8 @@ const addListeners = () => { }) } newMessage(message) - } else if (message.objectName === RongIMLib.ObjectName.ProfileNotification) { + } else if (message.objectName === RongIMLib.ObjectName.ProfileNotification) { + // 更新会话信息 store.dispatch('updateContact', JSON.parse(message.content.data)) // 调用完更新之后,删除这条消息 RongIMLib.deleteMessagesByIds([message.messageId], ({ From 255a727d32d216eeea91baedf383ca3871597801 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 16 Feb 2022 16:58:45 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E7=A7=81=E8=81=8A=E4=B8=AD=E5=A4=B4?= =?UTF-8?q?=E5=83=8F=E9=94=99=E8=AF=AF=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/im/components/sentPopups.nvue | 8 +++----- pages/im/components/sentText.nvue | 4 ++-- pages/im/components/sentVoice.nvue | 5 ++--- pages/im/group/chat.nvue | 16 ++++++++-------- pages/im/private/chat.nvue | 11 +++++++++-- public/userAuth.js | 3 +-- utils/im/index.js | 22 +++++++++++----------- utils/im/message.js | 12 +++++++----- 8 files changed, 43 insertions(+), 38 deletions(-) diff --git a/pages/im/components/sentPopups.nvue b/pages/im/components/sentPopups.nvue index 6772875..a91ba04 100644 --- a/pages/im/components/sentPopups.nvue +++ b/pages/im/components/sentPopups.nvue @@ -64,7 +64,7 @@ } }, computed: { - user() { + sender() { return this.$store.getters.sender } }, @@ -87,8 +87,7 @@ sourceType: ['album'], success: res => { im.sentImage(this.conversationType, this.targetId, res.tempFilePaths[0], - this.user, ( - res) => { + this.sender, (res) => { this.success() }) } @@ -99,8 +98,7 @@ sourceType: ['camera'], success: res => { im.sentImage(this.conversationType, this.targetId, res.tempFilePaths[0], - this.user, ( - res) => { + this.sender, (res) => { this.success() }) } diff --git a/pages/im/components/sentText.nvue b/pages/im/components/sentText.nvue index ee7ef6b..fe3396b 100644 --- a/pages/im/components/sentText.nvue +++ b/pages/im/components/sentText.nvue @@ -29,7 +29,7 @@ disabled() { return this.inputTxt.length === 0 }, - user() { + sender() { return this.$store.getters.sender } }, @@ -50,7 +50,7 @@ sent() { if (!this.disabled) { RongIMLib.clearTextMessageDraft(this.conversationType, this.targetId) - im.sentText(this.conversationType, this.targetId, this.inputTxt, this.user, () => { + im.sentText(this.conversationType, this.targetId, this.inputTxt, this.sender, () => { this.$emit('success') this.inputTxt = '' }) diff --git a/pages/im/components/sentVoice.nvue b/pages/im/components/sentVoice.nvue index 65ef4cf..30a60c1 100644 --- a/pages/im/components/sentVoice.nvue +++ b/pages/im/components/sentVoice.nvue @@ -36,7 +36,7 @@ } }, computed: { - user() { + sender() { return this.$store.getters.sender } }, @@ -85,8 +85,7 @@ // 监听录音结束 this.recorderManager.onStop(res => { im.sentVoice(this.conversationType, this.targetId, res.tempFilePath, (this.maxRecordTime - - this - .recordTime), this.user, () => { + this.recordTime), this.sender, () => { setTimeout(() => { this.$emit('success') }, 500) diff --git a/pages/im/group/chat.nvue b/pages/im/group/chat.nvue index a601c61..a6d6faa 100644 --- a/pages/im/group/chat.nvue +++ b/pages/im/group/chat.nvue @@ -4,7 +4,7 @@ + :src="contact(item.senderUserId).portraitUrl" /> @@ -60,11 +60,11 @@ sentTime: 0 } } - }, - contact() { - return function(targetId) { - return this.$store.getters.contactInfo(targetId) - } + }, + contact() { + return function(targetId) { + return this.$store.getters.contactInfo(targetId) + } } }, onLoad(e) { @@ -108,7 +108,7 @@ this.latestMessage.sentTime, 1, false, - (messages) => { + (messages) => { this.messages = this.messages.concat(messages) this.scrollBottom() }) @@ -122,7 +122,7 @@ 100, true, (messages) => { - this.messages = messages.reverse() + this.messages = messages.reverse() this.scrollBottom() }) }, diff --git a/pages/im/private/chat.nvue b/pages/im/private/chat.nvue index 1dba707..bf07114 100644 --- a/pages/im/private/chat.nvue +++ b/pages/im/private/chat.nvue @@ -8,7 +8,7 @@ + :src="contact(item.senderUserId).portraitUrl" /> @@ -69,6 +69,11 @@ sentTime: 0 } } + }, + contact() { + return function(targetId) { + return this.$store.getters.contactInfo(targetId) + } } }, onLoad(e) { @@ -113,6 +118,7 @@ 1, false, (messages) => { + console.log(messages); this.messages = this.messages.concat(messages) this.scrollBottom() }) @@ -125,7 +131,8 @@ 0, 100, true, - (messages) => { + (messages) => { + console.log(messages); this.messages = messages.reverse() this.scrollBottom() }) diff --git a/public/userAuth.js b/public/userAuth.js index faf4df5..55f0691 100644 --- a/public/userAuth.js +++ b/public/userAuth.js @@ -109,8 +109,7 @@ class userAuth { .access_token) // 在这里,登录成功,链接IM服务 getImToken().then(res => { - console.log('在这获取IM-TOKEN', res); - im.connect(res.token, res.userInfo) + im.connect(res.token, res.userInfo, () => {}) }) resolve() }).catch(err => { diff --git a/utils/im/index.js b/utils/im/index.js index 59e44cc..53ca2e9 100644 --- a/utils/im/index.js +++ b/utils/im/index.js @@ -71,14 +71,14 @@ const connect = (token, userInfo, callback) => { }) }) }, - fail: () => { + fail: () => { // 程序是首次运行,初始化加载好友和群组信息 - Promise.all([getFriends(), getMyGroups()]).then(result => { + Promise.all([getFriends(), getMyGroups()]).then(result => { result.map(contacts => { contacts.map(item => { store.dispatch('initContact', item) }) - }) + }) uni.setStorageSync(FK, userInfo.targetId) }) } @@ -141,16 +141,16 @@ const addListeners = () => { }).catch(err => { console.log('ERR', err) }) - } - if (!store.getters.contactIsExist(message.senderUserId)) { - getUserInfo(message.senderUserId).then(res => { - store.dispatch('initContact', res) - }).catch(err => { - console.log('ERR', err) - }) + } + if (!store.getters.contactIsExist(message.senderUserId)) { + getUserInfo(message.senderUserId).then(res => { + store.dispatch('initContact', res) + }).catch(err => { + console.log('ERR', err) + }) } newMessage(message) - } else if (message.objectName === RongIMLib.ObjectName.ProfileNotification) { + } else if (message.objectName === RongIMLib.ObjectName.ProfileNotification) { // 更新会话信息 store.dispatch('updateContact', JSON.parse(message.content.data)) // 调用完更新之后,删除这条消息 diff --git a/utils/im/message.js b/utils/im/message.js index 53e51d1..add384b 100644 --- a/utils/im/message.js +++ b/utils/im/message.js @@ -151,14 +151,15 @@ const sentImage = (conversationType, targetId, imageUrl, user, callback) => { }) } -const sentGif = (conversationType, targetId, gifUrl, time, callback) => { +const sentGif = (conversationType, targetId, gifUrl, time, user, callback) => { const msg = { conversationType: conversationType, targetId: String(targetId), content: { objectName: 'RC:GIFMsg', local: 'file:///' + plus.io.convertLocalFileSystemURL(gifUrl), - duration: time + duration: time, + userInfo: user } } RongIMLib.sendMediaMessage(msg, { @@ -177,14 +178,15 @@ const sentGif = (conversationType, targetId, gifUrl, time, callback) => { }) } -const sendFile = (conversationType, targetId, fileUrl, time, callback) => { +const sendFile = (conversationType, targetId, fileUrl, time, user, callback) => { const msg = { conversationType: conversationType, targetId: String(targetId), content: { objectName: 'RC:FileMsg', local: 'file:///' + plus.io.convertLocalFileSystemURL(fileUrl), - duration: time + duration: time, + userInfo: user } } RongIMLib.sendMediaMessage(msg, { @@ -204,7 +206,7 @@ const sendFile = (conversationType, targetId, fileUrl, time, callback) => { } export default { - getMessageList, + getMessageList, getPendingList, sentText, sentVoice, From ff334c1cb0ec8cbb373f69907aab879107dbe9eb Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 16 Feb 2022 17:11:07 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=B5=84=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/im/components/groupUserList.vue | 129 +++++++++++++------------- store/modules/im.js | 4 +- 2 files changed, 68 insertions(+), 65 deletions(-) diff --git a/pages/im/components/groupUserList.vue b/pages/im/components/groupUserList.vue index 4efd6f6..5a3cfcf 100644 --- a/pages/im/components/groupUserList.vue +++ b/pages/im/components/groupUserList.vue @@ -1,16 +1,15 @@