diff --git a/pages/im/components/show/messageState.vue b/pages/im/components/show/messageState.vue
new file mode 100644
index 0000000..d32429a
--- /dev/null
+++ b/pages/im/components/show/messageState.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ JSON.parse(message.extra).readers || 0 }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/im/components/show/showImage.vue b/pages/im/components/show/showImage.vue
index 4b78be9..b65691d 100644
--- a/pages/im/components/show/showImage.vue
+++ b/pages/im/components/show/showImage.vue
@@ -1,11 +1,7 @@
-
-
-
-
-
-
+
+
{{ contact(message.senderUserId).name }}
@@ -17,6 +13,7 @@
diff --git a/pages/im/private/chat.vue b/pages/im/private/chat.vue
index b8ca211..8c61be1 100644
--- a/pages/im/private/chat.vue
+++ b/pages/im/private/chat.vue
@@ -77,9 +77,21 @@
if (msg.targetId == this.targetId) {
this.getNewMessage()
}
+ })
+ uni.$on('onRecallMessage', (res) => {
+ if (res.targetId == this.targetId) {
+ this.messages = this.messages.map(item => {
+ if (res.messageId == item.messageId) {
+ return res
+ } else {
+ return item
+ }
+ })
+ }
})
},
- onUnload() {
+ onUnload() {
+ uni.$off('onRecallMessage')
uni.$off('onReadReceiptReceived')
},
methods: {
diff --git a/utils/im/listeners.js b/utils/im/listeners.js
index 7b2d620..93393fe 100644
--- a/utils/im/listeners.js
+++ b/utils/im/listeners.js
@@ -93,22 +93,36 @@ const imLibListeners = () => {
uni.$emit('onReadReceiptReceived', data)
})
// 监听消息撤回操作
- IMLib.addRecallMessageListener((res) => {
- IMLib.getMessage(res.data.messageId, (res) => {
- console.error("消息撤回: ", res.message);
- uni.$emit('onRecallMessage', res.message)
+ IMLib.addRecallMessageListener((res) => {
+ IMLib.getMessage(res.data.messageId, (res) => {
+ console.error("消息撤回: ", res.message);
+ uni.$emit('onRecallMessage', res.message)
})
})
// 监听需要群聊消息回执
IMLib.addReceiptRequestListener(({
data
- }) => {
- console.error('onReceiptRequested', data);
+ }) => {
uni.$emit('onReceiptRequest', data)
})
// 群消息已读的回执
- IMLib.addReceiptResponseListener((res) => {
- console.error('onReceiptResponse', res);
+ 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)
+ })
+ })
})
}