diff --git a/app/ClientLayout.js b/app/ClientLayout.js index 4c6e883..760e4fe 100644 --- a/app/ClientLayout.js +++ b/app/ClientLayout.js @@ -57,7 +57,17 @@ export default function ClientLayout({ children }) { setCurrentLanguage(savedLanguage); i18n.changeLanguage(savedLanguage); - // Load user from JWT via AuthService + if (savedLanguage === "ar") { + document.documentElement.dir = "rtl"; + document.documentElement.lang = "ar"; + } else { + document.documentElement.dir = "ltr"; + document.documentElement.lang = "en"; + } + }, [i18n]); + + // Re-read user from JWT on every route change (handles post-login) + useEffect(() => { const authUser = AuthService.getUser(); if (authUser) { setUser({ @@ -71,15 +81,7 @@ export default function ClientLayout({ children }) { } else { setUser(null); } - - if (savedLanguage === "ar") { - document.documentElement.dir = "rtl"; - document.documentElement.lang = "ar"; - } else { - document.documentElement.dir = "ltr"; - document.documentElement.lang = "en"; - } - }, [i18n]); + }, [pathname]); useEffect(() => { const handleClickOutside = (event) => { diff --git a/app/page.js b/app/page.js index eaa49a8..a7505e4 100644 --- a/app/page.js +++ b/app/page.js @@ -2,6 +2,7 @@ import { useState, useRef, useEffect } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; +import { usePathname } from 'next/navigation'; import { ShieldCheck, Lock, @@ -96,11 +97,12 @@ export default function HomePage() { const [user, setUser] = useState(null); const [showUserMenu, setShowUserMenu] = useState(false); const menuRef = useRef(null); + const pathname = usePathname(); const [allProperties, setAllProperties] = useState([]); const [loading, setLoading] = useState(true); - // Fetch properties from API on mount + // Re-read user from JWT on every route change useEffect(() => { const authUser = AuthService.getUser(); if (authUser) { @@ -109,7 +111,13 @@ export default function HomePage() { email: authUser.email, role: AuthService.isOwner() ? 'owner' : 'customer', }); + } else { + setUser(null); } + }, [pathname]); + + // Fetch properties from API on mount + useEffect(() => { async function fetchProperties() { try {