Moved setIsConnected & setUserPairingId in the DashboardLayout

This commit is contained in:
Sadrinho27 2025-09-30 14:57:45 +02:00
parent 5aff257c54
commit 9057b7af1e
2 changed files with 39 additions and 32 deletions

View File

@ -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<any>(null)
const [myProcesses, setMyProcesses] = useState<string[]>([])
const [isConnected, setIsConnected] = useState(false)
const [userPairingId, setUserPairingId] = useState<string | null>(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
<Shield className="h-12 w-12 mx-auto mb-4 text-blue-600 animate-pulse" />
<p className="text-gray-600">Vérification de l'authentification...</p>
</div>
{<Iframe iframeUrl={iframeUrl} />}
</div>
)
}

View File

@ -19,14 +19,6 @@ export default function HomePage() {
const router = useRouter()
const iframeUrl = process.env.NEXT_PUBLIC_4NK_IFRAME_URL || "https://dev3.4nkweb.com"
useEffect(() => {
setIsConnected(UserStore.getInstance().isConnected());
});
useEffect(() => {
setUserPairingId(UserStore.getInstance().getUserPairingId());
});
return (
<div className="min-h-screen bg-gradient-to-br from-slate-50 to-blue-50">
{/* Header */}
@ -96,7 +88,7 @@ export default function HomePage() {
/>
)}
{isConnected && <Iframe iframeUrl={iframeUrl} />}
{<Iframe iframeUrl={iframeUrl} />}
{/* Product Features */}
<section id="produit" className="py-16 px-4 bg-white">