diff --git a/ui/homepage/app/logout/LogoutClient.tsx b/ui/homepage/app/logout/LogoutClient.tsx new file mode 100644 index 0000000..2cfb2d2 --- /dev/null +++ b/ui/homepage/app/logout/LogoutClient.tsx @@ -0,0 +1,77 @@ +'use client' + +import { useEffect } from 'react' +import { useRouter } from 'next/navigation' + +import Navbar from '@components/Navbar' +import Footer from '@components/Footer' +import { AskAIButton } from '@components/AskAIButton' +import { useLanguage } from '@i18n/LanguageProvider' +import { translations } from '@i18n/translations' +import { useUser } from '@lib/userStore' + +export function LogoutClient() { + const router = useRouter() + const { logout } = useUser() + const { language } = useLanguage() + const navCopy = translations[language].nav.account + const signingOutMessage = language === 'zh' ? '正在安全退出,请稍候…' : 'Signing you out safely. One moment…' + + useEffect(() => { + let cancelled = false + + const performLogout = async () => { + try { + await logout() + } finally { + if (!cancelled) { + router.replace('/') + router.refresh() + } + } + } + + void performLogout() + + return () => { + cancelled = true + } + }, [logout, router]) + + return ( +
+ +
+
+
+ + + + +
+

{navCopy.logout}

+

{signingOutMessage}

+
+
+
+ ) +} diff --git a/ui/homepage/app/logout/page.tsx b/ui/homepage/app/logout/page.tsx index 2e90b79..e0e1b81 100644 --- a/ui/homepage/app/logout/page.tsx +++ b/ui/homepage/app/logout/page.tsx @@ -1,76 +1,23 @@ -'use client' +import { Suspense } from 'react' -import { useEffect } from 'react' -import { useRouter } from 'next/navigation' - -import Navbar from '@components/Navbar' -import Footer from '@components/Footer' -import { AskAIButton } from '@components/AskAIButton' -import { useLanguage } from '@i18n/LanguageProvider' -import { translations } from '@i18n/translations' -import { useUser } from '@lib/userStore' - -export default function LogoutPage() { - const router = useRouter() - const { logout } = useUser() - const { language } = useLanguage() - const navCopy = translations[language].nav.account - const signingOutMessage = language === 'zh' ? '正在安全退出,请稍候…' : 'Signing you out safely. One moment…' - - useEffect(() => { - let cancelled = false - const performLogout = async () => { - try { - await logout() - } finally { - if (!cancelled) { - router.replace('/') - router.refresh() - } - } - } - - void performLogout() - - return () => { - cancelled = true - } - }, [logout, router]) +import { LogoutClient } from './LogoutClient' +function LogoutFallback() { return (
-
-
- - - - -
-

{navCopy.logout}

-

{signingOutMessage}

+
-
) } + +export default function LogoutPage() { + return ( + }> + + + ) +}