55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
|
import Base from './base'
|
||
|
import { useTalkStore, useDialogueStore } from '@/store'
|
||
|
import ws from '@/connect'
|
||
|
import { bus } from '@/utils/event-bus'
|
||
|
|
||
|
/**
|
||
|
* 已读回执事件
|
||
|
*/
|
||
|
class Read extends Base {
|
||
|
/**
|
||
|
* @var resource 资源
|
||
|
*/
|
||
|
resource
|
||
|
|
||
|
/**
|
||
|
* 场景类型
|
||
|
*/
|
||
|
type
|
||
|
|
||
|
/**
|
||
|
* 初始化构造方法
|
||
|
*
|
||
|
* @param {Object} resource Socket消息
|
||
|
*/
|
||
|
constructor(resource, type) {
|
||
|
super()
|
||
|
|
||
|
this.resource = resource
|
||
|
this.type = type
|
||
|
this.handle()
|
||
|
}
|
||
|
|
||
|
handle() {
|
||
|
if (this.type == 'total') {
|
||
|
console.error('====接收到了新版已读回执全量=====', this.resource)
|
||
|
const readList = this.resource.result
|
||
|
if (readList.length > 0) {
|
||
|
readList.forEach((item) => {
|
||
|
useDialogueStore().updateDialogueRecord({
|
||
|
msg_id: item.msg_id,
|
||
|
read_total_num: item.read_total_num
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
} else if (this.type == 'incr') {
|
||
|
console.error('====接收到了新版已读回执增量=====', this.resource)
|
||
|
// 由于直接使用增量的数值,会导致消息列表的已读回执数量不准确,可能多可能少
|
||
|
// 所以收到增量消息后,直接手动触发一次查询全量
|
||
|
bus.emit('check-visible-out-elements', 'incr')
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default Read
|