🐛 fix(config): NoStore

This commit is contained in:
web@ppanel 2024-12-08 16:09:27 +07:00
parent a1e4999a2f
commit 2cc18cf559
6 changed files with 29 additions and 37 deletions

View File

@ -8,13 +8,15 @@ import { Metadata, Viewport } from 'next';
import { NextIntlClientProvider } from 'next-intl'; import { NextIntlClientProvider } from 'next-intl';
import { getLocale, getMessages } from 'next-intl/server'; import { getLocale, getMessages } from 'next-intl/server';
import { PublicEnvScript } from 'next-runtime-env'; import { PublicEnvScript } from 'next-runtime-env';
import { unstable_noStore as noStore } from 'next/cache';
import { cookies } from 'next/headers'; import { cookies } from 'next/headers';
import NextTopLoader from 'nextjs-toploader'; import NextTopLoader from 'nextjs-toploader';
import React from 'react'; import React from 'react';
export async function generateMetadata(): Promise<Metadata> { export async function generateMetadata(): Promise<Metadata> {
let site: API.SiteConfig | undefined; noStore();
let site: API.SiteConfig | undefined;
await getGlobalConfig({ skipErrorHandler: true }) await getGlobalConfig({ skipErrorHandler: true })
.then((res) => { .then((res) => {
const config = res.data.data; const config = res.data.data;

View File

@ -2,13 +2,10 @@ import { env } from 'next-runtime-env';
export const locales = ['en-US', 'zh-CN']; export const locales = ['en-US', 'zh-CN'];
export const NEXT_PUBLIC_DEFAULT_LANGUAGE = export const NEXT_PUBLIC_DEFAULT_LANGUAGE = env('NEXT_PUBLIC_DEFAULT_LANGUAGE') || locales[0];
env('NEXT_PUBLIC_DEFAULT_LANGUAGE') || process.env.NEXT_PUBLIC_DEFAULT_LANGUAGE || locales[0];
export const NEXT_PUBLIC_SITE_URL = env('NEXT_PUBLIC_SITE_URL') || process.env.NEXT_PUBLIC_SITE_URL; export const NEXT_PUBLIC_SITE_URL = env('NEXT_PUBLIC_SITE_URL');
export const NEXT_PUBLIC_API_URL = env('NEXT_PUBLIC_API_URL') || process.env.NEXT_PUBLIC_API_URL; export const NEXT_PUBLIC_API_URL = env('NEXT_PUBLIC_API_URL');
export const NEXT_PUBLIC_DEFAULT_USER_EMAIL = export const NEXT_PUBLIC_DEFAULT_USER_EMAIL = env('NEXT_PUBLIC_DEFAULT_USER_EMAIL');
env('NEXT_PUBLIC_DEFAULT_USER_EMAIL') || process.env.NEXT_PUBLIC_DEFAULT_USER_EMAIL; export const NEXT_PUBLIC_DEFAULT_USER_PASSWORD = env('NEXT_PUBLIC_DEFAULT_USER_PASSWORD');
export const NEXT_PUBLIC_DEFAULT_USER_PASSWORD =
env('NEXT_PUBLIC_DEFAULT_USER_PASSWORD') || process.env.NEXT_PUBLIC_DEFAULT_USER_PASSWORD;

View File

@ -1,7 +1,9 @@
'use client'; 'use client';
import { Display } from '@/components/display'; import { Display } from '@/components/display';
import useGlobalStore from '@/config/use-global'; import useGlobalStore from '@/config/use-global';
import { Icon } from '@iconify/react'; import { Icon } from '@iconify/react';
import { isBrowser } from '@repo/ui/utils';
import { Button } from '@shadcn/ui/button'; import { Button } from '@shadcn/ui/button';
import { Card, CardContent, CardHeader, CardTitle } from '@shadcn/ui/card'; import { Card, CardContent, CardHeader, CardTitle } from '@shadcn/ui/card';
import { toast } from '@shadcn/ui/lib/sonner'; import { toast } from '@shadcn/ui/lib/sonner';
@ -14,6 +16,7 @@ import Recharge from './order/recharge';
export function SidebarRight({ ...props }: React.ComponentProps<typeof Sidebar>) { export function SidebarRight({ ...props }: React.ComponentProps<typeof Sidebar>) {
const { user } = useGlobalStore(); const { user } = useGlobalStore();
const t = useTranslations('layout'); const t = useTranslations('layout');
return ( return (
<Sidebar collapsible='none' side='right' {...props}> <Sidebar collapsible='none' side='right' {...props}>
<SidebarContent> <SidebarContent>
@ -33,7 +36,7 @@ export function SidebarRight({ ...props }: React.ComponentProps<typeof Sidebar>)
<Tooltip> <Tooltip>
<TooltipTrigger asChild> <TooltipTrigger asChild>
<CopyToClipboard <CopyToClipboard
text={`${location.origin}/auth?invite=${user?.refer_code}`} text={`${isBrowser() && location?.origin}/auth?invite=${user?.refer_code}`}
onCopy={(text, result) => { onCopy={(text, result) => {
if (result) { if (result) {
toast.success(t('copySuccess')); toast.success(t('copySuccess'));

View File

@ -2,10 +2,7 @@
import useGlobalStore from '@/config/use-global'; import useGlobalStore from '@/config/use-global';
import { checkUser, resetPassword, userLogin, userRegister } from '@/services/common/auth'; import { checkUser, resetPassword, userLogin, userRegister } from '@/services/common/auth';
import { Icon } from '@iconify/react';
import { Button } from '@shadcn/ui/button';
import { toast } from '@shadcn/ui/lib/sonner'; import { toast } from '@shadcn/ui/lib/sonner';
import { cn } from '@shadcn/ui/lib/utils';
import { useTranslations } from 'next-intl'; import { useTranslations } from 'next-intl';
import { useRouter } from 'next/navigation'; import { useRouter } from 'next/navigation';
import { ReactNode, useState, useTransition } from 'react'; import { ReactNode, useState, useTransition } from 'react';
@ -132,9 +129,9 @@ export default function UserAuthForm() {
{t(`${type || 'check'}.description`)} {t(`${type || 'check'}.description`)}
</div> </div>
</div> </div>
{!((type === 'register' && register.stop_register) || type === 'reset') && ( {/* {!((type === 'register' && register.stop_register) || type === 'reset') && (
<> <>
<div className='mb-3 flex flex-wrap items-center justify-center gap-3 font-bold'> <div className='mb-3 grid items-center justify-center gap-3 font-bold lg:grid-cols-3'>
<Button type='button' variant='outline'> <Button type='button' variant='outline'>
<Icon icon='uil:telegram' className='mr-2 size-5' /> <Icon icon='uil:telegram' className='mr-2 size-5' />
Telegram Telegram
@ -158,7 +155,7 @@ export default function UserAuthForm() {
<span className='text-muted-foreground w-[125px] text-sm'>{t('orWithEmail')}</span> <span className='text-muted-foreground w-[125px] text-sm'>{t('orWithEmail')}</span>
</div> </div>
</> </>
)} )} */}
{UserForm} {UserForm}
</> </>
); );

View File

@ -7,12 +7,14 @@ import { Toaster } from '@shadcn/ui/sonner';
import { NextIntlClientProvider } from 'next-intl'; import { NextIntlClientProvider } from 'next-intl';
import { getLocale, getMessages } from 'next-intl/server'; import { getLocale, getMessages } from 'next-intl/server';
import { PublicEnvScript } from 'next-runtime-env'; import { PublicEnvScript } from 'next-runtime-env';
import { unstable_noStore as noStore } from 'next/cache';
import { cookies } from 'next/headers'; import { cookies } from 'next/headers';
import { Metadata, Viewport } from 'next/types'; import { Metadata, Viewport } from 'next/types';
import NextTopLoader from 'nextjs-toploader'; import NextTopLoader from 'nextjs-toploader';
import React from 'react'; import React from 'react';
export async function generateMetadata(): Promise<Metadata> { export async function generateMetadata(): Promise<Metadata> {
noStore();
let site: API.SiteConfig | undefined; let site: API.SiteConfig | undefined;
await getGlobalConfig({ skipErrorHandler: true }) await getGlobalConfig({ skipErrorHandler: true })

View File

@ -2,28 +2,19 @@ import { env } from 'next-runtime-env';
export const locales = ['en-US', 'zh-CN']; export const locales = ['en-US', 'zh-CN'];
export const NEXT_PUBLIC_DEFAULT_LANGUAGE = export const NEXT_PUBLIC_DEFAULT_LANGUAGE = env('NEXT_PUBLIC_DEFAULT_LANGUAGE') || locales[0];
env('NEXT_PUBLIC_DEFAULT_LANGUAGE') || process.env.NEXT_PUBLIC_DEFAULT_LANGUAGE || locales[0];
export const NEXT_PUBLIC_SITE_URL = env('NEXT_PUBLIC_SITE_URL') || process.env.NEXT_PUBLIC_SITE_URL; export const NEXT_PUBLIC_SITE_URL = env('NEXT_PUBLIC_SITE_URL');
export const NEXT_PUBLIC_API_URL = env('NEXT_PUBLIC_API_URL') || process.env.NEXT_PUBLIC_API_URL; export const NEXT_PUBLIC_API_URL = env('NEXT_PUBLIC_API_URL');
export const NEXT_PUBLIC_DEFAULT_USER_EMAIL = export const NEXT_PUBLIC_DEFAULT_USER_EMAIL = env('NEXT_PUBLIC_DEFAULT_USER_EMAIL');
env('NEXT_PUBLIC_DEFAULT_USER_EMAIL') || process.env.NEXT_PUBLIC_DEFAULT_USER_EMAIL; export const NEXT_PUBLIC_DEFAULT_USER_PASSWORD = env('NEXT_PUBLIC_DEFAULT_USER_PASSWORD');
export const NEXT_PUBLIC_DEFAULT_USER_PASSWORD =
env('NEXT_PUBLIC_DEFAULT_USER_PASSWORD') || process.env.NEXT_PUBLIC_DEFAULT_USER_PASSWORD;
export const NEXT_PUBLIC_EMAIL = env('NEXT_PUBLIC_EMAIL') || process.env.NEXT_PUBLIC_EMAIL; export const NEXT_PUBLIC_EMAIL = env('NEXT_PUBLIC_EMAIL');
export const NEXT_PUBLIC_TELEGRAM_LINK = export const NEXT_PUBLIC_TELEGRAM_LINK = env('NEXT_PUBLIC_TELEGRAM_LINK');
env('NEXT_PUBLIC_TELEGRAM_LINK') || process.env.NEXT_PUBLIC_TELEGRAM_LINK; export const NEXT_PUBLIC_DISCORD_LINK = env('NEXT_PUBLIC_DISCORD_LINK');
export const NEXT_PUBLIC_DISCORD_LINK = export const NEXT_PUBLIC_GITHUB_LINK = env('NEXT_PUBLIC_GITHUB_LINK');
env('NEXT_PUBLIC_DISCORD_LINK') || process.env.NEXT_PUBLIC_DISCORD_LINK; export const NEXT_PUBLIC_LINKEDIN_LINK = env('NEXT_PUBLIC_LINKEDIN_LINK');
export const NEXT_PUBLIC_GITHUB_LINK = export const NEXT_PUBLIC_TWITTER_LINK = env('NEXT_PUBLIC_TWITTER_LINK');
env('NEXT_PUBLIC_GITHUB_LINK') || process.env.NEXT_PUBLIC_GITHUB_LINK; export const NEXT_PUBLIC_INSTAGRAM_LINK = env('NEXT_PUBLIC_INSTAGRAM_LINK');
export const NEXT_PUBLIC_LINKEDIN_LINK =
env('NEXT_PUBLIC_LINKEDIN_LINK') || process.env.NEXT_PUBLIC_LINKEDIN_LINK;
export const NEXT_PUBLIC_TWITTER_LINK =
env('NEXT_PUBLIC_TWITTER_LINK') || process.env.NEXT_PUBLIC_TWITTER_LINK;
export const NEXT_PUBLIC_INSTAGRAM_LINK =
env('NEXT_PUBLIC_INSTAGRAM_LINK') || process.env.NEXT_PUBLIC_INSTAGRAM_LINK;