|
| 1 | +"use client"; |
| 2 | + |
1 | 3 | import { AppList } from "@/components/AppList";
|
| 4 | +import { SessionProvider, useSession } from "next-auth/react"; |
2 | 5 | import { LoginButton } from "@/components/LoginButton";
|
| 6 | +import { useEffect, useState } from "react"; |
| 7 | +import { |
| 8 | + getAppsResponse, |
| 9 | + getCategoriesResponse, |
| 10 | + getDevicesResponse, |
| 11 | +} from "@/badgehub-api-client/generated/swagger/public/public"; |
3 | 12 | import { getAppData } from "../actions";
|
4 | 13 |
|
5 | 14 | export interface SearchParams {
|
6 | 15 | category: string;
|
7 | 16 | device: string;
|
8 | 17 | }
|
9 | 18 |
|
10 |
| -export default async function Listing({ |
| 19 | +export default function Listing({ |
11 | 20 | searchParams,
|
12 | 21 | }: {
|
13 | 22 | searchParams: Partial<SearchParams>;
|
14 | 23 | }) {
|
15 |
| - let data; |
16 |
| - try { |
17 |
| - // TODO add caching |
18 |
| - data = await getAppData(searchParams); |
19 |
| - } catch (e) { |
20 |
| - if (!(e instanceof Error)) { |
21 |
| - return <p>Caught object that wasn&t an error.</p>; |
| 24 | + const { data: session } = useSession(); |
| 25 | + const [data, setData] = useState< |
| 26 | + [getAppsResponse, getCategoriesResponse, getDevicesResponse] | null |
| 27 | + >(null); |
| 28 | + |
| 29 | + useEffect(() => { |
| 30 | + async function getData() { |
| 31 | + const token = (session as any)?.accessToken; |
| 32 | + const data = await getAppData(searchParams, token); |
| 33 | + setData(data); |
22 | 34 | }
|
23 |
| - return ( |
24 |
| - <> |
25 |
| - <p>Error while rendering</p> |
26 |
| - <code> |
27 |
| - <pre>{JSON.stringify(e.message)}</pre> |
28 |
| - </code> |
29 |
| - </> |
30 |
| - ); |
31 |
| - } |
| 35 | + |
| 36 | + getData(); |
| 37 | + }, [searchParams, session]); |
32 | 38 |
|
33 | 39 | return (
|
34 | 40 | <>
|
35 | 41 | <LoginButton />
|
36 |
| - <AppList data={data} /> |
| 42 | + {data ? <AppList data={data} /> : <p>Loading new data...</p>} |
37 | 43 | </>
|
38 | 44 | );
|
39 | 45 | }
|
0 commit comments