From a1ef3b97073fd48f822fce586255037f65b83f13 Mon Sep 17 00:00:00 2001 From: yassinedorbozgithub Date: Wed, 25 Jun 2025 10:49:57 +0100 Subject: [PATCH] fix: resolve chat anonymous user --- api/src/extensions/channels/web/base-web-channel.ts | 7 ++++++- widget/src/providers/ChatProvider.tsx | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/api/src/extensions/channels/web/base-web-channel.ts b/api/src/extensions/channels/web/base-web-channel.ts index 7dd143a8..6e256dda 100644 --- a/api/src/extensions/channels/web/base-web-channel.ts +++ b/api/src/extensions/channels/web/base-web-channel.ts @@ -126,7 +126,12 @@ export default abstract class BaseWebChannelHandler< try { const menu = await this.menuService.getTree(); - client.emit('settings', { menu, ...settings }); + const hasProfile = !!client.data.session?.web?.profile; + client.emit('settings', { + menu, + hasProfile, + ...settings, + }); } catch (err) { this.logger.warn('Unable to retrieve menu ', err); client.emit('settings', settings); diff --git a/widget/src/providers/ChatProvider.tsx b/widget/src/providers/ChatProvider.tsx index 358736b7..89a6ec4e 100644 --- a/widget/src/providers/ChatProvider.tsx +++ b/widget/src/providers/ChatProvider.tsx @@ -15,6 +15,7 @@ import React, { useEffect, useState, } from "react"; +import { Packet, PacketType } from "socket.io-parser"; import { useSubscribeBroadcastChannel } from "../hooks/useSubscribeBroadcastChannel"; import { StdEventType } from "../types/chat-io-messages.types"; @@ -415,13 +416,24 @@ const ChatProvider: React.FC<{ const endConnection = () => { setConnectionState(0); }; + const resetProfile = ({ type, data }: Packet) => { + if ( + type === PacketType.EVENT && + data[0] === "settings" && + !data[1]?.hasProfile + ) { + localStorage.removeItem("profile"); + } + }; + socketCtx.socket.io.on("packet", resetProfile); socketCtx.socket.io.on("reconnect", reSubscribe); socketCtx.socket.io.on("close", endConnection); socketCtx.socket.io.on("reconnect_error", endConnection); socketCtx.socket.io.on("reconnect_failed", endConnection); return () => { + socketCtx.socket.io.off("packet", resetProfile); socketCtx.socket.io.off("reconnect", reSubscribe); socketCtx.socket.io.off("close", endConnection); socketCtx.socket.io.off("reconnect_error", endConnection);