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:
co-authored by
Claude Sonnet 4.6
parent
3ee850776b
commit
7307d87c80
@@ -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 = [
|
||||||
|
|||||||
Reference in New Issue
Block a user