diff --git a/app/dashboard/layout.tsx b/app/dashboard/layout.tsx index 69c528e..395e943 100644 --- a/app/dashboard/layout.tsx +++ b/app/dashboard/layout.tsx @@ -28,6 +28,7 @@ import AuthModal from "@/components/4nk/AuthModal" import MessageBus from "@/lib/4nk/MessageBus" import UserStore from "@/lib/4nk/UserStore" import Iframe from "@/components/4nk/Iframe" +import EventBus from "@/lib/4nk/EventBus" // DebugInfo supprimé export default function DashboardLayout({ children }: { children: React.ReactNode }) { @@ -35,6 +36,7 @@ export default function DashboardLayout({ children }: { children: React.ReactNod const [isAuthModalOpen, setIsAuthModalOpen] = useState(false) const [processes, setProcesses] = useState(null) const [myProcesses, setMyProcesses] = useState([]) + const [isConnected, setIsConnected] = useState(false) const [userPairingId, setUserPairingId] = useState(null) const [isLoading, setIsLoading] = useState(true) const [isMockMode, setIsMockMode] = useState(false) @@ -57,12 +59,24 @@ export default function DashboardLayout({ children }: { children: React.ReactNod ] useEffect(() => { - const messageBus = MessageBus.getInstance(iframeUrl); - messageBus.isReady().then(() => { - messageBus.getProcesses().then((processes: any) => { - setProcesses(processes); - }); + const connected = UserStore.getInstance().isConnected(); + console.log('[Login] User connected:', connected); + setIsConnected(connected); + }, []); + + useEffect(() => { + const pairingId = UserStore.getInstance().getUserPairingId(); + console.log('[Login] User pairing ID:', pairingId); + setUserPairingId(pairingId); + }, []); + + useEffect(() => { + const messageBus = MessageBus.getInstance(iframeUrl); + messageBus.isReady().then(() => { + messageBus.getProcesses().then((processes: any) => { + setProcesses(processes); }); + }); }, [iframeUrl]); useEffect(() => { @@ -94,24 +108,17 @@ export default function DashboardLayout({ children }: { children: React.ReactNod try { const userStore = UserStore.getInstance() const accessToken = userStore.getAccessToken() - const messageBus = MessageBus.getInstance(iframeUrl) if (accessToken) { - // Vérifier la validité du token en mode production - // const isValid = await messageBus.validateToken() - // if (isValid) { - setIsAuthenticated(true) - const pairingId = userStore.getUserPairingId() - setUserInfo({ - id: pairingId?.slice(0, 8) + "...", - name: "Utilisateur 4NK", - email: "user@4nk.io", - role: "Utilisateur", - company: "Organisation 4NK", - }) - // } - } else { - setIsAuthModalOpen(true) + setIsAuthenticated(true) + const pairingId = userStore.getUserPairingId() + setUserInfo({ + id: pairingId?.slice(0, 8) + "...", + name: "Utilisateur 4NK", + email: "user@4nk.io", + role: "Utilisateur", + company: "Organisation 4NK", + }) } } catch (error) { console.error("Error checking authentication:", error) @@ -132,8 +139,14 @@ export default function DashboardLayout({ children }: { children: React.ReactNod } const handleLogout = () => { - const userStore = UserStore.getInstance() - userStore.disconnect() + UserStore.getInstance().disconnect(); + setIsConnected(false); + + // Émettre un événement pour vider aussi les messages locaux dans MessageConsole + EventBus.getInstance().emit('CLEAR_CONSOLE'); + + // Vider les processes + setProcesses(null); // Afficher un message de confirmation avec options setShowLogoutConfirm(true) @@ -155,6 +168,8 @@ export default function DashboardLayout({ children }: { children: React.ReactNod

Vérification de l'authentification...

+ {