fix: fix ssr window
This commit is contained in:
parent
6c875cdf39
commit
5303bb895d
|
@ -1,18 +1,11 @@
|
||||||
|
'use client'
|
||||||
|
|
||||||
import React, { Suspense } from 'react';
|
import React, { Suspense } from 'react';
|
||||||
import type { Metadata } from 'next';
|
|
||||||
import { useTranslations } from 'next-intl';
|
|
||||||
import { Link } from '../../../../../navigation';
|
import { Link } from '../../../../../navigation';
|
||||||
import { CustomInput } from '../../../../../components/view/CustomInput';
|
import { CustomInput } from '../../../../../components/view/CustomInput';
|
||||||
import { i18nText } from '../../../../../i18nKeys';
|
import { i18nText } from '../../../../../i18nKeys';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
|
||||||
title: 'Bbuddy - Account - Messages',
|
|
||||||
description: 'Bbuddy desc messages'
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Messages({ params: { locale } }: { params: { locale: string } }) {
|
export default function Messages({ params: { locale } }: { params: { locale: string } }) {
|
||||||
const t = useTranslations('Account.Messages');
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ol className="breadcrumb">
|
<ol className="breadcrumb">
|
||||||
|
|
|
@ -1,18 +1,14 @@
|
||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { ReactNode, useEffect } from 'react';
|
import { ReactNode } from 'react';
|
||||||
import { redirect, notFound } from 'next/navigation';
|
import dynamic from 'next/dynamic';
|
||||||
import { useLocalStorage } from '../../../hooks/useLocalStorage';
|
|
||||||
import { AUTH_TOKEN_KEY } from '../../../constants/common';
|
|
||||||
|
|
||||||
export default function AccountLayout({ children }: { children: ReactNode }) {
|
const Account = dynamic(() => import('../../../components/Account/AccountWrapper'), { ssr: false });
|
||||||
const [token] = useLocalStorage(AUTH_TOKEN_KEY, '');
|
|
||||||
|
|
||||||
useEffect(() => {
|
export default function AccountBaseLayout({ children }: { children: ReactNode }) {
|
||||||
if(!token){
|
return (
|
||||||
notFound();
|
<Account>
|
||||||
}
|
{children}
|
||||||
}, []);
|
</Account>
|
||||||
|
);
|
||||||
return children;
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import React, { ReactNode } from 'react';
|
import React, { ReactNode } from 'react';
|
||||||
|
import type { Metadata } from 'next';
|
||||||
import { comfortaa, inter } from './fonts';
|
import { comfortaa, inter } from './fonts';
|
||||||
import '../styles/style.scss';
|
import '../styles/style.scss';
|
||||||
|
|
||||||
|
@ -7,6 +8,11 @@ type RootLayoutProps = {
|
||||||
params: { locale: string };
|
params: { locale: string };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: 'Bbuddy',
|
||||||
|
description: 'Bbuddy'
|
||||||
|
};
|
||||||
|
|
||||||
export default function RootLayout({ children, params: { locale } }: RootLayoutProps) {
|
export default function RootLayout({ children, params: { locale } }: RootLayoutProps) {
|
||||||
return (
|
return (
|
||||||
<html lang={locale} className={`${comfortaa.variable} ${inter.variable}`}>
|
<html lang={locale} className={`${comfortaa.variable} ${inter.variable}`}>
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
'use client'
|
||||||
|
|
||||||
|
import { ReactNode, useEffect } from 'react';
|
||||||
|
import { notFound } from 'next/navigation';
|
||||||
|
import { AUTH_TOKEN_KEY } from '../../constants/common';
|
||||||
|
import { useLocalStorage } from '../../hooks/useLocalStorage';
|
||||||
|
|
||||||
|
function AccountWrapper ({ children }: { children: ReactNode }) {
|
||||||
|
const [token] = useLocalStorage(AUTH_TOKEN_KEY, '');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if(!token){
|
||||||
|
return notFound();
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AccountWrapper;
|
|
@ -14,10 +14,10 @@ type HeaderAuthLinksProps = {
|
||||||
separatorClass?: string;
|
separatorClass?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const HeaderAuthLinks: FC<HeaderAuthLinksProps> = ({
|
function HeaderAuthLinks ({
|
||||||
locale,
|
locale,
|
||||||
separatorClass = 'b-header__nav__list__line'
|
separatorClass = 'b-header__nav__list__line'
|
||||||
}) => {
|
}: HeaderAuthLinksProps) {
|
||||||
const [isOpenModal, setIsOpenModal] = useState<boolean>(false);
|
const [isOpenModal, setIsOpenModal] = useState<boolean>(false);
|
||||||
const [mode, setMode] = useState<'enter' | 'register' | 'reset' | 'finish'>('enter');
|
const [mode, setMode] = useState<'enter' | 'register' | 'reset' | 'finish'>('enter');
|
||||||
const selectedLayoutSegment = useSelectedLayoutSegment();
|
const selectedLayoutSegment = useSelectedLayoutSegment();
|
||||||
|
@ -75,4 +75,6 @@ export const HeaderAuthLinks: FC<HeaderAuthLinksProps> = ({
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
export default HeaderAuthLinks;
|
||||||
|
|
|
@ -2,14 +2,16 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useSelectedLayoutSegment } from 'next/navigation';
|
import { useSelectedLayoutSegment } from 'next/navigation';
|
||||||
|
import dynamic from 'next/dynamic';
|
||||||
import { Link } from '../../../navigation';
|
import { Link } from '../../../navigation';
|
||||||
import { HeaderAuthLinks } from './HeaderAuthLinks';
|
|
||||||
|
|
||||||
type HeaderMenuProps = {
|
type HeaderMenuProps = {
|
||||||
locale: string;
|
locale: string;
|
||||||
linkConfig: { path: string, title: string }[];
|
linkConfig: { path: string, title: string }[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const AuthLinks = dynamic(() => import('./HeaderAuthLinks'), { ssr: false });
|
||||||
|
|
||||||
export const HeaderMenu = ({
|
export const HeaderMenu = ({
|
||||||
locale,
|
locale,
|
||||||
linkConfig
|
linkConfig
|
||||||
|
@ -26,7 +28,7 @@ export const HeaderMenu = ({
|
||||||
<Link href={`/${path}` as any} className={pathname === path ? 'active' : ''}>{title}</Link>
|
<Link href={`/${path}` as any} className={pathname === path ? 'active' : ''}>{title}</Link>
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
<HeaderAuthLinks locale={locale} />
|
<AuthLinks locale={locale} />
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
'use client'
|
'use client'
|
||||||
|
|
||||||
import React, { FC, useState } from 'react';
|
import React, { FC, useState } from 'react';
|
||||||
|
import dynamic from 'next/dynamic';
|
||||||
import { useSelectedLayoutSegment } from 'next/navigation';
|
import { useSelectedLayoutSegment } from 'next/navigation';
|
||||||
import { HeaderAuthLinks } from './HeaderAuthLinks';
|
|
||||||
import { Link } from '../../../navigation';
|
import { Link } from '../../../navigation';
|
||||||
|
|
||||||
type HeaderMenuMobileProps = {
|
type HeaderMenuMobileProps = {
|
||||||
|
@ -10,6 +10,8 @@ type HeaderMenuMobileProps = {
|
||||||
linkConfig: { path: string, title: string }[];
|
linkConfig: { path: string, title: string }[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const AuthLinks = dynamic(() => import('./HeaderAuthLinks'), { ssr: false });
|
||||||
|
|
||||||
export const HeaderMobileMenu: FC<HeaderMenuMobileProps> = ({
|
export const HeaderMobileMenu: FC<HeaderMenuMobileProps> = ({
|
||||||
locale,
|
locale,
|
||||||
linkConfig
|
linkConfig
|
||||||
|
@ -35,7 +37,7 @@ export const HeaderMobileMenu: FC<HeaderMenuMobileProps> = ({
|
||||||
<img className="img-default" src="/images/avatar.png" alt=""/>
|
<img className="img-default" src="/images/avatar.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
<ul className="menu-mobile__header__nav">
|
<ul className="menu-mobile__header__nav">
|
||||||
<HeaderAuthLinks
|
<AuthLinks
|
||||||
separatorClass="menu-mobile__header__nav__line"
|
separatorClass="menu-mobile__header__nav__line"
|
||||||
locale={locale}
|
locale={locale}
|
||||||
/>
|
/>
|
||||||
|
|
Loading…
Reference in New Issue