Skip to content

Commit 65a2b37

Browse files
committed
♻️ refactor: refactor page async params
1 parent 89a8ea2 commit 65a2b37

File tree

18 files changed

+90
-60
lines changed

18 files changed

+90
-60
lines changed

src/app/(main)/discover/(detail)/model/[...slugs]/page.tsx

+9-3
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@ import InfoSidebar from './features/InfoSidebar';
1717
import ParameterList from './features/ParameterList';
1818
import ProviderList from './features/ProviderList';
1919

20-
type Props = { params: { slugs: string[] }; searchParams: { hl?: Locales } };
20+
type Props = { params: Promise<{ slugs: string[] }>; searchParams: Promise<{ hl?: Locales }> };
21+
22+
export const generateMetadata = async (props: Props) => {
23+
const params = await props.params;
24+
const searchParams = await props.searchParams;
2125

22-
export const generateMetadata = async ({ params, searchParams }: Props) => {
2326
const { slugs } = params;
2427
const identifier = decodeURIComponent(slugs.join('/'));
2528
const { t, locale } = await translation('metadata', searchParams?.hl);
@@ -59,7 +62,10 @@ export const generateMetadata = async ({ params, searchParams }: Props) => {
5962
};
6063
};
6164

62-
const Page = async ({ params, searchParams }: Props) => {
65+
const Page = async (props: Props) => {
66+
const params = await props.params;
67+
const searchParams = await props.searchParams;
68+
6369
const { slugs } = params;
6470

6571
const identifier = decodeURIComponent(slugs.join('/'));

src/app/(main)/discover/(detail)/plugin/[slug]/page.tsx

+8-4
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import { notFound } from 'next/navigation';
22
import urlJoin from 'url-join';
33

44
import StructuredData from '@/components/StructuredData';
5-
import { Locales } from '@/locales/resources';
65
import { ldModule } from '@/server/ld';
76
import { metadataModule } from '@/server/metadata';
87
import { DiscoverService } from '@/server/services/discover';
98
import { translation } from '@/server/translation';
9+
import { DiscoverPageProps } from '@/types/discover';
1010
import { isMobileDevice } from '@/utils/server/responsive';
1111

1212
import DetailLayout from '../../features/DetailLayout';
@@ -16,9 +16,10 @@ import InfoSidebar from './features/InfoSidebar';
1616
import ParameterList from './features/ParameterList';
1717
import Schema from './features/Schema';
1818

19-
type Props = { params: { slug: string }; searchParams: { hl?: Locales } };
19+
export const generateMetadata = async (props: DiscoverPageProps) => {
20+
const params = await props.params;
21+
const searchParams = await props.searchParams;
2022

21-
export const generateMetadata = async ({ params, searchParams }: Props) => {
2223
const { slug: identifier } = params;
2324
const { t, locale } = await translation('metadata', searchParams?.hl);
2425

@@ -57,7 +58,10 @@ export const generateMetadata = async ({ params, searchParams }: Props) => {
5758
};
5859
};
5960

60-
const Page = async ({ params, searchParams }: Props) => {
61+
const Page = async (props: DiscoverPageProps) => {
62+
const params = await props.params;
63+
const searchParams = await props.searchParams;
64+
6165
const { slug: identifier } = params;
6266
const { t, locale } = await translation('metadata', searchParams?.hl);
6367
const mobile = isMobileDevice();

src/app/(main)/discover/(detail)/provider/[slug]/page.tsx

+8-5
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ import urlJoin from 'url-join';
33

44
import StructuredData from '@/components/StructuredData';
55
import { CustomMDX } from '@/components/mdx';
6-
import { Locales } from '@/locales/resources';
76
import { ldModule } from '@/server/ld';
87
import { metadataModule } from '@/server/metadata';
98
import { DiscoverService } from '@/server/services/discover';
109
import { DocService } from '@/server/services/doc';
1110
import { translation } from '@/server/translation';
12-
import { DiscoverModelItem } from '@/types/discover';
11+
import { DiscoverModelItem, DiscoverPageProps } from '@/types/discover';
1312
import { isMobileDevice } from '@/utils/server/responsive';
1413

1514
import DetailLayout from '../../features/DetailLayout';
@@ -18,9 +17,10 @@ import Header from './features/Header';
1817
import InfoSidebar from './features/InfoSidebar';
1918
import ModelList from './features/ModelList';
2019

21-
type Props = { params: { slug: string }; searchParams: { hl?: Locales } };
20+
export const generateMetadata = async (props: DiscoverPageProps) => {
21+
const params = await props.params;
22+
const searchParams = await props.searchParams;
2223

23-
export const generateMetadata = async ({ params, searchParams }: Props) => {
2424
const { slug: identifier } = params;
2525
const { t, locale } = await translation('metadata', searchParams?.hl);
2626
const { t: td } = await translation('models', searchParams?.hl);
@@ -55,7 +55,10 @@ export const generateMetadata = async ({ params, searchParams }: Props) => {
5555
};
5656
};
5757

58-
const Page = async ({ params, searchParams }: Props) => {
58+
const Page = async (props: DiscoverPageProps) => {
59+
const params = await props.params;
60+
const searchParams = await props.searchParams;
61+
5962
const { slug: identifier } = params;
6063
const { t, locale } = await translation('metadata', searchParams?.hl);
6164
const { t: td } = await translation('models', searchParams?.hl);

src/app/(main)/discover/(list)/assistants/[slug]/page.tsx

+8-5
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import urlJoin from 'url-join';
22

33
import StructuredData from '@/components/StructuredData';
4-
import { Locales } from '@/locales/resources';
54
import { ldModule } from '@/server/ld';
65
import { metadataModule } from '@/server/metadata';
76
import { DiscoverService } from '@/server/services/discover';
87
import { translation } from '@/server/translation';
9-
import { AssistantCategory } from '@/types/discover';
8+
import { AssistantCategory, DiscoverPageProps } from '@/types/discover';
109
import { isMobileDevice } from '@/utils/server/responsive';
1110

1211
import List from '../features/List';
1312

14-
type Props = { params: { slug: AssistantCategory }; searchParams: { hl?: Locales } };
13+
export const generateMetadata = async (props: DiscoverPageProps) => {
14+
const params = await props.params;
15+
const searchParams = await props.searchParams;
1516

16-
export const generateMetadata = async ({ params, searchParams }: Props) => {
1717
const { t, locale } = await translation('metadata', searchParams?.hl);
1818
const { t: td } = await translation('discover', searchParams?.hl);
1919

@@ -26,7 +26,10 @@ export const generateMetadata = async ({ params, searchParams }: Props) => {
2626
});
2727
};
2828

29-
const Page = async ({ params, searchParams }: Props) => {
29+
const Page = async (props: DiscoverPageProps<AssistantCategory>) => {
30+
const params = await props.params;
31+
const searchParams = await props.searchParams;
32+
3033
const { t, locale } = await translation('metadata', searchParams?.hl);
3134
const { t: td } = await translation('discover', searchParams?.hl);
3235
const mobile = isMobileDevice();

src/app/(main)/discover/(list)/models/[slug]/page.tsx

+8-5
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ import urlJoin from 'url-join';
22

33
import StructuredData from '@/components/StructuredData';
44
import { DEFAULT_LANG } from '@/const/locale';
5-
import { Locales } from '@/locales/resources';
65
import { ldModule } from '@/server/ld';
76
import { metadataModule } from '@/server/metadata';
87
import { DiscoverService } from '@/server/services/discover';
98
import { translation } from '@/server/translation';
10-
import { AssistantCategory } from '@/types/discover';
9+
import { DiscoverPageProps } from '@/types/discover';
1110
import { isMobileDevice } from '@/utils/server/responsive';
1211

1312
import List from '../features/List';
1413

15-
type Props = { params: { slug: AssistantCategory }; searchParams: { hl?: Locales } };
14+
export const generateMetadata = async (props: DiscoverPageProps) => {
15+
const params = await props.params;
16+
const searchParams = await props.searchParams;
1617

17-
export const generateMetadata = async ({ params, searchParams }: Props) => {
1818
const { t, locale } = await translation('metadata', searchParams?.hl);
1919

2020
const discoverService = new DiscoverService();
@@ -30,7 +30,10 @@ export const generateMetadata = async ({ params, searchParams }: Props) => {
3030
});
3131
};
3232

33-
const Page = async ({ params, searchParams }: Props) => {
33+
const Page = async (props: DiscoverPageProps) => {
34+
const params = await props.params;
35+
const searchParams = await props.searchParams;
36+
3437
const { t, locale } = await translation('metadata', searchParams?.hl);
3538
const mobile = isMobileDevice();
3639

src/app/(main)/discover/(list)/plugins/[slug]/page.tsx

+8-5
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import urlJoin from 'url-join';
22

33
import StructuredData from '@/components/StructuredData';
4-
import { Locales } from '@/locales/resources';
54
import { ldModule } from '@/server/ld';
65
import { metadataModule } from '@/server/metadata';
76
import { DiscoverService } from '@/server/services/discover';
87
import { translation } from '@/server/translation';
9-
import { PluginCategory } from '@/types/discover';
8+
import { DiscoverPageProps, PluginCategory } from '@/types/discover';
109
import { isMobileDevice } from '@/utils/server/responsive';
1110

1211
import List from '../features/List';
1312

14-
type Props = { params: { slug: PluginCategory }; searchParams: { hl?: Locales } };
13+
export const generateMetadata = async (props: DiscoverPageProps) => {
14+
const params = await props.params;
15+
const searchParams = await props.searchParams;
1516

16-
export const generateMetadata = async ({ params, searchParams }: Props) => {
1717
const { t, locale } = await translation('metadata', searchParams?.hl);
1818
const { t: td } = await translation('discover', searchParams?.hl);
1919

@@ -26,7 +26,10 @@ export const generateMetadata = async ({ params, searchParams }: Props) => {
2626
});
2727
};
2828

29-
const Page = async ({ params, searchParams }: Props) => {
29+
const Page = async (props: DiscoverPageProps<PluginCategory>) => {
30+
const params = await props.params;
31+
const searchParams = await props.searchParams;
32+
3033
const { t, locale } = await translation('metadata', searchParams?.hl);
3134
const { t: td } = await translation('discover', searchParams?.hl);
3235
const mobile = isMobileDevice();

src/app/(main)/discover/search/page.tsx

+8-4
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,16 @@ const ProvidersResult = dynamic(() => import('./features/ProvidersResult'), {
2525
});
2626

2727
type Props = {
28-
searchParams: {
28+
searchParams: Promise<{
2929
hl?: Locales;
3030
q?: string;
3131
type?: 'assistants' | 'plugins' | 'models' | 'providers';
32-
};
32+
}>;
3333
};
3434

35-
export const generateMetadata = async ({ searchParams }: Props) => {
35+
export const generateMetadata = async (props: Props) => {
36+
const searchParams = await props.searchParams;
37+
3638
const { t, locale } = await translation('metadata', searchParams?.hl);
3739

3840
return metadataModule.generate({
@@ -44,7 +46,9 @@ export const generateMetadata = async ({ searchParams }: Props) => {
4446
});
4547
};
4648

47-
const Page = async ({ searchParams }: Props) => {
49+
const Page = async (props: Props) => {
50+
const searchParams = await props.searchParams;
51+
4852
const { q, type = 'assistants' } = searchParams;
4953
if (!q) redirect(urlJoin(`/discover`, type));
5054
const keywords = decodeURIComponent(q);

src/app/(main)/files/(content)/@modal/(.)[id]/page.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ interface Params {
66
id: string;
77
}
88

9-
type Props = { params: Params };
9+
type Props = { params: Promise<Params> };
10+
11+
const Page = async (props: Props) => {
12+
const params = await props.params;
1013

11-
const Page = ({ params }: Props) => {
1214
return (
1315
<FullscreenModal detail={<FileDetail id={params.id} />}>
1416
<FilePreview id={params.id} />

src/app/(main)/files/[id]/page.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ interface Params {
1313
id: string;
1414
}
1515

16-
type Props = { params: Params };
16+
type Props = { params: Promise<Params> };
1717

1818
const createCaller = createCallerFactory(lambdaRouter);
1919

20-
const FilePage = async ({ params }: Props) => {
20+
const FilePage = async (props: Props) => {
21+
const params = await props.params;
22+
2123
const { userId } = await getUserAuth();
2224

2325
const caller = createCaller({ userId });

src/app/(main)/repos/[id]/evals/dataset/page.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Flexbox } from 'react-layout-kit';
66
import CircleLoading from '@/components/CircleLoading';
77
import { useKnowledgeBaseStore } from '@/store/knowledgeBase';
88

9-
import { PageProps } from '../type';
9+
import { PageProps } from '../../type';
1010
import DatasetDetail from './DatasetDetail';
1111
import DatasetList from './DatasetList';
1212
import EmptyGuide from './EmptyGuide';

src/app/(main)/repos/[id]/evals/evaluation/page.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Flexbox } from 'react-layout-kit';
55
import CircleLoading from '@/components/CircleLoading';
66
import { useKnowledgeBaseStore } from '@/store/knowledgeBase';
77

8-
import { PageProps } from '../type';
8+
import { PageProps } from '../../type';
99
import EmptyGuide from './EmptyGuide';
1010
import EvaluationList from './EvaluationList';
1111

src/app/(main)/repos/[id]/evals/layout.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,20 @@ import { Flexbox } from 'react-layout-kit';
44

55
import { serverFeatureFlags } from '@/config/featureFlags';
66

7+
import { PageProps } from '../type';
78
import Container from './components/Container';
89
import { Tabs } from './components/Tabs';
9-
import { PageProps } from './type';
1010

11-
export default ({ children, params }: PropsWithChildren<PageProps>) => {
11+
export default async (props: PropsWithChildren<PageProps>) => {
1212
const enableRAGEval = serverFeatureFlags().enableRAGEval;
13+
const params = await props.params;
1314

1415
if (!enableRAGEval) return notFound();
1516

1617
return (
1718
<Flexbox gap={24} height={'100%'} padding={24} style={{ paddingTop: 0 }}>
1819
<Tabs knowledgeBaseId={params.id} />
19-
<Container>{children}</Container>
20+
<Container>{props.children}</Container>
2021
</Flexbox>
2122
);
2223
};
+5-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { redirect } from 'next/navigation';
22

3-
interface Params {
4-
id: string;
5-
}
3+
type Props = { params: Promise<{ id: string }> };
64

7-
type Props = { params: Params };
5+
export default async (props: Props) => {
6+
const params = await props.params;
87

9-
export default ({ params }: Props) => redirect(`/repos/${params.id}/evals/dataset`);
8+
return redirect(`/repos/${params.id}/evals/dataset`);
9+
};

src/app/(main)/repos/[id]/evals/type.ts

-5
This file was deleted.

src/app/(main)/repos/[id]/layout.tsx

+1-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,4 @@ const Layout = ServerLayout<LayoutProps>({ Desktop, Mobile });
88

99
Layout.displayName = 'RepoLayout';
1010

11-
export default (props: LayoutProps) => {
12-
return <Layout {...props} />;
13-
};
11+
export default (props: LayoutProps) => <Layout {...props} />;

src/app/(main)/repos/[id]/page.tsx

+3-5
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@ import { redirect } from 'next/navigation';
33
import { KnowledgeBaseModel } from '@/database/server/models/knowledgeBase';
44
import FileManager from '@/features/FileManager';
55

6-
interface Params {
7-
id: string;
8-
}
6+
import { PageProps } from './type';
97

10-
type Props = { params: Params };
8+
export default async (props: PageProps) => {
9+
const params = await props.params;
1110

12-
export default async ({ params }: Props) => {
1311
const item = await KnowledgeBaseModel.findById(params.id);
1412

1513
if (!item) return redirect('/repos');

src/app/(main)/repos/[id]/type.ts

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export type PageProps = {
2+
params: Promise<{ id: string }> & {
3+
/**
4+
* @deprecated
5+
*/
6+
id: string;
7+
};
8+
};

src/types/discover.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import { ChatModelCard, ModelProviderCard } from '@/types/llm';
66
import { MetaData } from '@/types/meta';
77
import { LobeAgentSettings } from '@/types/session';
88

9-
export interface DiscoverPageProps {
10-
params: Promise<{ slug: string }>;
9+
export interface DiscoverPageProps<T = string> {
10+
params: Promise<{ slug: T }>;
1111
searchParams: Promise<{ hl?: Locales }>;
1212
}
1313

0 commit comments

Comments
 (0)