From cc1dd017cefb1ebcbe7a6c723b71b0934127ad7b Mon Sep 17 00:00:00 2001 From: lkddi Date: Sat, 11 Apr 2026 15:58:38 +0800 Subject: [PATCH] Ensure self join message is rendered --- app/Http/Controllers/ChatController.php | 19 ++++++++++++------- resources/views/chat/frame.blade.php | 11 +++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/ChatController.php b/app/Http/Controllers/ChatController.php index 674408f..35b3a3f 100644 --- a/app/Http/Controllers/ChatController.php +++ b/app/Http/Controllers/ChatController.php @@ -116,6 +116,7 @@ class ChatController extends Controller // 3. 广播和初始化欢迎(仅限初次进入) $newbieEffect = null; $initialPresenceTheme = null; + $initialWelcomeMessage = null; if (! $isAlreadyInRoom) { // 广播 UserJoined 事件,通知房间内的其他人 @@ -174,14 +175,17 @@ class ChatController extends Controller ]; // 当会员等级带有专属主题时,把横幅与特效字段并入系统消息,供前端展示豪华进场效果。 - if (! empty($vipPresencePayload)) { - $generalWelcomeMsg = array_merge($generalWelcomeMsg, $vipPresencePayload); - $initialPresenceTheme = $vipPresencePayload; - } + if (! empty($vipPresencePayload)) { + $generalWelcomeMsg = array_merge($generalWelcomeMsg, $vipPresencePayload); + $initialPresenceTheme = $vipPresencePayload; + } - $this->chatState->pushMessage($id, $generalWelcomeMsg); - // 修复:之前使用了 ->toOthers() 导致自己看不到自己的进场提示 - broadcast(new MessageSent($id, $generalWelcomeMsg)); + // 把当前这次进房生成的欢迎消息带回前端,确保用户自己也一定能看到。 + $initialWelcomeMessage = $generalWelcomeMsg; + + $this->chatState->pushMessage($id, $generalWelcomeMsg); + // 修复:之前使用了 ->toOthers() 导致自己看不到自己的进场提示 + broadcast(new MessageSent($id, $generalWelcomeMsg)); // 会员专属特效需要单独广播给其他在线成员,自己则在页面初始化后本地补播。 if (! empty($vipPresencePayload['presence_effect'])) { @@ -273,6 +277,7 @@ class ChatController extends Controller 'weekEffect' => $this->shopService->getActiveWeekEffect($user), 'newbieEffect' => $newbieEffect, 'initialPresenceTheme' => $initialPresenceTheme, + 'initialWelcomeMessage' => $initialWelcomeMessage, 'historyMessages' => $historyMessages, 'pendingProposal' => $pendingProposalData, 'pendingDivorce' => $pendingDivorceData, diff --git a/resources/views/chat/frame.blade.php b/resources/views/chat/frame.blade.php index 73f274e..acca144 100644 --- a/resources/views/chat/frame.blade.php +++ b/resources/views/chat/frame.blade.php @@ -232,6 +232,17 @@ }); @endif + @if (!empty($initialWelcomeMessage)) + + @endif @if (!empty($newbieEffect) || !empty($weekEffect) || !empty($initialPresenceTheme['presence_effect']))