From d7d0001299b83f3ebcf80988d9143ee8c5520c4e Mon Sep 17 00:00:00 2001 From: Valerio Ageno Date: Wed, 29 May 2024 21:54:21 +0200 Subject: [PATCH] feat: add TuonoProps type --- examples/tuono/src/routes/__root.tsx | 2 +- examples/tuono/src/routes/index.rs | 6 ++---- examples/tuono/src/routes/index.tsx | 21 +++++++++++++++++-- packages/tuono/src/index.ts | 2 ++ .../src/router/hooks/useServerSideProps.tsx | 3 ++- packages/tuono/src/types.ts | 4 ++++ 6 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 packages/tuono/src/types.ts diff --git a/examples/tuono/src/routes/__root.tsx b/examples/tuono/src/routes/__root.tsx index 6ce55ca9..60bbbbba 100644 --- a/examples/tuono/src/routes/__root.tsx +++ b/examples/tuono/src/routes/__root.tsx @@ -8,7 +8,7 @@ export default function RootRoute({ children }: RootRouteProps): JSX.Element { return ( <>
{children}
diff --git a/examples/tuono/src/routes/index.rs b/examples/tuono/src/routes/index.rs index 393c37e9..fb2a041a 100644 --- a/examples/tuono/src/routes/index.rs +++ b/examples/tuono/src/routes/index.rs @@ -3,14 +3,12 @@ use tuono_lib::{Request, Response}; #[derive(Serialize)] struct MyResponse<'a> { - title: &'a str, - subtitle: &'a str, + description: &'a str, } #[tuono_lib::handler] fn get_server_side_props(req: &Request) -> Response { Response::Props(Box::new(MyResponse { - title: "title", - subtitle: "subtitle", + description: "This descriptions comes from the rust server", })) } diff --git a/examples/tuono/src/routes/index.tsx b/examples/tuono/src/routes/index.tsx index a971e75e..0fe72eb2 100644 --- a/examples/tuono/src/routes/index.tsx +++ b/examples/tuono/src/routes/index.tsx @@ -1,3 +1,20 @@ -export default function IndexPage(): JSX.Element { - return

Index Page

+import type { TuonoProps } from 'tuono' + +type IndexProps = { + description: string +} +export default function IndexPage({ + data, + isLoading, +}: TuonoProps): JSX.Element { + if (isLoading) { + return

Loading...

+ } + + return ( + <> +

Index Page

+

{data?.description}

+ + ) } diff --git a/packages/tuono/src/index.ts b/packages/tuono/src/index.ts index ce54666d..842eddcc 100644 --- a/packages/tuono/src/index.ts +++ b/packages/tuono/src/index.ts @@ -6,4 +6,6 @@ import { RouterProvider, } from './router' +export type { TuonoProps } from './types' + export { createRoute, createRootRoute, createRouter, Link, RouterProvider } diff --git a/packages/tuono/src/router/hooks/useServerSideProps.tsx b/packages/tuono/src/router/hooks/useServerSideProps.tsx index 486c1289..b221253d 100644 --- a/packages/tuono/src/router/hooks/useServerSideProps.tsx +++ b/packages/tuono/src/router/hooks/useServerSideProps.tsx @@ -45,7 +45,8 @@ export function useServerSideProps( ;(async (): Promise => { setIsLoading(true) try { - const res = await fetch(`/__tuono/data/${route.path}`) + const path = route.path === '/' ? '' : route.path + const res = await fetch(`/__tuono/data/${path}`) setData(await res.json()) } catch (error) { // Handle here error diff --git a/packages/tuono/src/types.ts b/packages/tuono/src/types.ts new file mode 100644 index 00000000..2d2b5b83 --- /dev/null +++ b/packages/tuono/src/types.ts @@ -0,0 +1,4 @@ +export interface TuonoProps { + data?: T + isLoading: boolean +}