fix: chat bloqueado en 'Iniciando chat...' cuando sesión pierde chat_conv_id

Si el usuario tiene chat_user_id en sesión pero no chat_conv_id (sesión
expirada o servidor reiniciado), mount() ahora busca la conversación activa
del contacto en la BD o crea una nueva. Antes quedaba sin convId y el enviar
no hacía nada.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro
2026-07-19 18:56:16 +00:00
co-authored by Claude Sonnet 4.6
parent 3ee850776b
commit 7307d87c80
+21 -8
View File
@@ -80,16 +80,29 @@ class PublicChat extends Component
$this->paso = 'chat'; $this->paso = 'chat';
$convId = session('chat_conv_id'); $convId = session('chat_conv_id');
if ($convId) { $conv = $convId ? ChatConversation::find($convId) : null;
$conv = ChatConversation::find($convId);
if ($conv) { if (! $conv) {
$this->convId = $conv->id; // Sesión perdida o expirada: buscar conversación activa existente o crear una nueva
$this->estadoConv = $conv->estado; session()->forget('chat_conv_id');
$this->cargarMensajes(); $contact = ChatContact::where('canal', 'web')->where('user_id', $user->id)->first();
} else { if ($contact) {
session()->forget('chat_conv_id'); $conv = $contact->activeConversation()
?? ChatConversation::create([
'contact_id' => $contact->id,
'canal' => 'web',
'estado' => 'bot',
'ultimo_mensaje_at' => now(),
]);
} }
} }
if ($conv) {
$this->convId = $conv->id;
$this->estadoConv = $conv->estado;
session()->put('chat_conv_id', $conv->id);
$this->cargarMensajes();
}
} }
protected $rules = [ protected $rules = [