修复新人进房欢迎消息显示
This commit is contained in:
@@ -2642,13 +2642,20 @@
|
||||
|
||||
// 后端下发的带有 welcome_user 的也是系统欢迎/离开消息,加上属性标记
|
||||
if (msg.welcome_user) {
|
||||
const welcomeKind = msg.welcome_kind || 'entry_broadcast';
|
||||
div.setAttribute('data-system-user', msg.welcome_user);
|
||||
// 收到后端来的新欢迎消息时,把界面上该用户旧的都删掉
|
||||
const welcomeSelector = `[data-system-user="${msg.welcome_user}"]`;
|
||||
const oldWelcomes = container.querySelectorAll(welcomeSelector);
|
||||
oldWelcomes.forEach(el => el.remove());
|
||||
renderBatch?.publicFragment.querySelectorAll(welcomeSelector).forEach(el => el.remove());
|
||||
renderBatch?.privateFragment.querySelectorAll(welcomeSelector).forEach(el => el.remove());
|
||||
div.setAttribute('data-system-welcome-kind', welcomeKind);
|
||||
// 收到后端来的同类欢迎消息时,只替换同类旧消息,避免进场播报误删新人礼包和 AI 欢迎。
|
||||
const removeSameWelcome = (root) => {
|
||||
root?.querySelectorAll('[data-system-user]').forEach(el => {
|
||||
if (el.dataset.systemUser === msg.welcome_user && (el.dataset.systemWelcomeKind || 'entry_broadcast') === welcomeKind) {
|
||||
el.remove();
|
||||
}
|
||||
});
|
||||
};
|
||||
removeSameWelcome(container);
|
||||
removeSameWelcome(renderBatch?.publicFragment);
|
||||
removeSameWelcome(renderBatch?.privateFragment);
|
||||
}
|
||||
|
||||
// 路由规则(复刻原版):
|
||||
|
||||
Reference in New Issue
Block a user