fix(聊天): 添加对话创建节流防止重复创建
在 talk.js 中添加节流机制,相同会话5秒内只创建一次 移除 ContactModal.vue 中冗余的选择逻辑 更新测试用的默认 token
This commit is contained in:
parent
9853c435d1
commit
c4bed90c52
@ -196,23 +196,11 @@ const onTriggerContact = (item) => {
|
||||
const clicked = items.value.find((val) => val.id === item.id)
|
||||
if (!clicked) return
|
||||
|
||||
if (selectType.value === 1) {
|
||||
// 单选:清空后仅选中当前
|
||||
items.value.forEach(contact => {
|
||||
contact.checked = false
|
||||
})
|
||||
clicked.checked = true
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
// 多选:限制同一类型选择
|
||||
if (!clicked.checked) {
|
||||
const checked = items.value.filter(c => c.checked)
|
||||
const currentType = checked.length ? checked[0].talk_type : null
|
||||
if (currentType && currentType !== clicked.talk_type) {
|
||||
// 切换类型时清空已选,保持单一类型
|
||||
items.value.forEach(c => { if (c.checked) c.checked = false })
|
||||
}
|
||||
|
||||
clicked.checked = true
|
||||
} else {
|
||||
clicked.checked = false
|
||||
@ -501,10 +489,10 @@ watch(() => state.groupChatListSearchGroupName, (newValue, oldValue) => {
|
||||
<n-virtual-list v-if="!loading" style="max-height: 470px" :item-size="65" :items="searchFilter">
|
||||
<template #default="{ item }">
|
||||
<div class="flex items-center border-b-2px border-b-solid h-65px border-b-#FBFBFB"
|
||||
@click="onTriggerContact(item)">
|
||||
>
|
||||
<div class="mr-22px">
|
||||
<n-radio v-if="selectType === 1" :checked="item.checked" />
|
||||
<n-checkbox v-else :checked="item.checked" />
|
||||
|
||||
<n-checkbox v-model:checked="item.checked" />
|
||||
</div>
|
||||
<div class="mr-10px">
|
||||
|
||||
|
@ -9,6 +9,8 @@ import { ServeClearTalkUnreadNum, ServeCreateTalkList } from '@/api/chat'
|
||||
import { useTalkStore, useDialogueStore, useSettingsStore } from '@/store'
|
||||
import { isScrollAtBottom, scrollToBottom } from '@/utils/dom'
|
||||
|
||||
const talkCreateThrottle = new Map()
|
||||
|
||||
/**
|
||||
* 好友状态事件
|
||||
*/
|
||||
@ -114,7 +116,20 @@ class Talk extends Base {
|
||||
} else {
|
||||
// 如果发送者ID为2,则为聊天助手,不在pc端处理,不创建会话
|
||||
if ((this.talk_type === 1 && this.receiver_id !== 2) || this.talk_type !== 1) {
|
||||
// 节流:相同会话在 5 秒内只创建一次
|
||||
const idx = this.getIndexName()
|
||||
const now = Date.now()
|
||||
const last = talkCreateThrottle.get(idx) || 0
|
||||
if (now - last < 5000) {
|
||||
return
|
||||
}
|
||||
talkCreateThrottle.set(idx, now)
|
||||
try {
|
||||
return this.addTalkItem()
|
||||
} finally {
|
||||
// 不立即清除时间戳,保留自然过期窗口
|
||||
// 可根据需要在 addTalkItem 成功后也不清除,以维持 5s 窗口
|
||||
}
|
||||
} else {
|
||||
return
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ export function isLoggedIn() {
|
||||
*/
|
||||
export function getAccessToken() {
|
||||
// return storage.get(AccessToken) || ''
|
||||
return JSON.parse(localStorage.getItem('token'))||'46d71a72d8d845ad7ed23eba9bdde260e635407190c2ce1bf7fd22088e41682ea07773ec65cae8946d2003f264d55961f96e0fc5da10eb96d3a348c1664e9644ce2108c311309f398ae8ea1b8200bfd490e5cb6e8c52c9e5d493cbabb163368f8351420451a631dbfa749829ee4cda49b77b5ed2d3dced5d0f2b7dd9ee76ba5465c84a17c23af040cd92b6b2a4ea48befbb5c729dcdad0a9c9668befe84074cc24f78899c1d947f8e7f94c7eda5325b8ed698df729e76febb98549ef3482ae942fb4f4a1c92d21836fa784728f0c5483aab2760a991b6b36e6b10c84f840a6433a6ecc31dee36e8f1c6158818bc89d22da55718ea544a2c35e17b4fff0054c664aa0f023b5cc8d3ae22dc4a81e6d547a94e6d95415ef1711cb82a64c9b1ce3c79674360f474b857c99fb79d69d5cf1b1497d4ba7fc7ddb45721090eae0f9813f'
|
||||
return JSON.parse(localStorage.getItem('token'))||'cb5a111b82e99f5ec00da4c8b0f6b853a3c4f96de0d0bd701622de596a751ba651f7c3ac2c32ccbe40d646600580827b7a330fa4e9c320d9cb44e9c50e4b84b9d7d4597fba9f1c6850ff35dce8a8ac8fde05e61a887f59cc332940c82e1c9e18fc5e97d22c71139d6dfc7ac6660772d2cfe458c3adf3fbdbae3313a3cf5a781f2662ed237d4df4a9c438345012eb5b532dfd34e6fbc3f2e1c45c0be80f79332dfb858682028860bc8e62be876e5d370e0526a64b00d1be32081ddf1ede0ba11b82f0387f2070bdc0bf7c201ac14821d45485becee940d93bd7b9cb3231f7ab0cf0921632d02752d8c270ae5e8b2c28458a48da8c4c7addd9da4655546e409f757322957b21540b97e6cceb4e24a18c9886a4acfbb423ea85c720a22ad95582df06180ee458f1b66c254e11bb3c7eac17'
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user